feat: add support for hidden labels when diffing Lokalise labels
This commit is contained in:
1
apps/scandic-web/.gitignore
vendored
1
apps/scandic-web/.gitignore
vendored
@@ -62,4 +62,5 @@ variables.css
|
||||
# i18n generated files
|
||||
i18n/tooling/extracted.json
|
||||
i18n/tooling/translations/
|
||||
i18n/tooling/translations-all/
|
||||
.swc
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import fromLokalise from "./translations/en.json" with { type: "json" }
|
||||
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) {
|
||||
@@ -24,20 +25,24 @@ function resolveLabels(ids, arr) {
|
||||
})
|
||||
}
|
||||
|
||||
const labelsToRemove = diffArray(fromLokalise, fromCodebase)
|
||||
const labelsToAdd = diffArray(fromCodebase, fromLokalise)
|
||||
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, fromLokalise))
|
||||
console.table(resolveLabels(labelsToRemove, filteredLokalise))
|
||||
console.log("")
|
||||
}
|
||||
|
||||
@@ -48,10 +53,18 @@ if (labelsToAdd.length) {
|
||||
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("")
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@ import { config } from "dotenv"
|
||||
|
||||
config({ path: `${process.cwd()}/.env.local` })
|
||||
|
||||
const extractPath = path.resolve(__dirname, "translations")
|
||||
const filteredExtractPath = path.resolve(__dirname, "translations")
|
||||
const allExtractPath = path.resolve(__dirname, "translations-all")
|
||||
|
||||
async function main() {
|
||||
const { download } = await import("./lokalise")
|
||||
await download(extractPath)
|
||||
await download(filteredExtractPath, false)
|
||||
await download(allExtractPath, true)
|
||||
}
|
||||
|
||||
main()
|
||||
|
||||
@@ -36,7 +36,6 @@ const perf = new PerformanceObserver((items) => {
|
||||
}
|
||||
performance.clearMeasures()
|
||||
})
|
||||
perf.observe({ type: "measure" })
|
||||
|
||||
async function waitUntilUploadDone(processId: string) {
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
@@ -87,6 +86,8 @@ async function waitUntilUploadDone(processId: string) {
|
||||
}
|
||||
|
||||
export async function upload(filepath: string) {
|
||||
perf.observe({ type: "measure" })
|
||||
|
||||
try {
|
||||
log(`Uploading ${filepath}...`)
|
||||
|
||||
@@ -143,9 +144,15 @@ export async function upload(filepath: string) {
|
||||
await performanceMetrics
|
||||
}
|
||||
|
||||
export async function download(extractPath: string) {
|
||||
export async function download(extractPath: string, all: boolean = false) {
|
||||
perf.observe({ type: "measure" })
|
||||
|
||||
try {
|
||||
log("Downloading translations...")
|
||||
log(
|
||||
all
|
||||
? "Downloading all translations..."
|
||||
: "Downloading filtered translations..."
|
||||
)
|
||||
|
||||
performance.mark("downloadStart")
|
||||
|
||||
@@ -158,7 +165,7 @@ export async function download(extractPath: string) {
|
||||
icu_numeric: true,
|
||||
bundle_structure: "%LANG_ISO%.%FORMAT%",
|
||||
directory_prefix: "",
|
||||
filter_data: ["translated", "nonhidden"],
|
||||
filter_data: all ? [] : ["translated", "nonhidden"],
|
||||
export_empty_as: "skip",
|
||||
})
|
||||
performance.mark("lokaliseDownloadInitEnd")
|
||||
|
||||
Reference in New Issue
Block a user