diff --git a/config/scripts/verify-localization-extraction.mjs b/config/scripts/verify-localization-extraction.mjs index 07b68bb3389..df101e652a0 100644 --- a/config/scripts/verify-localization-extraction.mjs +++ b/config/scripts/verify-localization-extraction.mjs @@ -34,10 +34,7 @@ export function compareExtraction(extractedCatalog, englishCatalog) { const dynamicDefaults = [...extracted.entries()] .filter(([, value]) => value.length === 0) .map(([key]) => key) - const missingFromEnglish = [...extracted.entries()] - .filter(([, value]) => value.length > 0) - .map(([key]) => key) - .filter((key) => !english.has(key)) + const missingFromEnglish = [...extracted.keys()].filter((key) => !english.has(key)) const orphans = [...english.keys()].filter((key) => !extracted.has(key)) const fallbackDrift = [] const placeholderMismatches = [] diff --git a/config/scripts/verify-localization-extraction.test.mjs b/config/scripts/verify-localization-extraction.test.mjs index 1c7e6682261..ae7556e9315 100644 --- a/config/scripts/verify-localization-extraction.test.mjs +++ b/config/scripts/verify-localization-extraction.test.mjs @@ -25,6 +25,12 @@ describe('verify-localization-extraction', () => { expect(result.placeholderMismatches).toEqual([]) }) + it('rejects undeclared keys even when their defaults are dynamic', () => { + const result = compareExtraction({ menu: { dynamic: '' } }, {}) + + expect(result.missingFromEnglish).toEqual(['menu.dynamic']) + }) + it('rejects missing English declarations and incompatible placeholders', () => { const result = compareExtraction( {