fix(i18n): identify Bokmål accurately in supported-language controls

This commit is contained in:
cesnimda
2026-11-02 23:24:15 +01:00
parent 1756273bc1
commit d3d3383764
6 changed files with 27 additions and 3 deletions
+11
View File
@@ -0,0 +1,11 @@
# Supported-language control naming
2 November 2026. Existing compact AppShell control now displays NB for Bokmål, accessible native name Norsk bokmål, and lang=nb. English retains EN/English with lang=en. This distinguishes written-language identity from Norway's NO country code. Native self-names are intentional invariant labels, not ordinary untranslated interface prose.
The persisted UI value remains nb; I18nProvider still handles legacy aliases and server nb-NO. No document/ad-language preference, route, country support, new locale, navigation layout or final design implementation changed. Both buttons retain their existing handlers, aria-pressed state and two-character badge width.
RED: new shell test failed against the old Norsk/NO label. GREEN: 17 tests in app-shell-navigation, app-shell-notifications and i18n-provider, zero failures/pending, native exit 0. New case checks both language attributes, native name, badge, pressed state and persisted nb selection. Scoped lint and full typecheck passed. Existing language-persistence cases overlap the preceding catalogue QA run; do not add the totals as disjoint tests. Native local report: job-tracker-ui/.artifacts/language-control-qa.json. Native-device/AT/browser qualification remains distinct.
Literal review also checked JobFlowBar's Flow label. Bounded src search found only its declaration; it has a separate local status normaliser rather than importing the shared pipeline helper. No deletion candidate is established and no inactive/compatibility component was changed solely to reduce an inventory count. Other formatting, admin labels and backend literals remain open.
Fresh production static build after the language-control patch PASSED, native exit 0, including TypeScript and all three generated pages. This is development build evidence, not browser/native AT or production qualification. Native test evidence is archived at ../direct-roadmap/integration-evidence/language-control-native.json.gz.
+1 -1
View File
@@ -2,7 +2,7 @@
CONFIRMED functional defect: normalizeStatus('constructor') returned the inherited Object function and '__proto__' returned an object instead of the declared pipeline status or Other. statusLabel could consequently lose a custom status. No prototype mutation, account access or persisted-data corruption is asserted.
Minimal fix: only accept own properties of the existing ALIASES map. Existing trimming, case-insensitive canonical stages, known aliases, empty-as-Applied and custom-as-Other behavior are retained. Shared callers include JobFlowBar, KanbanBoard and ApplicationWorkspacePage. No statuses or stored records were renamed; no routes, migrations or dependencies changed.
Minimal fix: only accept own properties of the existing ALIASES map. Existing trimming, case-insensitive canonical stages, known aliases, empty-as-Applied and custom-as-Other behavior are retained. Imported shared-helper callers reviewed here are KanbanBoard and ApplicationWorkspacePage. Correction: JobFlowBar has a separate local normaliser; the earlier name-based caller search incorrectly included it. That component was not changed. No statuses or stored records were renamed; no routes, migrations or dependencies changed.
RED diagnostic: constructor and __proto__ cases failed; toString control passed because the input is lowercased. Eleven unrelated cases were not selected in that diagnostic run. GREEN final: pipeline and grouped-board suites, 29 tests, zero failures/pending, native exit 0. New cases verify raw custom labels bypass translation; existing cases cover aliases, group membership/order, valid stage labels and board interactions. Scoped lint and full typecheck passed. Native ignored report: job-tracker-ui/.artifacts/pipeline-alias-fallback.json.