Background
BitFun aligned i18n and l10n across Web UI, mobile-web, installer, backend, and relay static pages around one shared language contract. Each product surface still owns and loads only the resources it needs.
Completion Status
This refactor stream is complete after the active closure PR is merged. Future i18n drift should be handled as ordinary maintenance using the documented architecture, audit reports, and lightweight verification rules.
Final Architecture Snapshot
- Canonical locale identity, aliases, fallback chains, surface defaults, and generated contracts are centralized.
- Product surfaces keep independent resource ownership and do not import another surface's full locale catalog.
- Shared terms are reserved for stable cross-surface concepts such as product names, feature names, tool names, modes, connection methods, and status labels.
- Context-specific page, workflow, toast, validation, and feature copy stays in the nearest owner namespace.
- Static keys, dynamic keys, placeholder parity, literal fallbacks, direct locale formatting, shared-term duplicates, same-text locale inventory, and actionable l10n signals are audited as separate categories.
- Local prechecks stay lightweight; broader platform/build coverage remains protected by CI.
Final Progress Snapshot
- Unified locale contract and generated surface contracts are in place across frontend/backend surfaces.
- Web UI keeps bootstrap namespaces separate from lazy locale namespaces.
- mobile-web, installer, backend, and relay static pages have their own resource paths and generated contract entry points.
- Shared terms are available across surfaces and are used for stable mode, agent, tool, connection-method, product, feature, and Deep Review labels without forcing cross-surface bundle loading.
- Dynamic-key candidates are explicitly tracked with source-proof metadata for known dynamic access paths.
- Static Web UI literal fallback debt and direct locale-formatting candidates are zero.
- Broad zh-CN/zh-TW same-text copy is visible as non-blocking review inventory; actionable l10n signal candidates stay separate at zero.
- Durable i18n docs cover resource ownership, lookup rules, audit semantics, and lightweight verification.
Final Key Metrics
Baseline is the earliest tracked governance snapshot for each comparable metric in this refactor stream.
| Metric |
Baseline |
Final |
Change / meaning |
| Literal fallback candidates |
457 |
0 |
-457 |
| Direct locale-format candidates |
32 |
0 |
-32 |
| Shared-term duplicate candidates |
214 |
185 |
-29; remaining entries are governed no-growth review data |
| Dynamic key candidates |
194 |
193 |
-1; all current dynamic candidates are source-proven |
| Dynamic candidates with source proof |
0 |
193 |
+193 |
| Actionable same-text l10n signal candidates |
1 |
0 |
-1 actual signal fixed |
| Same-text locale review inventory |
not reported |
790 |
Non-blocking copy-review inventory; not a pass/fail metric |
| Confirmed unused keys |
0 |
0 |
0 |
Post-Close Guardrails
- Keep source-proof metadata current for dynamic key access.
- Migrate shared-term duplicates only when the local value is the same stable concept; keep context-sensitive copy local.
- Treat same-text locale inventory as copy-review input, not deletion evidence or a pass/fail quality metric.
- Keep static
defaultValue fallback and direct locale-format candidates at zero by repairing locale resources or using surface i18n helpers.
- Adding a future locale or product surface must update generated contracts, resource boundaries, fallback rules, and audit coverage together.
Done Criteria
- Adding a locale or product surface has clear contract, resource ownership, fallback, generation, and audit entry points.
- Product surfaces do not load resource catalogs they do not own.
- Key deletion can rule out static and dynamic references with auditable evidence.
- Stable concept labels have an authoritative source, repeated values have a reviewable report, and l10n signal issues are tracked separately from structural i18n cleanup.
- Durable docs are enough for future contributors to add, read, migrate, and audit i18n resources consistently.
Background
BitFun aligned i18n and l10n across Web UI, mobile-web, installer, backend, and relay static pages around one shared language contract. Each product surface still owns and loads only the resources it needs.
Completion Status
This refactor stream is complete after the active closure PR is merged. Future i18n drift should be handled as ordinary maintenance using the documented architecture, audit reports, and lightweight verification rules.
Final Architecture Snapshot
Final Progress Snapshot
Final Key Metrics
Baseline is the earliest tracked governance snapshot for each comparable metric in this refactor stream.
Post-Close Guardrails
defaultValuefallback and direct locale-format candidates at zero by repairing locale resources or using surface i18n helpers.Done Criteria