Files
web/apps/scandic-web/i18n/tooling/diff.mjs

71 lines
2.0 KiB
JavaScript

import filteredLokalise from "./translations/en.json" with { type: "json" }
import allLokalise from "./translations-all/en.json" with { type: "json" }
import fromCodebase from "./extracted.json" with { type: "json" }
function diffArray(json1, json2) {
const diff = []
const keys1 = Object.keys(json1)
const keys2 = Object.keys(json2)
keys1.forEach((key) => {
if (!keys2.includes(key)) {
diff.push(key)
}
})
return diff
}
function resolveLabels(ids, arr) {
return ids.map((id) => {
return {
id,
...arr[id],
}
})
}
const labelsHidden = diffArray(allLokalise, filteredLokalise)
const labelsToRemove = diffArray(filteredLokalise, fromCodebase)
const labelsToAdd = diffArray(fromCodebase, filteredLokalise).filter(
(key) => !labelsHidden.includes(key)
)
if (labelsToRemove.length === 0 && labelsToAdd.length === 0) {
console.log(`Nothing has changed!`)
} else {
console.log(`Labels to REMOVE from Lokalise: ${labelsToRemove.length}`)
console.log(`Labels to ADD to Lokalise: ${labelsToAdd.length}`)
console.log(`Labels HIDDEN in Lokalise: ${labelsHidden.length}`)
console.log("")
}
if (labelsToRemove.length) {
console.log(`${labelsToRemove.length} labels to remove from Lokalise:`)
console.table(resolveLabels(labelsToRemove, filteredLokalise))
console.log("")
}
if (labelsToAdd.length) {
console.log("")
console.log(`${labelsToAdd.length} labels to add to Lokalise`)
console.table(resolveLabels(labelsToAdd, fromCodebase))
console.log("")
}
if (labelsHidden.length) {
console.log("")
console.log(`${labelsHidden.length} labels are hidden in Lokalise`)
console.table(resolveLabels(labelsHidden, allLokalise))
console.log("")
}
if (labelsToRemove.length === 0 && labelsToAdd.length === 0) {
console.log(`Nothing has changed!`)
} else {
console.log(`Labels to REMOVE from Lokalise: ${labelsToRemove.length}`)
console.log(`Labels to ADD to Lokalise: ${labelsToAdd.length}`)
console.log(`Labels HIDDEN in Lokalise: ${labelsHidden.length}`)
console.log("")
}