Detach the language subscription (tests / teardown). Singletons are app-lifetime.
The active language tag currently feeding the registry.
The localized display name for a scope (for the shortcut-keys dialog); the scope key if unknown.
Listen for scope-label changes (e.g. after a language switch). Returns a remover.
The module-init service that owns command chrome, structured per
(scope, language)(I18N-DESIGN.md decision 8). MirrorsDynamicIconService/LanguagePackService.Loading model (VSCode-like, one complete pack): each locale catalog is a self-contained, COMPLETE pack (a build step copies untranslated fields from the default — decision #1), fetched at runtime as a data file (not
import-inlined, so command strings stay out of the code bundle). The service seeds the active locale's pack into a CommandRegistry viaregisterStatic(scope, …)— the defaultenpack only when that locale isn't registered. There is no runtimeen ⊕ localemerge and no fallback layer: a German session loads German, not English. A command can be BORROWED into other scopes (ChromeRecord.borrow). On a language switch (observed throughDefaultLanguagePackService) it loads the new locale's packs and re-seeds, bumping the registry so bound scopes re-resolve — command localization is single-mechanism (which pack is seeded), not a translator overlay on the resolve path.