chore(i18n): complete missing translations and fix translation bugs across all 26 locales - #2463
Merged
Merged
Conversation
- missing-detail LOCALE: export missing keys as {key: {en, description,
placeholders}} JSON, ready to hand to a translator
- fill LOCALE --translations-file: bulk-add/update many translations in
one pass instead of one `set` call per key
- audit-identical: flag values byte-identical to the en template (likely
untranslated copy-paste)
- audit-placeholders: flag values whose top-level {placeholder} tokens
don't match the en template's, walking ICU brace depth so the literal
case bodies of a {var, plural, =1{...} other{...}} block are not
misread as extra placeholders (a naive regex reported false positives
on every locale for exchangeFileUploadUploadCount)
- Fill every key missing relative to the en template (ar, as, bg, bn,
cs, de, el, es, fa, fi, fr, hi, hi_Latn, hy, it, ka, ko, pt, pt_BR,
ru, sw, th, tr, uk, vi, zh), reaching full key parity. hy/ka/sw/vi
were previously only ~8-10% translated; every other locale had
between 106 and 864 keys missing.
- Fix ~65 pre-existing placeholder bugs across 16 locales where a
{placeholder} (e.g. {error}, {device}, {amount}) was dropped during a
past translation, in several cases replaced by garbled tool artifacts
(e.g. "X64X", "页: 1") that leaked into the shipped strings.
- Translate ~400 strings that existed as untranslated, byte-identical
copies of the en template despite the key already being present.
en template untouched; every other locale re-verified with
`arb.dart validate`, `missing` (0 everywhere) and
`audit-placeholders` (0 everywhere).
This is a long-form legal/financial risk disclosure (Liquid Bitcoin and Instant Payments wallet risks). Translating it as part of the bulk pass carries more legal risk than showing it in English until a native-speaker legal review happens per locale, so revert its value back to the en template text in all 26 non-English .arb files. Sibling keys liquidRiskDisclosureTitle/SemanticLabel are untouched.
|
Claude finished @ethicnology's task in 14m 57s —— View job PR Review in progress
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Full pass over
localization/to bring every non-English locale to 100% keyparity with the
entemplate, and to fix a batch of pre-existing translationbugs found along the way.
app_en.arbis untouched.Tooling (
tools/arb.dart)Extended the existing ARB tool with commands needed to do this at scale
without hand-editing 26 large files:
missing-detail LOCALE— export a locale's missing keys as{key: {en, description, placeholders}}JSON, ready to translate.fill LOCALE --translations-file— bulk-add/update many translations inone pass instead of one
setcall per key.audit-identical— flag values byte-identical to theentemplate (alikely untranslated copy-paste).
audit-placeholders— flag values whose top-level{placeholder}tokensdon't match the
entemplate's. Walks ICU brace depth so the literal casebodies of a
{var, plural, =1{...} other{...}}block aren't misread asextra placeholders (a naive regex previously false-positived on every
locale for one key).
Translations (
localization/*.arb)el, es, fa, fi, fr, hi, hi_Latn, hy, it, ka, ko, pt, pt_BR, ru, sw, th, tr,
uk, vi, zh).
hy,ka,sw,viwere previously only ~8–10% translated;every other locale had between 106 and 864 keys missing out of 3416.
{placeholder}(e.g.{error},{device},{amount}) silently droppedin a past translation, in several cases replaced by garbled artifacts
(e.g.
"X64X","页: 1") from some earlier broken translation tool.copies of the
entext despite the key already being present in the file.Out of scope (follow-ups, not done here)
agents as simply wrong (not missing/identical, just incorrect), e.g. in
Thai: "Failed" translated as a word meaning "house", "sats" as "sit down".
These weren't touched here — worth a dedicated native-speaker review pass.
liquidRiskDisclosureBodyuntouched