You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Expand Netsuke's Fluent localization support to the following requested locale
set in one coordinated change:
ar
cs
cy
da
de
el
en-GB
es-419
es-ES (already present; audit and retain)
fa
fi
fr
gd
he
hi
hu
id
it
ja
ko
nb
nl
pl
pt-BR
pt-PT
ro
ru
sv
th
tr
uk
vi
zh-Hans
zh-Hant
en-US remains the source and fallback locale. es-ES already exists, so the
net addition is 33 locale catalogues.
Current state
Cargo.toml declares only en-US and es-ES.
src/cli_localization.rs embeds those two resources and dispatches every
Spanish language tag to es-ES.
build_l10n_audit.rs hard-codes the two catalogue paths.
Tests and release-help paths contain several two-locale or en-US-specific
assumptions.
Proposed work
Add complete Fluent catalogues under locales/<locale>/messages.ftl for all
requested tags, retaining key names and variables from en-US.
Replace language-only dispatch with exact locale matching plus deliberate
fallback rules, so es-419 and es-ES, pt-BR and pt-PT, and zh-Hans and zh-Hant remain distinct.
Make the build-time localization audit validate every declared locale rather
than hard-coding two paths. Keep one authoritative locale registry shared by
embedding, validation, metadata, and tests, or document why those surfaces
cannot share it.
Update OrthoConfig metadata, rerun-if-changed declarations, CLI/runtime locale
resolution, help generation, packaging, and relevant release paths.
Add parameterized unit and behavioural coverage for exact selection,
language/region/script fallback, unsupported-locale fallback to en-US,
Unicode rendering, interpolation variables, and CLDR plural categories.
Add bidirectional/RTL smoke coverage for ar, fa, and he; ensure output
code does not insert direction-breaking assumptions.
Update docs/translators-guide.md, docs/users-guide.md, docs/netsuke-design.md, and docs/contents.md with the registry ownership,
fallback policy, and translator workflow.
Translation quality
Machine-generated or copied English catalogues are not completion. Each locale
must be reviewed for terminology, Fluent syntax, interpolation variables,
plural rules, punctuation, and script/region appropriateness. Catalogue review
can be staged internally, but this issue is complete only when all requested
locales meet the same validation contract.
Acceptance criteria
All 34 requested locale tags are selectable, with en-US retained as
the source/fallback locale.
All 33 new catalogues are complete and es-ES is audited against the
current en-US key set.
Exact region/script variants are not collapsed into a generic language
mapping.
The build-time audit discovers or iterates every declared locale and
rejects missing keys, orphaned keys, and variable mismatches.
Parameterized tests cover every locale plus representative plural,
interpolation, Unicode, and RTL behaviour.
Packaging includes every catalogue and generated help paths follow the
documented locale policy.
Translator and user documentation list all supported locales and explain
fallback behaviour.
make check-fmt, make lint, make test, make markdownlint, and make nixie pass.
Summary
Expand Netsuke's Fluent localization support to the following requested locale
set in one coordinated change:
arcscydadeelen-GBes-419es-ES(already present; audit and retain)fafifrgdhehihuiditjakonbnlplpt-BRpt-PTrorusvthtrukvizh-Hanszh-Hanten-USremains the source and fallback locale.es-ESalready exists, so thenet addition is 33 locale catalogues.
Current state
Cargo.tomldeclares onlyen-USandes-ES.src/cli_localization.rsembeds those two resources and dispatches everySpanish language tag to
es-ES.build_l10n_audit.rshard-codes the two catalogue paths.en-US-specificassumptions.
Proposed work
locales/<locale>/messages.ftlfor allrequested tags, retaining key names and variables from
en-US.fallback rules, so
es-419andes-ES,pt-BRandpt-PT, andzh-Hansandzh-Hantremain distinct.than hard-coding two paths. Keep one authoritative locale registry shared by
embedding, validation, metadata, and tests, or document why those surfaces
cannot share it.
resolution, help generation, packaging, and relevant release paths.
language/region/script fallback, unsupported-locale fallback to
en-US,Unicode rendering, interpolation variables, and CLDR plural categories.
ar,fa, andhe; ensure outputcode does not insert direction-breaking assumptions.
docs/translators-guide.md,docs/users-guide.md,docs/netsuke-design.md, anddocs/contents.mdwith the registry ownership,fallback policy, and translator workflow.
Translation quality
Machine-generated or copied English catalogues are not completion. Each locale
must be reviewed for terminology, Fluent syntax, interpolation variables,
plural rules, punctuation, and script/region appropriateness. Catalogue review
can be staged internally, but this issue is complete only when all requested
locales meet the same validation contract.
Acceptance criteria
en-USretained asthe source/fallback locale.
es-ESis audited against thecurrent
en-USkey set.mapping.
rejects missing keys, orphaned keys, and variable mismatches.
interpolation, Unicode, and RTL behaviour.
documented locale policy.
fallback behaviour.
make check-fmt,make lint,make test,make markdownlint, andmake nixiepass.References
locales/Cargo.toml(package.metadata.ortho_config.locales)src/cli_localization.rssrc/locale_resolution.rsbuild.rsbuild_l10n_audit.rsdocs/translators-guide.md