Skip to content

refactor(i18n): track cross-surface i18n and l10n governance #959

@limityan

Description

@limityan

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions