Skip to content

Conversation

@supra08
Copy link

@supra08 supra08 commented May 13, 2025

Important

Update Android and iOS build configurations, handle user activation events, and update translations and dependencies.

  • Android Build:
    • Update Java version to 17 and distribution to temurin in ci.yml.
    • Update targetSdkVersion and compileSdkVersion to 34 in android/build.gradle.
    • Add ndkVersion 24.0.8215888 for Apple Silicon compatibility.
    • Replace jcenter with dependency substitution for react-native-photo-view in android/build.gradle.
    • Add com.facebook.soloader:soloader with version 0.10.4 in android/app/build.gradle.
  • iOS Build:
    • Update RNSentry to 5.24.3 and Sentry/HybridSDK to 8.36.0 in Podfile.lock.
  • Dependencies:
    • Update @sentry/react-native to ~5.24.1 and react-native to zulip/react-native#b7b2f6c22 in package.json.
    • Update rollup to ^3.29.5 in package.json.
  • User Activation:
    • Handle realm_user update events for user activation and deactivation in eventToAction.js, realmReducer.js, usersReducer.js, and userGroupsReducer.js.
    • Add tests for user activation and deactivation in realmReducer-test.js and usersReducer-test.js.
  • Translations:
    • Update translations in messages_ar.json, messages_cs.json, messages_da.json, messages_de.json, messages_el.json, messages_fi.json, messages_pt.json, and messages_zh-Hans.json.
  • Miscellaneous:
    • Update checkout-keystore to use --recipient-file in tools/checkout-keystore.
    • Update ensure-coreutils.sh to handle Homebrew installations in tools/lib/ensure-coreutils.sh.
    • Add build_rn_packages function in tools/postinstall to build React Native packages.

This description was created by Ellipsis for 25ce8f1. You can customize this summary. It will automatically update as commits are pushed.

chrisbobbe and others added 30 commits June 10, 2024 19:02
Thanks as always to our kind volunteer translators.
…Error

This is our minimal support for zulip#5870 in this legacy codebase.
Supporting it properly with a client-side check of the setting is
more effort than we can spare here, because it requires implementing
the group-based permissions system.

Probably more error handling is called for in general (like for
network or server issues), but zulip#3881 ("Sending outbox messages is
fraught with issues") is complicated and it's probably best to leave
it be.

Fixes: zulip#5870
This matches the behavior of Zulip web.

The meaning of this value is that the image is either scaled
according to `contain`, or not scaled at all, whichever makes it
smaller.

In other words, we still scale down all the images we were scaling
down, but we stop scaling any images up, which tended to look a bit
silly.  If the user wants to see the image scaled up, they can
always tap to see it in the lightbox.

This case is about to become more common with the advent of
thumbnailing: when we get a message where the server hasn't yet
gotten to producing a thumbnail, we'll show a placeholder image.
That placeholder is a 30x30 SVG, which looks rather odder if
scaled up to 160px high.
This is a port of zulip/zulip#30477.  That PR isn't yet merged, but
it's been deployed on chat.zulip.org and I believe the styling is
unlikely to change.  (If it does get tweaked, we can always update.)

The placeholder `img` elements already come with a `src` pointing
to this same `loader-black.svg` file, but on the Zulip server.
So the effects of this change are:

 * The placeholder image is local instead of remote, which may
   improve the experience a bit on a slow connection.

 * In dark theme, we use an appropriately contrasting white spinner,
   instead of a black spinner that blends in with the background.

Fixes: zulip#5875
Thanks as always to our kind volunteer translators.
None of the strings are translated, so not time to offer these in
the UI yet. But perhaps soon!
The retired repo "jcenter" has been saying for years that it'll go
away, and that seems to have happened. Take this dependency at a
later version, which is available from Maven Central.

Fixes: zulip#5888
Taking this upgrade because we learned from dependabot that it fixes
a security issue:
  zulip#5887

The issue is in a dev-only indirect dependency, and even our
development tools *probably* don't trigger it.  But I can't
rule out that they might.

The yarn.lock diff from dependabot is a bit messy, though,
so here's me doing the same upgrade directly.

---

Because this is an indirect dependency, `yarn upgrade serve-static`
just does nothing.  (Seems like a bug / misfeature in Yarn.)

And I don't want to do a general `yarn upgrade` in this legacy
codebase right now -- that would balloon into a larger task.

So, here's a fun technique to make the upgrade in a surgical way:

  $ perl -i -0pe 's{^serve-static@.*?\n\K.*?^$}
                   {  version "1.16.2"\n}sm
                 ' yarn.lock
  $ yarn

That deletes the "version", "resolved", and other fields in the
lockfile's resolution of the `serve-static` package, replacing them
with just a "version" line pointing at the desired version.

Then rerunning `yarn` (aka `yarn install`) starts from that version
when filling back in the rest of the details.
As we said on the last one of these, fc2dab7:

  This setting is not to be confused with the targetSdkVersion. The
  latter goes into the built manifest, and affects a wide range of
  behavior, so bumping it requires careful testing. This is used
  purely at build time, and should have no effect on runtime
  behavior.

This value needs to be at least as high as targetSdkVersion, and we
need to bump that to 34 soon (zulip#5877). So, do this to prepare for
that.

The build warnings change slightly, but the new warnings all seem
acceptable.  Details and discussion starting at:
  zulip#5879 (comment)

Related: zulip#5877
This is a library we use in tools/generate-webview-js , for
producing the generated JS code to go in the message-list webview
based on our several source files for it.

This upgrade gets us a large number of changes that don't matter to us
because they have no effect on the output JS.  One of those is to fix
an XSS vulnerability, CVE-2024-47068:
  GHSA-gcx4-mw62-g8wm
which we learned about from Dependabot:
  zulip#5893

Even though the vulnerability doesn't affect us, it's good to upgrade
past the fix to avoid having to ever re-evaluate whether it affects us.
The fix is only in 3.x+, so go to the latest 3.x.

There's also one change affecting the output, which is that the
`__esModule` marker goes away.  Seems fine.  That happened in 3.0.0:
  https://github.com/rollup/rollup/blob/master/CHANGELOG.md#300
With the upcoming change to build RN from source, CI was failing
with out-of-memory errors. This should help with those.

Why twice as much memory? See 3677788, which bumped this value
from 1024 to 1280. From the commit message there:

  Compare facebook/react-native@a2a703247, which happened on the way
  to RN v0.68.  That one had the explanation

    > Updates maximum heap size for the gradle build to account for
    > building RN from source when new architecture is enabled.

  which doesn't apply as we aren't yet adopting RN's New
  Architecture. But perhaps if we did, we'd need to increase the
  heap size even more: that commit takes it to 2 GiB.

We're not adopting RN's New Architecture, and we don't plan to in
this legacy codebase. But we will be building RN from source, so
this seems like a good value to try.
This gets us zulip/react-native@5c36f102f and its fixup commit
zulip/react-native@b7b2f6c22 (on the `0.68.7-zulip` branch), to fix
a build failure with `targetSdkVersion = 34` without having to
upgrade to RN v0.73. (The build failure is in debug builds only, but
we still need to make those to develop fixes in this legacy project
as needed.)

Thanks to Greg for investigating the build failure:
  zulip#5877 (comment)

Since (as part of working on this) the `0.68.7-zulip` branch also
includes the things that were in the patch-package patch, that patch
becomes redundant and we delete it here.

Done by digesting the history of RN's doc on building RN from
source:
  facebook/react-native-website@22da0cc63
and making some simplifications.

The line `ndkVersion = 24…` sets a variable that ReactAndroid reads,
to control the NDK version it builds with. It would otherwise build
with NDK 21, which is old and chosen automatically based on
ReactAndroid's targetSdkVersion of 31. We need it to be at least 24
for Apple Silicon support.
This change will be required in order to upload new releases to the
Play Store, effective 2024-10-31, which includes the extension we
requested.

This change causes Android 14 and later to apply to our app a number
of behavior changes introduced in that version, documented here:
  https://developer.android.com/about/versions/14/behavior-changes-14

Fixes: zulip#5877
Thanks as always to our kind volunteer translators.
These are all still showing 0% translated in Transifex, so it's not
yet time to offer them in the UI. Perhaps soon!
Transifex is showing mobile.json as 6.15% translated, which is above
our threshold of 5% for offering a language in the UI. Thanks as
always to our kind volunteer translators!
chrisbobbe and others added 27 commits September 30, 2024 14:07
The Sequoia CLI's changelog doesn't seem to mention these changes:
  https://gitlab.com/sequoia-pgp/sequoia-sq/-/blob/b4158f40dea64655cf7357d3c8f220e8bd1708d9/NEWS

The `--recipient-file` rename, anyway, looks like it happened here:
  https://gitlab.com/sequoia-pgp/sequoia/-/commit/db90178d5b61e3310f979fdaefc66610adf0d33e
  https://gitlab.com/sequoia-pgp/sequoia/-/issues/933

Shrug; these changes are easy enough to adapt to.

```
$ sq version
sq 0.38.0
using sequoia-openpgp 1.21.2
with cryptographic backend Nettle 3.10 (Cv448: true, OCB: true)
```
…egen

We recently started building RN from Git, in 0509575. This caused
an iOS build failure in the shell script '[CP-User] Generate Specs':

  Error: Cannot find module '/Users/chrisbobbe/dev/zulip-mobile/node_modules/react-native/packages/react-native-codegen/lib/cli/combine/combine-js-to-schema-cli.js'

Note the last part:
  [...]/lib/cli/combine/combine-js-to-schema-cli.js'

There is a [...]/src/[...] version of that file, but the /lib/ one
is created by `yarn build`, and when I ran that, the app build
succeeded.
This updates rn-fetch-blob to a version with one cherry-picked commit
atop the v0.11.2 we were previously using:
  zulip/rn-fetch-blob@e17b2a51c

The rn-fetch-blob package itself is no longer maintained:
  joltup/rn-fetch-blob#863

There's a fork that is maintained, `react-native-blob-util`:
  https://npmjs.com/package/react-native-blob-util

That fork addressed the Android 14 requirement to set an
explicit RECEIVER_EXPORTED flag (zulip#5903), merging a fix:
  RonRadtke/react-native-blob-util#303
  RonRadtke/react-native-blob-util#306

Our fix is cherry-picked from that one.

(If this app weren't a legacy codebase in maintenance mode, we'd take
the time to upgrade this dependency more generally, probably switching
to the react-native-blob-util fork.  As is, we'll skip that and use
the time to focus on completing the new Flutter app.)

Fixes: zulip#5903
The `is_active` property of realm_user/update events is new in Zulip
Server 8.0 (FL 222):
  https://zulip.com/api/get-events#realm_user-update

Start handling it by moving the user between `state.users` (where we
keep active users) and `state.realm.nonActiveUsers`.

For servers 10.0+ (starting at FL 303), the client has more to do to
handle user deactivation; that's zulip#5899 "Remove deactivated users
from groups". Best to do this more basic thing first.
As newly required to support Zulip Server 10+; see zulip#5899.

Fixes: zulip#5899
Thanks as always to our kind volunteer translators.
JDK 11 is quite old now.

While here, update all the details of this stanza to match what we
do in the zulip-flutter CI.
The `user_id` field has been present in reaction events since Zulip
3.0 (FL 2), which is below our kMinAllowedServerVersion (4.0). See
API docs:
  https://zulip.com/api/get-events#reaction-add
  https://zulip.com/api/get-events#reaction-remove

Fixes: zulip#5911
Thanks as always to our kind volunteer translators.
This is still showing 0% translated in Transifex, so it's not yet
time to offer it in the UI. Perhaps soon!
…e 16

See issue:
  getsentry/sentry-react-native#3883

Reportedly, the first working version is 5.24.1. So, use `~5.24.1`
for the range, pulling in 5.24.3.

With ^5.9.2, I was getting 5.36.0, which came with an Android build
failure that looked like zulip#5345.
See 8552afc for the previous one of these.

The Zulip Server 5 release went out over 3 years ago, so the 4.x
releases are all long out of our announced 18-month compatibility
window:
  https://blog.zulip.com/2022/03/29/zulip-5-0-released/
  https://zulip.readthedocs.io/en/latest/overview/release-lifecycle.html#client-apps

So we can cheerfully refuse to connect to 4.x releases; our "Server
not supported" nag banner has been asking server admins on those
versions to upgrade since 8552afc, which the changelog says went
out in v27.216, dated 2023-10-10.

The last 6.x release, 6.2, went out on 2023-05-19. That's also
outside the 18-month window, so it's time to start showing the nag
banner on 5.x and 6.x.

The last 7.x release, 7.5, went out on 2023-11-16, which is a month
and a bit shy of 18 months, so it's not yet time to show the banner
for versions 7.x.
Thanks as always to our kind volunteer translators.
This name got cleaned up, hooray.  (A couple of years ago --
zulip/zulip@43b4f1057 -- but we use these instructions only
occasionally and update them less often than that.)
In particular PUSH_NOTIFICATION_BOUNCER_URL was replaced by
ZULIP_SERVICES_URL last year, in zulip/zulip@4a9314943.

I believe the need for a distinct EXTERNAL_HOST value when
registering the server with the bouncer came about as part of the
same work around the same time, though it may have been in a
different commit.

Also at some point the spelling of the flag got fixed to use
hyphens as in the normal CLI convention.

Chat thread, where I found the existing instructions no longer
worked and then we debugged:
  https://chat.zulip.org/#narrow/channel/243-mobile-team/topic/notifications.20from.20dev.20server/near/2159857

With these changes, the instructions work for me.  (I didn't wipe my
dev server to verify it works from there, but I did reset all the
state I believe is relevant: removed my old custom_dev_settings.py
and the two `zulip_org_*` items from dev-secrets.conf .)
Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Changes requested ❌

Reviewed everything up to 25ce8f1 in 5 minutes and 31 seconds. Click for details.
  • Reviewed 12040 lines of code in 111 files
  • Skipped 4 files when reviewing.
  • Skipped posting 87 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. tools/checkout-keystore:60
  • Draft comment:
    Good change: using '--recipient-file' (instead of '--recipient-key') appears intentional with sq's updated CLI. The stderr filtering with filter_sq_stderr is a neat approach. Consider adding explicit error checking if decryption fails.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% The script already has error handling via 'set -e' which will catch decryption failures. The comment is suggesting additional explicit error handling, but doesn't specify what that would look like or why it would be better than the current approach. The comment also acknowledges the CLI change is intentional, which isn't useful feedback. Maybe there are specific error conditions that set -e doesn't catch well, or maybe explicit error messages would be more user-friendly than the default ones. While better error messages could be nice, the comment doesn't make a strong case for why the current error handling is insufficient. The existing set -e behavior provides a reasonable safety net. Delete this comment. It acknowledges an intentional change and makes a vague suggestion about error handling without clear justification, despite existing error handling being present.
2. tools/lib/ensure-coreutils.sh:75
  • Draft comment:
    The script robustly checks for GNU coreutils and attempts to adjust PATH via Homebrew. Consider clarifying the fallback behavior when brew is not found; the current error message is helpful though.
  • Reason this comment was not posted:
    Confidence changes required: 50% <= threshold 50% None
3. tools/postinstall:12
  • Draft comment:
    The postinstall script cleanly sequences patching, building RN packages, pod installation, and jetify. Ensure these steps are idempotent since re-running postinstall may occur in some environments.
  • Reason this comment was not posted:
    Confidence changes required: 50% <= threshold 50% None
4. docs/howto/testing.md:18
  • Draft comment:
    Typo: Consider changing 'Javascript' to 'JavaScript' for consistency and correct spelling.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
5. docs/howto/windows-wsl.md:279
  • Draft comment:
    Typo: The Windows filesystem path is written as 'C\Program Files'. It appears the colon is missing and should be 'C:\Program Files'. Please update this for clarity.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
6. docs/howto/windows-wsl.md:317
  • Draft comment:
    Typo: The example command for chaining environment variables appears to be missing a closing quote. It currently reads: set WSLENV "JAVA_HOME/p:ANDROID_HOME/p and should include a closing quote at the end (e.g., set WSLENV "JAVA_HOME/p:ANDROID_HOME/p").
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
7. package.json:13
  • Draft comment:
    It seems there is a typographical error in the build:ios script where 'xcodebuild -scheme ZulipMobile archivexcodebuild -scheme ZulipMobile archive' is used. Likely, 'archivexcodebuild' was meant to be split (perhaps 'archive' and 'xcodebuild') or corrected to the proper command. Please fix the command to ensure it runs correctly.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
8. src/api/apiErrors.js:43
  • Draft comment:
    Typographical error: There's no space between 'from' and 'Error' in the sentence "(which the type inherits fromError)". Please add a space so it reads "(which the type inherits from Error)".
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
9. src/api/eventTypes.js:263
  • Draft comment:
    Typo: The comment at line 263 says 'ugprade; handling', which should be corrected to 'upgrade; handling' to avoid confusion.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
10. src/user-groups/__tests__/userGroupsReducer-test.js:61
  • Draft comment:
    Typo in test description: In the 'EVENT_USER_GROUP_REMOVE' tests, the second test's description reads 'adds a user group to the state', though it tests removal. Consider changing it to 'removes a user group from the state' for clarity.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
11. static/translations/messages_ar.json:3
  • Draft comment:
    Typographical note: In the message at line 3, consider using the Arabic comma (،) instead of the English comma (,).
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% This comment is purely informative and does not provide a specific code suggestion or highlight a potential issue. It focuses on a typographical preference rather than a functional or logical aspect of the code.
12. static/translations/messages_ar.json:178
  • Draft comment:
    Typographical note: In the messages at line 178 (and similarly line 179), "حاول مرة أخري." appears. The word "أخري" should be corrected to "أخرى" for proper Arabic spelling.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
13. static/translations/messages_be.json:27
  • Draft comment:
    Typo: In the translation for "Cannot open link", "Немагчама адкрыть спасылку" should be corrected to "Немагчыма адкрыць спасылку".
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
14. static/translations/messages_be.json:31
  • Draft comment:
    Lexicographical error: The translation for "Those messages could not be found." uses the singular form "Паведамленне не знойдзена". It should likely be plural (e.g. "Паведамленні не знойдзены") to match the English meaning.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
15. static/translations/messages_be.json:85
  • Draft comment:
    Typographical error: In the translation for the message about new subscribers, "новыя удзельнікаі" appears to be misspelled. It should be corrected to "новыя ўдзельнікі".
  • Reason this comment was not posted:
    Comment was on unchanged code.
16. static/translations/messages_be.json:436
  • Draft comment:
    Placeholder inconsistency: In the "Uploading {fileName}..." string, the placeholder is translated to {імяФайла} instead of keeping {fileName}. The placeholder names should remain consistent.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
17. static/translations/messages_be.json:449
  • Draft comment:
    Typographical error: In the translation for "A stream with this name already exists.", the phrase "такой назвназвай" appears to contain a duplicated segment. It should be corrected to something like "такой назвай".
  • Reason this comment was not posted:
    Comment was on unchanged code.
18. static/translations/messages_ca.json:109
  • Draft comment:
    There is a trailing whitespace at the end of the translation in line 109. Please remove the extra space after 'pujada.' to maintain consistency.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
19. static/translations/messages_ca.json:288
  • Draft comment:
    The translation for 'Forgot password?' in line 288 reads "Heu oblidat al contrasenya?". Since 'contrasenya' is feminine, it should use the article 'la' instead of 'al' (which is a contraction for masculine nouns). Please update it to "Heu oblidat la contrasenya?".
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
20. static/translations/messages_cs.json:253
  • Draft comment:
    Lexicographical note: The translation for 'Portuguese (Portugal)' appears as 'Portugalština ()', which seems incomplete. Please review and update the text so that the parentheses contain the correct regional information or remove them if not needed.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
21. static/translations/messages_cy.json:112
  • Draft comment:
    The translation for 'Open settings' contains a trailing space ('Agor gosodiadau '). Please remove the unnecessary space to maintain consistency.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
22. static/translations/messages_cy.json:350
  • Draft comment:
    The translation for 'Failed to unstar message' has a trailing space ('Wedi methu dadserennu neges '). Please remove the extra space to ensure consistency.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
23. static/translations/messages_cy.json:357
  • Draft comment:
    The translation for 'Failed to unmute stream' includes an unnecessary trailing space ('Wedi methu dadmudo ffrwd '). Removing the extra space will help maintain consistency.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
24. static/translations/messages_da.json:12
  • Draft comment:
    It appears that the translation for "[Quoting…]" is "[Citérer…]". In Danish, the correct form might be "[Citér…]". Please check if this is a typo.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
25. static/translations/messages_da.json:113
  • Draft comment:
    The translation for "Camera unavailable." is given as "Kamara ikke tilgængeligt". It seems like 'Kamara' is a typo and should be corrected to 'Kamera'.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
26. static/translations/messages_de.json:178
  • Draft comment:
    Typographical error: In the translation for 'Wrong email or password. Try again.', 'falschers Passwort' should likely be corrected to 'falsches Passwort'.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
27. static/translations/messages_de.json:317
  • Draft comment:
    Typographical error: In the translation for 'Notifications when online', 'Benachrichtungen wenn Online' should be corrected to 'Benachrichtigungen wenn Online'.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
28. static/translations/messages_de.json:283
  • Draft comment:
    Typographical concern: In the translation for "{username} will not be notified unless you subscribe them to this channel.", the phrase "du abonnierst sie:ihn für diesen Kanal" seems inconsistent. Consider using either 'ihn' or a gender-neutral alternative for clarity.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
29. static/translations/messages_eo.json:14
  • Draft comment:
    There's an extra leading space in the translation value for "Quote-and-reply failed" (line 14). Please remove the extra space.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
30. static/translations/messages_eo.json:20
  • Draft comment:
    There's an extra leading space in the translation value for "Notify stream" (line 20). Please remove the extra space.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
31. static/translations/messages_es.json:125
  • Draft comment:
    ‘vácio’ should be corrected to ‘vacío’ to match the proper Spanish spelling.
  • Reason this comment was not posted:
    Comment was on unchanged code.
32. static/translations/messages_es.json:271
  • Draft comment:
    ‘habiliatar’ appears to be a typo; it should be ‘habilitar’.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
33. static/translations/messages_fa.json:178
  • Draft comment:
    In the translations for the error messages at lines 178 and 179, there's an extraneous space before the period (e.g., "اشتباه است . دوباره تلاش کنید."). Please remove the extra space so that punctuation is properly attached to the sentence.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
34. static/translations/messages_fi.json:37
  • Draft comment:
    The word 'Notficiation' in the phrase "Notficiation Botin viesteille" appears to be misspelled. It should be 'Notification Botin' to correctly reflect the English term.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
35. static/translations/messages_fi.json:56
  • Draft comment:
    The translation at line 56 uses 'åkanavia' which seems to be a typographical error. Likely it should be 'kanavia' (without the extra 'å') to mean 'streams'.
  • Reason this comment was not posted:
    Comment was on unchanged code.
36. static/translations/messages_fi.json:280
  • Draft comment:
    The translation for 'Jot down something' appears as 'Sutaise jotain'. 'Sutaise' doesn't seem to be a standard Finnish term. Consider revising it to a more appropriate phrase such as 'Kirjoita jotain' or 'Merkitse ylös jotain'.
  • Reason this comment was not posted:
    Comment was on unchanged code.
37. static/translations/messages_fr.json:205
  • Draft comment:
    The translation for "Unmute channel" remains as "Unmute channel". Please update it to French (e.g., "Ne plus rendre le canal muet").
  • Reason this comment was not posted:
    Comment was on unchanged code.
38. static/translations/messages_fr.json:372
  • Draft comment:
    The key "Create new channel" remains as "Create new channel". It should be translated into French (e.g., "Créer un nouveau canal").
  • Reason this comment was not posted:
    Comment looked like it was already resolved.
39. static/translations/messages_fr.json:375
  • Draft comment:
    The string "You are not subscribed to this channel" remains untranslated. Please provide a French version (e.g., "Vous n'êtes pas abonné à ce canal").
  • Reason this comment was not posted:
    Comment was on unchanged code.
40. static/translations/messages_fr.json:382
  • Draft comment:
    The key "Edit channel" remains as "Edit channel". Please translate it to French (e.g., "Modifier le canal").
  • Reason this comment was not posted:
    Comment was on unchanged code.
41. static/translations/messages_fr.json:448
  • Draft comment:
    The string "Failed to copy channel link" is not translated. Please update it to French (e.g., "Échec de la copie du lien du canal").
  • Reason this comment was not posted:
    Comment was on unchanged code.
42. static/translations/messages_fr.json:21
  • Draft comment:
    The key "Notify channel" remains as "Notify channel". It should be translated into French (e.g., "Notifier le canal").
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
43. static/translations/messages_fr.json:411
  • Draft comment:
    The message "Only organization admins are allowed to post to this channel." remains untranslated. Please provide a French translation (e.g., "Seuls les administrateurs de l'organisation sont autorisés à poster sur ce canal.").
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
44. static/translations/messages_hi.json:161
  • Draft comment:
    Typo: The translation for "Log out" is given as "लोग आउट". It should probably be "लॉग आउट" for consistency.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
45. static/translations/messages_hi.json:182
  • Draft comment:
    Typo: The translation for "Enter a password" is written as "पासवर्ड ङालें". The character 'ङ' appears to be incorrect; it should be "पासवर्ड डालें".
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
46. static/translations/messages_hi.json:420
  • Draft comment:
    Typo: The translation for "Message sent" is written as "संदॆष भॆज दिया". Consider correcting it to "संदेश भेज दिया" to fix the diacritical errors.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
47. static/translations/messages_hi.json:164
  • Draft comment:
    Formatting: The translation for "All streams" ends with an extra trailing space ("सभी शाखाये "). Removing the extra space would improve consistency.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
48. static/translations/messages_hi.json:156
  • Draft comment:
    Typo: The translation for "Switch account" is written as "खाता बदलॆं". The vowel sign seems off; consider using "खाता बदलें".
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
49. static/translations/messages_hi.json:172
  • Draft comment:
    Typo: In the translation for "Sign in with {method}", "{तरीकॆ} के साथ साइन इन करें" uses an unusual vowel mark on 'तरीके'. It should likely be "{तरीके} के साथ साइन इन करें".
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
50. static/translations/messages_hu.json:84
  • Draft comment:
    Typo detected: The term 'Folyamtag' in the translation at line 84 seems incorrect. It doesn't match the intended meaning (likely related to 'invited by a subscriber'). Consider revising it to the correct term.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
51. static/translations/messages_hu.json:84
  • Draft comment:
    Typographical error: The word 'felhasznlálók' appears to be misspelled; the correct spelling should be 'felhasználók'. This error is seen in the translations on lines 84 and 86. Please fix it for consistency.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
52. static/translations/messages_hu.json:96
  • Draft comment:
    Typographical error: In the translation for 'Dismiss' on line 96, 'Hanyaglold' appears to be a typo. Consider using a more appropriate term (e.g., 'Elutasít' or another standard term) for clarity.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
53. static/translations/messages_hu.json:434
  • Draft comment:
    Typographical error: The phrase 'emez {email}' on line 434 appears to have a typo. It likely should read 'ezt {email}'. Please correct this error.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
54. static/translations/messages_it.json:125
  • Draft comment:
    Typo: In the translation for 'Message is empty', the Italian text reads 'I messaggio è vuoto.' It should be 'Il messaggio è vuoto.'
  • Reason this comment was not posted:
    Comment was on unchanged code.
55. static/translations/messages_it.json:121
  • Draft comment:
    The key 'Please specify a channel.' has not been translated into Italian. It should be replaced with an appropriate Italian translation such as 'Per favore specifica un canale.'
  • Reason this comment was not posted:
    Comment was on unchanged code.
56. static/translations/messages_it.json:327
  • Draft comment:
    The string 'Mark channel as read' remains in English. It should be translated to Italian, for instance 'Segna il canale come letto'.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
57. static/translations/messages_it.json:310
  • Draft comment:
    The message 'Notifications for this account may not arrive. Please refer to the troubleshooting guide or contact {supportEmail} with the details below.' is still in English. Please provide an Italian translation.
  • Reason this comment was not posted:
    Comment was on unchanged code.
58. static/translations/messages_it.json:356
  • Draft comment:
    The key 'Failed to mute channel' remains untranslated. It should be rendered in Italian, e.g., 'Impossibile mettere il canale in mute' or a similar appropriate translation.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
59. static/translations/messages_it.json:358
  • Draft comment:
    The string 'Failed to unmute channel' remains in English. Please translate it to Italian (for example, 'Impossibile togliere il mute al canale').
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
60. static/translations/messages_it.json:436
  • Draft comment:
    The message 'Uploading {fileName}...' is still in English. It should be translated to Italian, e.g., 'Caricamento di {fileName}...' or similar.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
61. static/translations/messages_it.json:437
  • Draft comment:
    The error message 'Failed to upload file: {fileName}' is not translated. Please provide an Italian translation.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
62. static/translations/messages_it.json:446
  • Draft comment:
    The key 'Copy link to channel' remains in English. It should be translated to Italian, for example 'Copia il link al canale'.
  • Reason this comment was not posted:
    Comment was on unchanged code.
63. static/translations/messages_ja.json:273
  • Draft comment:
    Typo detected: The Japanese phrase '通知をオフにできませんした' appears to have a mistake. It likely should be '通知をオフにできませんでした'.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
64. static/translations/messages_ja.json:436
  • Draft comment:
    Placeholder inconsistency detected: In the source string, the variable is '{fileName}' while in the Japanese translation it appears as '{filename}'. Ensure that the placeholder matches exactly to avoid runtime substitution issues.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
65. static/translations/messages_ko.json:324
  • Draft comment:
    Typo: The translation for "Legal" has a trailing space ("허용하는 "). It might be unintentional and should be corrected to remove the extra space.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
66. static/translations/messages_ko.json:417
  • Draft comment:
    Typo: In the translation for "Please choose recipients to share with.", the phrase "선택 하세요" contains an unnecessary space. It would read better as "선택하세요".
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
67. static/translations/messages_ko.json:426
  • Draft comment:
    Typo: In the translation for "In a meeting", the Korean text "회의 안 에서" has an extra space. Consider using "회의 안에서" or an alternative phrasing to ensure proper spacing.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
68. static/translations/messages_mn.json:193
  • Draft comment:
    The translation for 'Resolve topic' ("Шийдэх ") contains a trailing whitespace that should be removed for consistency.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
69. static/translations/messages_mn.json:443
  • Draft comment:
    The translation for 'Copy link to topic' appears incomplete ("Сэдвийн "). It seems that the intended text is missing. Please verify and supply the full translation.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
70. static/translations/messages_mn.json:421
  • Draft comment:
    In the translation for 'Couldn’t load information about {fullName}', the word "Мэдээлэллийг" appears to be a typo. Consider verifying if it should be "Мэдээллийг" (removing the extra 'эл').
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
71. static/translations/messages_nl.json:47
  • Draft comment:
    Typographical error: Please correct 'JIj' to 'Jij' for proper spelling.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
72. static/translations/messages_nl.json:337
  • Draft comment:
    Typographical error: Extra space detected in the translation for 'Star message'. Please change 'Bericht ster geven' to 'Bericht ster geven'.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
73. static/translations/messages_nl.json:340
  • Draft comment:
    Typographical error: The translation 'Bericht gekopieërd' appears to have an extra or mis-placed diacritic. Please verify and correct the spelling to the proper form (possibly 'Bericht gekopieerd').
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
74. static/translations/messages_pt.json:25
  • Draft comment:
    Typo: 'Não foi possivel abrir imagem' should be 'Não foi possível abrir imagem' (add the accent on 'possível').
  • Reason this comment was not posted:
    Comment was on unchanged code.
75. static/translations/messages_pt.json:27
  • Draft comment:
    Typo: 'Não foi possível abrie o link' should be 'Não foi possível abrir o link'.
  • Reason this comment was not posted:
    Comment was on unchanged code.
76. static/translations/messages_pt.json:37
  • Draft comment:
    Typo: 'Confirmações de leitura não estão disponivel para mensagens do Bot de Notificações.' should be 'Confirmações de leitura não estão disponíveis para mensagens do Bot de Notificações.' (add accent and pluralize).
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
77. static/translations/messages_pt.json:38
  • Draft comment:
    Typo: 'Não foi possivel carregar dados.' should be 'Não foi possível carregar dados.'
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
78. static/translations/messages_ru.json:134
  • Draft comment:
    Minor typographical issue: The translation for "Failed to connect to server: {realm}" at line 134 has a trailing whitespace after {realm}. Consider removing the extra space.
  • Reason this comment was not posted:
    Comment was on unchanged code.
79. static/translations/messages_ru.json:435
  • Draft comment:
    Minor typographical issue: The translation for "Oops! Something went wrong." at line 435 has a trailing whitespace after the sentence. Consider removing the extra space.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
80. static/translations/messages_sv.json:368
  • Draft comment:
    Typographical error: 'Vanliga anävndare' appears to have a spelling mistake. Consider changing it to 'Vanliga användare' for correct Swedish spelling.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
81. static/translations/messages_sv.json:384
  • Draft comment:
    Minor formatting issue: The translation for 'Edit stream' is 'Redigera strömmen ' with a trailing whitespace. Please remove the extra space to maintain consistency.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
82. static/translations/messages_tr.json:110
  • Draft comment:
    Typographical error: In the translation for uploading an image (line 110), the text currently reads "Zulip'e e ek izinler verin.". It should be "Zulip'e ek izinler verin." (remove the extra 'e').
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
83. static/translations/messages_tr.json:421
  • Draft comment:
    Typographical issue: In the translation for "Couldn’t load information about {fullName}" (line 421), the word 'bilgi' is repeated. It currently reads "{fullName} ile ilgili bilgi bilgi yüklenemedi". Please remove the duplicate so that it reads "{fullName} ile ilgili bilgi yüklenemedi".
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
84. static/translations/messages_tr.json:434
  • Draft comment:
    Typographical error: In the translation for the message regarding forgetting an account (line 434), the placeholder is written as "{realmURl}" instead of the correct "{realmUrl}". Please update it accordingly.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
85. static/translations/messages_uk.json:225
  • Draft comment:
    Typographical error: The translation for "Bulgarian" is written as "Болгарстка". It should probably be "Болгарська".
  • Reason this comment was not posted:
    Comment was on unchanged code.
86. static/translations/messages_zh_TW.json:366
  • Draft comment:
    The translation for the key 'hide' contains an unexpected escape sequence (\b隱藏). It seems like the '\b' was added by mistake. Please remove it to keep the text clean.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
87. static/translations/messages_zh_TW.json:343
  • Draft comment:
    The translation for 'Failed to add reaction' is written as '新增反正失敗', where '反正' appears to be a typo. It should likely be '反應' instead. Please correct the typo.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.

Workflow ID: wflow_RjEFVtYB4eYUOBdM

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

"Please specify a topic.": "يرجى تحديد الموضوع.",
"Please specify a stream.": "الرجاء تحديد غرفة.",
"Please specify a channel.": "Please specify a channel.",
"Please specify a channel.": "من فضل حدد قناة",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typographical note: The translation for "Please specify a channel." at line 121 uses "من فضل حدد قناة". For consistency and clarity, consider changing it to "من فضلك حدد قناة".

Suggested change
"Please specify a channel.": "من فضل حدد قناة",
"Please specify a channel.": "من فضلك حدد قناة",

"Failed to copy topic link": "Не атрымалася скапіраваць спасылку на тэму",
"Copy link to stream": "Скапіраваць спасылку ў плынь.",
"Copy link to channel": "Copy link to channel",
"Copy link to channel": "Спасылка на канал скапіравана",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typographical inconsistency: The translation for "Copy link to channel" is rendered as "Спасылка на канал скапіравана" which appears to be a confirmation message. To match the command style (like "Скапіраваць спасылку на тэму" for topics), it should likely be "Скапіраваць спасылку на канал".

Suggested change
"Copy link to channel": "Спасылка на канал скапіравана",
"Copy link to channel": "Скапіраваць спасылку на канал",

"Invisible mode": "Invisible mode",
"{num_of_people, plural,\n one {This message has been <z-link>read</z-link> by {num_of_people} person:}\n other {This message has been <z-link>read</z-link> by {num_of_people} people:}}": "{num_of_people, plural,\n one {This message has been <z-link>read</z-link> by {num_of_people} person:} other {This message has been <z-link>read</z-link> by {num_of_people} people:}}",
"View read receipts": "View read receipts",
"{num_of_people, plural,\n one {This message has been <z-link>read</z-link> by {num_of_people} person:}\n other {This message has been <z-link>read</z-link> by {num_of_people} people:}}": "{num_of_people, plural,\n one {Това съобщение е <z-link>прочетено</z-link> от {num_of_people} човек:} other {Това съобщение е <z-link>прочетено</z-link> от {num_of_people} човекa:}}",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typographical error: In the plural translation string, 'човекa:' should likely be corrected to 'човека:' for proper Bulgarian pluralization.

Suggested change
"{num_of_people, plural,\n one {This message has been <z-link>read</z-link> by {num_of_people} person:}\n other {This message has been <z-link>read</z-link> by {num_of_people} people:}}": "{num_of_people, plural,\n one {Това съобщение е <z-link>прочетено</z-link> от {num_of_people} човек:} other {Това съобщение е <z-link>прочетено</z-link> от {num_of_people} човекa:}}",
"{num_of_people, plural,\n one {This message has been <z-link>read</z-link> by {num_of_people} person:}\n other {This message has been <z-link>read</z-link> by {num_of_people} people:}}": "{num_of_people, plural,\n one {Това съобщение е <z-link>прочетено</z-link> от {num_of_people} човек:} other {Това съобщение е <z-link>прочетено</z-link> от {num_of_people} човека:}}",

"Resolve topic": "Resolve topic",
"Failed to resolve topic": "Failed to resolve topic",
"Unresolve topic": "Unresolve topic",
"Unresolve topic": "Маркирай темата като неразрешена:",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The translation for 'Unresolve topic' includes an extraneous colon at the end ('Маркирай темата като неразрешена:'). Consider removing the trailing colon for consistency with similar entries.

Suggested change
"Unresolve topic": "Маркирай темата като неразрешена:",
"Unresolve topic": "Маркирай темата като неразрешена",

"Text copied": "Text copied",
"Copied": "Zkopírováno",
"Copy invalid link": "Kopírovat neplatný odkaz",
"This link appears to be invalid. Do you want to copy it anyway?\n\n{text}": "Tento odkaz se zdá být neplatný. Ppřesto ho chcete zkopírovat??\n\n{text}",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typographical error: The word Ppřesto should be corrected to Přesto, and remove the extra ? so that the sentence reads naturally.

Suggested change
"This link appears to be invalid. Do you want to copy it anyway?\n\n{text}": "Tento odkaz se zdá být neplatný. Ppřesto ho chcete zkopírovat??\n\n{text}",
"This link appears to be invalid. Do you want to copy it anyway?\n\n{text}": "Tento odkaz se zdá být neplatný. Přesto ho chcete zkopírovat?\n\n{text}",

"Private, shared history": "Приватна, спільна історія",
"Must be invited by a subscriber; new subscribers can view complete message history; hidden from non-administrator users": "Має бути запрошений підписником; нові підписники можуть переглядати повну історію повідомлень; прихований від користувачів, які не є адміністраторами",
"Private, protected history": "Приватна, захищена історія",
"Must be invited by a subscriber; new subscribers can only see messages sent after they join; hidden from non-administrator users": "Повинен бути запрошений підписником; нові підписникии можуть бачити повідомлення, відправлені тільки після приєднання; прихований від користувачів без прав адміністратора",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typographical error: In the translation for the phrase regarding new subscribers, нові підписникии contains an extra 'и'. It should be corrected to нові підписники.

Suggested change
"Must be invited by a subscriber; new subscribers can only see messages sent after they join; hidden from non-administrator users": "Повинен бути запрошений підписником; нові підписникии можуть бачити повідомлення, відправлені тільки після приєднання; прихований від користувачів без прав адміністратора",
"Must be invited by a subscriber; new subscribers can only see messages sent after they join; hidden from non-administrator users": "Повинен бути запрошений підписником; нові підписники можуть бачити повідомлення, відправлені тільки після приєднання; прихований від користувачів без прав адміністратора",

"Cannot subscribe to channel": "Неможливо підписатися на канал",
"Stream #{name} is private.": "Канал #{name} є приватним.",
"Channel #{name} is private.": "Канал #{name} є приватним.",
"See details": "Диви\\тися деталі",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typographical issue: The translation for "See details" appears as "Диви\тися деталі". The backslash looks accidental and it likely should read "Дивитися деталі".

Suggested change
"See details": "Диви\\тися деталі",
"See details": "Дивитися деталі",

"Uploading {fileName}...": "Завантаження {fileName}...",
"Failed to upload file: {fileName}": "Не вдалося завантажити файл: {fileName}",
"The server said the file is too large.": "Сервер сказав, що файл завеликий.",
"The server said:\n\n{errorMessage}": "Сервер сказав::\n\n{errorMessage}",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typographical error: In the translation for the error message, there is a double colon ("Сервер сказав::"). It should use a single colon: "Сервер сказав:".

Suggested change
"The server said:\n\n{errorMessage}": "Сервер сказав::\n\n{errorMessage}",
"The server said:\n\n{errorMessage}": "Сервер сказав:\n\n{errorMessage}",

"French": "người Pháp",
"Galician": "Galicia",
"German": "tiếng Đức",
"Greek": "Greek",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typographical error: The entry for 'Greek' is not translated and remains in English as 'Greek'. Consider providing the proper Vietnamese translation (e.g., 'người Hy Lạp') to maintain consistency with other language entries.

Suggested change
"Greek": "Greek",
"Greek": "người Hy Lạp",

"Direct messages": "私信",
"Starred": "标星消息",
"Combined feed": "综合信息",
"Direct messages": "Direct messages",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The value for the key "Direct messages" remains in English. Please translate it to Chinese (e.g., '私信' or another suitable translation) to maintain consistency with the rest of the localization.

Suggested change
"Direct messages": "Direct messages",
"Direct messages": "私信",

@dashwave
Copy link

dashwave bot commented May 13, 2025

Build Status ✅ Successful
Build Time 14m
📱 Emulation Link https://console.dashwave.io/emulator/18050/preview?device=emulator
Logs See Logs
Open in Workspace Dashwave Workspace

@dashwave
Copy link

dashwave bot commented May 13, 2025

Build Status ✅ Successful
Build Time
📱 Emulation Link Emulation Unavailable - See here for more details
Logs See Logs
Open in Workspace Dashwave Workspace

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants