38 lines
1.0 KiB
JavaScript
38 lines
1.0 KiB
JavaScript
|
|
const fs = require('fs');
|
|
|
|
const fileContent = fs.readFileSync('src/composables/useI18n.js', 'utf8');
|
|
|
|
// Extract the messages object
|
|
const match = fileContent.match(/const messages = ({[\s\S]*?});/);
|
|
if (!match) {
|
|
console.error('Could not find messages object');
|
|
process.exit(1);
|
|
}
|
|
|
|
// We need to make the string valid JS to eval it.
|
|
// It seems the content inside `const messages = { ... };` is valid JS object notation.
|
|
// But we need to be careful about imports or other things if we were to `eval` the whole file.
|
|
// We'll just `eval` the object part.
|
|
|
|
const messagesStr = match[1];
|
|
const messages = eval(`(${messagesStr})`);
|
|
|
|
const enKeys = Object.keys(messages.en);
|
|
const languages = Object.keys(messages);
|
|
|
|
const missing = {};
|
|
|
|
languages.forEach(lang => {
|
|
if (lang === 'en') return;
|
|
|
|
const langKeys = Object.keys(messages[lang]);
|
|
const missingKeys = enKeys.filter(k => !langKeys.includes(k));
|
|
|
|
if (missingKeys.length > 0) {
|
|
missing[lang] = missingKeys;
|
|
}
|
|
});
|
|
|
|
console.log(JSON.stringify(missing, null, 2));
|