feat(i18n): UI language selector (Settings → Appearance → Language) (T-462)

Make the localization usable: an app.locale select (English / Nederlands) in
the Appearance category, applied live by root_shell — it parses app.locale and
calls i18n.setLocale on boot + on settings change (setLocale is a no-op when
unchanged). nl_NL registered in availableLocales. The ui-design skill now
documents the locale-dir config and the rule to design for string-length
variation (translations run ~20% longer; never hard-size to the English label).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-20 17:34:08 +02:00
co-authored by Claude Opus 4.8
parent bee7f98e45
commit 43c650de10
6 changed files with 68 additions and 4 deletions
+4
View File
@@ -394,6 +394,10 @@ Future<void> main() async {
bundledThemes: themes,
i18nLoader: AssetCatalogLoader(bundle: rootBundle),
preloadNamespaces: _tier0Namespaces,
// Languages the UI can switch to (Settings → Appearance, T-462). Each needs
// an assets/i18n/<locale>/ catalog folder; root_shell applies the persisted
// app.locale on boot.
availableLocales: const [Locale('en', 'US'), Locale('nl', 'NL')],
autoStartDaemonClient: false,
toolchain: toolchain,
minLogLevel: bootLogLevel,