Skip to content

fix: sync locale resources and translations (1/3) - #6024

Merged
2dust merged 8 commits into
2dust:masterfrom
eliotcougar:codex/issue-6005-missing-translations
Aug 6, 2026
Merged

fix: sync locale resources and translations (1/3)#6024
2dust merged 8 commits into
2dust:masterfrom
eliotcougar:codex/issue-6005-missing-translations

Conversation

@eliotcougar

@eliotcougar eliotcougar commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Context

Partially fixes #6005.

This is part 1 of 3 extracted from the broader localization audit in #6021, following the request to split that PR into independently reviewable changes. This part is limited to synchronizing and correcting the Android resource files, completing their translations, and updating the few code references required by corrected resource identifiers or resource behavior.

What changed

Synchronize every maintained locale

  • Align English, Arabic, Bangla, Bakhtiari, Persian, Russian, Vietnamese, Simplified Chinese, and Traditional Chinese to the same 399 named resources.
  • Keep every resource at the same physical row, with the same type, order, formatting placeholders, and translatability metadata in all nine files.
  • Add resources that were missing from individual locales, including browser-dialer settings, insecure-protocol warnings, unknown-app text, subscription-worker text, automatic subscription-test settings, mode/root settings, request headers, routing fields, browser-dialer modes, and preset rulesets.
  • Use localized wording where a dependable translation is available; retain exact Xray and protocol terminology where translating it would change or obscure the meaning.
  • Expand localized string arrays to one item per line while preserving cross-locale row alignment.

Correct identifiers and references

  • Correct title_pref_mux_concurency to title_pref_mux_concurrency.
  • Correct title_pref_mux_xudp_concurency to title_pref_mux_xudp_concurrency.
  • Correct connection_runing_task_left to connection_running_task_left.
  • Correct toast_malformed_josn to toast_malformed_json and update its call site.
  • Remove the unused pre-Compose toast_fragment_not_available resource.
  • Restore the routing outbound-tag placeholder in Compose and substitute each locale's own translation of remarks while preserving the literal proxy, direct, and block tags.

Improve translation accuracy

  • Make routing terminology consistent with the corresponding Settings labels, including routeOnly behavior.
  • Correct awkward or overly literal wording in both English and translated resources.
  • Keep Xray's reject, allow, skip, leastLoad, mldsa65Verify, echConfigList, and other core terms semantically exact.
  • Correct translations whose previous wording described a different action or setting, including XUDP-over-QUIC handling, current-load selection, certificate verification, destination-domain detection, speed-notification behavior, and remarks regex filtering.
  • Fill the remaining Bakhtiari English fallbacks using established vocabulary while leaving strictly technical tokens intact.
  • Standardize URL and ALPN capitalization.

Exclude fixed technical values from translation

  • Mark 23 fixed acronyms, product names, syntax examples, and raw configuration keys as non-translatable, including TLS, ALPN, SNI, DNS, URL, Logcat, WebDAV, mldsa65Verify, echConfigList, and the raw routing keys.
  • Mark the selectable VPN interface address patterns non-translatable.
  • Leave genuine UI concepts such as path, fingerprint, public key, and explanatory text available to translators.

Why

Several locale files lacked identifiers that already existed in the English source, causing Android to fall back to another available resource. Other identifiers were misspelled differently between code and resources, and a few technical labels had drifted away from the Xray fields they describe. Keeping the files structurally identical makes missing resources and future drift visible during review, while the wording corrections ensure the localized UI still describes the code path that actually consumes each string.

Scope

This PR intentionally does not include the other two portions extracted from #6021:

  1. moving additional hardcoded user-facing and accessibility text into resources; or
  2. applying the selected app locale consistently in non-activity contexts and services.

Those changes will be submitted separately.

Validation

  • Refreshed against current upstream/master; this branch is zero commits behind its base.
  • Verified all nine strings.xml files parse and contain exactly 399 named resources.
  • Verified identical identifiers, resource types, order, physical rows, format placeholders, and translatable attributes across locales.
  • Verified every non-translatable value is identical across locales.
  • Verified no stale misspelled identifiers remain in code or resources.
  • Verified localized string arrays contain no wrapped or inline item fragments.
  • Verified git diff --check for the complete branch.
  • :app:processPlaystoreDebugResources passes on the final resources.
  • :app:compilePlaystoreDebugKotlin passes with the matching upstream AndroidLib AAR.

@eliotcougar
eliotcougar marked this pull request as ready for review August 5, 2026 13:39
@eliotcougar

Copy link
Copy Markdown
Contributor Author

I did multiple rounds of AI review runs and tried to fix as many awkward translations as possible.
The Bakhtiari is a low-resource dialect that may require a native speaker. AI consulted online resources and it has done everything it could.

@2dust

2dust commented Aug 6, 2026

Copy link
Copy Markdown
Owner

感谢
我们无法审核的语言,只能先这样提交

@2dust
2dust merged commit efb16e7 into 2dust:master Aug 6, 2026
1 check passed
@eliotcougar
eliotcougar deleted the codex/issue-6005-missing-translations branch August 7, 2026 10:04
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.

Sync translation file from values

2 participants