| 
							 | 
						 | 
					
					
						
						| 
							 | 
						const fs = require('node:fs') | 
					
					
						
						| 
							 | 
						const path = require('node:path') | 
					
					
						
						| 
							 | 
						const transpile = require('typescript').transpile | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						const targetLanguage = 'en-US' | 
					
					
						
						| 
							 | 
						const data = require('./languages.json') | 
					
					
						
						| 
							 | 
						const languages = data.languages.filter(language => language.supported).map(language => language.value) | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						async function getKeysFromLanuage(language) { | 
					
					
						
						| 
							 | 
						  return new Promise((resolve, reject) => { | 
					
					
						
						| 
							 | 
						    const folderPath = path.join(__dirname, language) | 
					
					
						
						| 
							 | 
						    let allKeys = [] | 
					
					
						
						| 
							 | 
						    fs.readdir(folderPath, (err, files) => { | 
					
					
						
						| 
							 | 
						      if (err) { | 
					
					
						
						| 
							 | 
						        console.error('Error reading folder:', err) | 
					
					
						
						| 
							 | 
						        reject(err) | 
					
					
						
						| 
							 | 
						        return | 
					
					
						
						| 
							 | 
						      } | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						      files.forEach((file) => { | 
					
					
						
						| 
							 | 
						        const filePath = path.join(folderPath, file) | 
					
					
						
						| 
							 | 
						        const fileName = file.replace(/\.[^/.]+$/, '')  | 
					
					
						
						| 
							 | 
						        const camelCaseFileName = fileName.replace(/[-_](.)/g, (_, c) => | 
					
					
						
						| 
							 | 
						          c.toUpperCase(), | 
					
					
						
						| 
							 | 
						        )  | 
					
					
						
						| 
							 | 
						         | 
					
					
						
						| 
							 | 
						        const content = fs.readFileSync(filePath, 'utf8') | 
					
					
						
						| 
							 | 
						        const translation = eval(transpile(content)) | 
					
					
						
						| 
							 | 
						         | 
					
					
						
						| 
							 | 
						        const keys = Object.keys(translation) | 
					
					
						
						| 
							 | 
						        const nestedKeys = [] | 
					
					
						
						| 
							 | 
						        const iterateKeys = (obj, prefix = '') => { | 
					
					
						
						| 
							 | 
						          for (const key in obj) { | 
					
					
						
						| 
							 | 
						            const nestedKey = prefix ? `${prefix}.${key}` : key | 
					
					
						
						| 
							 | 
						            nestedKeys.push(nestedKey) | 
					
					
						
						| 
							 | 
						            if (typeof obj[key] === 'object') | 
					
					
						
						| 
							 | 
						              iterateKeys(obj[key], nestedKey) | 
					
					
						
						| 
							 | 
						          } | 
					
					
						
						| 
							 | 
						        } | 
					
					
						
						| 
							 | 
						        iterateKeys(translation) | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						        allKeys = [...keys, ...nestedKeys].map( | 
					
					
						
						| 
							 | 
						          key => `${camelCaseFileName}.${key}`, | 
					
					
						
						| 
							 | 
						        ) | 
					
					
						
						| 
							 | 
						      }) | 
					
					
						
						| 
							 | 
						      resolve(allKeys) | 
					
					
						
						| 
							 | 
						    }) | 
					
					
						
						| 
							 | 
						  }) | 
					
					
						
						| 
							 | 
						} | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						async function main() { | 
					
					
						
						| 
							 | 
						  const compareKeysCount = async () => { | 
					
					
						
						| 
							 | 
						    const targetKeys = await getKeysFromLanuage(targetLanguage) | 
					
					
						
						| 
							 | 
						    const languagesKeys = await Promise.all(languages.map(language => getKeysFromLanuage(language))) | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						    const keysCount = languagesKeys.map(keys => keys.length) | 
					
					
						
						| 
							 | 
						    const targetKeysCount = targetKeys.length | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						    const comparison = languages.reduce((result, language, index) => { | 
					
					
						
						| 
							 | 
						      const languageKeysCount = keysCount[index] | 
					
					
						
						| 
							 | 
						      const difference = targetKeysCount - languageKeysCount | 
					
					
						
						| 
							 | 
						      result[language] = difference | 
					
					
						
						| 
							 | 
						      return result | 
					
					
						
						| 
							 | 
						    }, {}) | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						    console.log(comparison) | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						     | 
					
					
						
						| 
							 | 
						    languages.forEach((language, index) => { | 
					
					
						
						| 
							 | 
						      const missingKeys = targetKeys.filter(key => !languagesKeys[index].includes(key)) | 
					
					
						
						| 
							 | 
						      console.log(`Missing keys in ${language}:`, missingKeys) | 
					
					
						
						| 
							 | 
						    }) | 
					
					
						
						| 
							 | 
						  } | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						  compareKeysCount() | 
					
					
						
						| 
							 | 
						} | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						main() | 
					
					
						
						| 
							 | 
						
 |