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

Function checkExtraKeys

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

Source from the content-addressed store, hash-verified

16}
17
18export async function checkExtraKeys(
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 extraKeys = new Set(
34 Array.from(localeKeys).filter(k => !sourceKeys.includes(k))
35 )
36
37 if (!extraKeys.size) {
38 return result
39 }
40
41 writeStderr('---------------------------------\n')
42 writeStderr(`Extra translation keys for locale ${locale}:\n`)
43 extraKeys.forEach(r => writeStderr(`${r}\n`))
44
45 return false
46 }, true)
47}

Callers 1

verifyFunction · 0.85

Calls 2

extractKeysFunction · 0.70
debugFunction · 0.50

Tested by

no test coverage detected