MCPcopy Index your code
hub / github.com/formatjs/formatjs / checkMissingKeys

Function checkMissingKeys

packages/cli-lib/verify/checkMissingKeys.ts:18–44  ·  view source on GitHub ↗
(
  translationFilesContents: Record<string, any>,
  sourceLocale: string
)

Source from the content-addressed store, hash-verified

16}
17
18export async function checkMissingKeys(
19 translationFilesContents: Record<string, any>,
20 sourceLocale: string
21): Promise<boolean> {
22 debug('Checking translation files:')
23 const sourceContent = translationFilesContents[sourceLocale]
24 if (!sourceContent) {
25 throw new Error(`Missing source ${sourceLocale}.json file`)
26 }
27 const sourceKeys = extractKeys(sourceContent)
28 return Object.entries(translationFilesContents)
29 .filter(([locale]) => locale !== sourceLocale)
30 .reduce<boolean>((result, [locale, content]) => {
31 const localeKeys = new Set(extractKeys(content))
32
33 const missingKeys = new Set(sourceKeys.filter(r => !localeKeys.has(r)))
34 // We're being lenient here since only missing keys are currently considered breaking
35 if (!missingKeys.size) {
36 return result
37 }
38 writeStderr('---------------------------------\n')
39 writeStderr(`Missing translation keys for locale ${locale}:\n`)
40 missingKeys.forEach(r => writeStderr(`${r}\n`))
41
42 return false
43 }, true)
44}

Callers 1

verifyFunction · 0.85

Calls 2

extractKeysFunction · 0.70
debugFunction · 0.50

Tested by

no test coverage detected