| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
							- /* eslint-disable no-eval */
 - 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(/\.[^/.]+$/, '') // Remove file extension
 -         const camelCaseFileName = fileName.replace(/[-_](.)/g, (_, c) =>
 -           c.toUpperCase(),
 -         ) // Convert to camel case
 -         // console.log(camelCaseFileName)
 -         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)
 - 
 -     // Print missing keys
 -     languages.forEach((language, index) => {
 -       const missingKeys = targetKeys.filter(key => !languagesKeys[index].includes(key))
 -       console.log(`Missing keys in ${language}:`, missingKeys)
 -     })
 -   }
 - 
 -   compareKeysCount()
 - }
 - 
 - main()
 
 
  |