mirror of
https://github.com/DOI-DO/j40-cejst-2.git
synced 2025-02-23 01:54:18 -08:00
Upgrade i18n diff script and include a list of approved matches
This commit is contained in:
parent
f4e0f63363
commit
390d19d9c6
2 changed files with 65 additions and 14 deletions
|
@ -1,25 +1,42 @@
|
||||||
|
/**
|
||||||
|
* Validates translation coverage between en.json and es.json by checking:
|
||||||
|
* - Missing/unused translation keys
|
||||||
|
* - Identical text that may need translation (excluding approved matches)
|
||||||
|
*/
|
||||||
|
|
||||||
const enJson = require('./en.json');
|
const enJson = require('./en.json');
|
||||||
const esJson = require('./es.json');
|
const esJson = require('./es.json');
|
||||||
|
const {identicalKeysEnEs} = require('./identicalKeysEnEs');
|
||||||
|
|
||||||
const enKeys = Object.keys(enJson);
|
const enKeys = Object.keys(enJson);
|
||||||
const esKeys = Object.keys(esJson);
|
const esKeys = Object.keys(esJson);
|
||||||
|
|
||||||
const enKeysNotInEs = enKeys.filter((key) => !esKeys.includes(key));
|
const missingKeys = enKeys.filter((key) => !esKeys.includes(key));
|
||||||
const esKeysNotInEn = esKeys.filter((key) => !enKeys.includes(key));
|
const unusedKeys = esKeys.filter((key) => !enKeys.includes(key));
|
||||||
|
|
||||||
// Check for missing/outdated keys
|
if (missingKeys.length > 0 || unusedKeys.length > 0) {
|
||||||
if (enKeysNotInEs.length > 0 || esKeysNotInEn.length > 0) {
|
console.log('\nMISSING: These keys need to be added to es.json:');
|
||||||
console.log('\nKeys to be added to es.json: ');
|
console.log(missingKeys);
|
||||||
console.log(enKeysNotInEs);
|
console.log('\nUNUSED: These keys in es.json are not in en.json:');
|
||||||
console.log('\nKeys to be removed from es.json: ');
|
console.log(unusedKeys);
|
||||||
console.log(esKeysNotInEn);
|
|
||||||
} else {
|
} else {
|
||||||
console.log('All keys from en.json appear to exist in es.json');
|
console.log('SUCCESS: All keys match between en.json and es.json');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for identical translations
|
const untranslatedValues = enKeys.filter((key) =>
|
||||||
const identicalValues = enKeys.filter((key) => enJson[key].defaultMessage === esJson[key]);
|
enJson[key].defaultMessage === esJson[key] && !identicalKeysEnEs.includes(key),
|
||||||
if (identicalValues.length > 0) {
|
);
|
||||||
console.log('\nKeys where es.json is the same as en.json: ');
|
if (untranslatedValues.length > 0) {
|
||||||
console.log(identicalValues);
|
console.log('\nIDENTICAL: These keys have identical text in both languages');
|
||||||
|
console.log('(If any of these are intentionally identical, add them to identicalKeysEnEs.js):');
|
||||||
|
console.log(untranslatedValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for keys in identicalKeysEnEs that no longer exist in either translation file
|
||||||
|
const nonexistentIdenticalKeys = identicalKeysEnEs.filter(
|
||||||
|
(key) => !enKeys.includes(key) || !esKeys.includes(key),
|
||||||
|
);
|
||||||
|
if (nonexistentIdenticalKeys.length > 0) {
|
||||||
|
console.log('\nOUTDATED MATCH: These keys in identicalKeysEnEs.js no longer exist in translations:');
|
||||||
|
console.log(nonexistentIdenticalKeys);
|
||||||
}
|
}
|
||||||
|
|
34
client/src/intl/identicalKeysEnEs.js
Normal file
34
client/src/intl/identicalKeysEnEs.js
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/**
|
||||||
|
* Lists translation keys that are intentionally identical between English and Spanish translations.
|
||||||
|
* These keys represent content that should remain the same in both languages, such as:
|
||||||
|
* - URLs and external links
|
||||||
|
* - Standardized abbreviations
|
||||||
|
* - Words like "no" that are the same in both languages
|
||||||
|
*
|
||||||
|
* This file must be manually updated as needed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const identicalKeysEnEs = [
|
||||||
|
'common.pages.footer.findcontact.link',
|
||||||
|
'common.pages.footer.whitehouselogoalt',
|
||||||
|
'common.pages.tsd.url',
|
||||||
|
'explore.map.page.map.layer.selector.tribal.short',
|
||||||
|
'explore.map.page.map.territoryFocus.alaska.long',
|
||||||
|
'explore.map.page.map.territoryFocus.alaska.short',
|
||||||
|
'explore.map.page.map.territoryFocus.american.samoa.short',
|
||||||
|
'explore.map.page.map.territoryFocus.commonwealth.nmp.short',
|
||||||
|
'explore.map.page.map.territoryFocus.guam.long',
|
||||||
|
'explore.map.page.map.territoryFocus.guam.short',
|
||||||
|
'explore.map.page.map.territoryFocus.hawaii.short',
|
||||||
|
'explore.map.page.map.territoryFocus.lower48.short',
|
||||||
|
'explore.map.page.map.territoryFocus.puerto_rico.long',
|
||||||
|
'explore.map.page.map.territoryFocus.puerto_rico.short',
|
||||||
|
'explore.map.page.map.territoryFocus.us.virgin.islands.short',
|
||||||
|
'explore.map.page.side.panel.exceed.burden.answer.no',
|
||||||
|
'explore.map.page.side.panel.indicator.diabetes',
|
||||||
|
'explore.map.page.side.panel.info.para.4',
|
||||||
|
'explore.map.page.side.panel.not.community.of.focus',
|
||||||
|
'methodology.page.dataset.indicator.diabetes.title.text',
|
||||||
|
];
|
||||||
|
|
||||||
|
export default identicalKeysEnEs;
|
Loading…
Add table
Reference in a new issue