mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-01-23 02:36:05 +00:00
build: better organize stuff
This commit is contained in:
parent
b3a82294f1
commit
ebc2ff1998
10 changed files with 6 additions and 6 deletions
83
tools/clean-translations.js
Executable file
83
tools/clean-translations.js
Executable file
|
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const i18nDir = path.join(__dirname, '..', 'src', 'assets', 'i18n');
|
||||
const enFile = path.join(i18nDir, 'en.json');
|
||||
|
||||
// Read and parse en.json
|
||||
const enData = JSON.parse(fs.readFileSync(enFile, 'utf8'));
|
||||
|
||||
// Get all valid keys from en.json
|
||||
function getAllKeys(obj, prefix = '') {
|
||||
let keys = [];
|
||||
for (const key in obj) {
|
||||
const fullKey = prefix ? `${prefix}.${key}` : key;
|
||||
if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {
|
||||
keys = keys.concat(getAllKeys(obj[key], fullKey));
|
||||
} else {
|
||||
keys.push(fullKey);
|
||||
}
|
||||
}
|
||||
return keys;
|
||||
}
|
||||
|
||||
// Remove keys from object that are not in validKeys
|
||||
function cleanObject(obj, validKeys, prefix = '') {
|
||||
const cleaned = {};
|
||||
|
||||
for (const key in obj) {
|
||||
const fullKey = prefix ? `${prefix}.${key}` : key;
|
||||
|
||||
if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {
|
||||
// Check if any valid key starts with this path
|
||||
const hasValidChild = validKeys.some((k) => k.startsWith(fullKey + '.'));
|
||||
if (hasValidChild) {
|
||||
const cleanedChild = cleanObject(obj[key], validKeys, fullKey);
|
||||
if (Object.keys(cleanedChild).length > 0) {
|
||||
cleaned[key] = cleanedChild;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Check if this key exists in validKeys
|
||||
if (validKeys.includes(fullKey)) {
|
||||
cleaned[key] = obj[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return cleaned;
|
||||
}
|
||||
|
||||
const validKeys = getAllKeys(enData);
|
||||
console.log(`Found ${validKeys.length} valid keys in en.json`);
|
||||
|
||||
// Get all translation files
|
||||
const translationFiles = fs
|
||||
.readdirSync(i18nDir)
|
||||
.filter((file) => file.endsWith('.json') && file !== 'en.json');
|
||||
|
||||
let totalRemoved = 0;
|
||||
|
||||
// Process each translation file
|
||||
translationFiles.forEach((file) => {
|
||||
const filePath = path.join(i18nDir, file);
|
||||
const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
||||
|
||||
const originalKeys = getAllKeys(data);
|
||||
const cleanedData = cleanObject(data, validKeys);
|
||||
const cleanedKeys = getAllKeys(cleanedData);
|
||||
|
||||
const removedCount = originalKeys.length - cleanedKeys.length;
|
||||
totalRemoved += removedCount;
|
||||
|
||||
if (removedCount > 0) {
|
||||
fs.writeFileSync(filePath, JSON.stringify(cleanedData, null, 2) + '\n', 'utf8');
|
||||
console.log(`${file}: Removed ${removedCount} orphaned keys`);
|
||||
} else {
|
||||
console.log(`${file}: No orphaned keys found`);
|
||||
}
|
||||
});
|
||||
|
||||
console.log(`\nTotal orphaned keys removed: ${totalRemoved}`);
|
||||
Loading…
Add table
Add a link
Reference in a new issue