From 885884034d455d70a98fd5ef6a267d42b05f4deb Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Wed, 29 Jul 2026 16:57:13 -0700 Subject: [PATCH] Fix undeclared dynamic localization key check --- config/scripts/verify-localization-extraction.mjs | 5 +---- config/scripts/verify-localization-extraction.test.mjs | 6 ++++++ 2 files changed, 7 insertions(+), 4 deletions(-) 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( {