mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-07 15:09:30 +00:00
feat: French localization — community contribution by @OUARZA (#371)
The complete French dictionary contributed in #371 (1026 keys, zero empty values, zero placeholder mismatches) lands as the second lazy locale on the fr.ts + one static entry. The contributor's snapshot predated this week's keys, so the 121 additions (device inbox #29, backdrop guard #39, junction limits #331, lazy-editor toasts #353/#354, furniture #159) are translated in this commit and flagged in the issue for the author's review; 21 stale pre-#62 keys are dropped; key order follows en.json. The HA integration translations file ships as contributed (full parity). Wiring: loadFrench + __HOUSEPLAN_FR_RETRY_ASSET__ with the same 1/1 replacement guarantee as German; locale roles and localeRoots generalise to (de|fr); the stale-entry fallback panel (#353) gains its French branch — the r1 reviewer caught that this second hardcoded language list would have silently degraded French to English on a cached entry. French profiles (fr, fr-FR, fr-CA, fr-BE, fr-CH) select automatically. Proofs: the registry-driven parity suite covers fr by construction (1128/1128 keys); French analogues of both German-personal tests (product glossary + non-translation scan with a reviewed equal-to-English allow-list of 22 legitimate homographs); smoke_french_locale — fr-CA profile commits French from the real bundle, one lazy chunk per page, initial graph free of fr; smoke_entry_stale gains the French run; a registry mutant drops the fr entry and is killed by the smoke. Initial view: +0.5 KB (registry entry + fallback branch); the 23 KB dictionary is lazy. Issue: #371 User-Visible: yes
This commit is contained in:
@@ -100,7 +100,8 @@ test('retry URL points at the content-hashed runtime chunk after naming', () =>
|
||||
type: 'chunk', fileName: 'houseplan-assets/houseplan-card.js',
|
||||
code: 'new URL("__HOUSEPLAN_EDITOR_RETRY_ASSET__", import.meta.url);'
|
||||
+ 'new URL("__HOUSEPLAN_ONBOARDING_RETRY_ASSET__", import.meta.url);'
|
||||
+ 'new URL("__HOUSEPLAN_DE_RETRY_ASSET__", import.meta.url)', modules: {},
|
||||
+ 'new URL("__HOUSEPLAN_DE_RETRY_ASSET__", import.meta.url);'
|
||||
+ 'new URL("__HOUSEPLAN_FR_RETRY_ASSET__", import.meta.url)', modules: {},
|
||||
},
|
||||
'houseplan-assets/houseplan-editor-runtime-HASH.js': {
|
||||
type: 'chunk', fileName: 'houseplan-assets/houseplan-editor-runtime-HASH.js', code: '',
|
||||
@@ -114,13 +115,18 @@ test('retry URL points at the content-hashed runtime chunk after naming', () =>
|
||||
type: 'chunk', fileName: 'houseplan-assets/de-HASH.js', code: '',
|
||||
modules: { '/repo/src/i18n/de.ts': {} },
|
||||
},
|
||||
'houseplan-assets/fr-HASH.js': {
|
||||
type: 'chunk', fileName: 'houseplan-assets/fr-HASH.js', code: '',
|
||||
modules: { '/repo/src/i18n/fr.ts': {} },
|
||||
},
|
||||
};
|
||||
plugin.generateBundle({}, bundle);
|
||||
assert.equal(
|
||||
bundle['houseplan-assets/houseplan-card.js'].code,
|
||||
'new URL("./houseplan-editor-runtime-HASH.js", import.meta.url);'
|
||||
+ 'new URL("./houseplan-onboarding-runtime-HASH.js", import.meta.url);'
|
||||
+ 'new URL("./de-HASH.js", import.meta.url)',
|
||||
+ 'new URL("./de-HASH.js", import.meta.url);'
|
||||
+ 'new URL("./fr-HASH.js", import.meta.url)',
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user