Context
Translation has two parts: machine translation, which produces a first draft of a string, and translation-management systems (TMS), which hold the strings that people translate. The owner’s idea on 2026-10-20 (end of file, “Translation integrations”), with a recommendation from the assistant, puts both behind one port in@stackra/i18n. The owner’s localization service in Figentra OS holds tenant translations.
Decision
@stackra/i18nexposes a translation-provider port. The port is the only way the package reaches an outside translator.- Machine translation ships as connectors: Google Translate, DeepL, AWS Translate, and the AI runtime of 0156.
- TMS sync ships as connectors: Lokalise, Crowdin, Phrase, Localazy and Tolgee.
- Connectors are delivered through the integrations service and marketplace, not built into
@stackra/i18n. - The Figentra OS localization service owns tenant translations and TMS sync. This is an OS item, not a Stackra package.
- Keys do not change. A connector moves catalogues in and out of the registry. The key forms are those of ADR 0231, for example
billing::invoice.refund_confirm.
Consequences
- A new translator is a connector, so
@stackra/i18ndoes not grow a vendor SDK. - Catalogues from a TMS return to the same
lang/files that the assets rule defines (ADR 0234), so the source of truth stays in the repository.
Enforcement
planned — the boundaries rule bans vendor translation SDKs in@stackra/i18n, and the port has a conformance test for each connector.
Alternatives
- Vendor SDKs inside
@stackra/i18n: rejected by decision 1 and by the no-vendor-SDK rule of packages (0147). - Tenant translations stored in the package: rejected; tenant translations belong to the OS localization service.
Supersedes and sources
Supersedes: none. Builds on: 0147 (no vendor SDKs in packages), 0234 (lang/).
Sources: the owner’s idea and the assistant’s recommendation (stackra-decisions-2026-10-19.md, end of file, “Translation integrations”, 2026-10-20);
the owner’s acceptance of the recommendation (2026-10-20).