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 generated files
|
||||||
i18n/tooling/extracted.json
|
i18n/tooling/extracted.json
|
||||||
i18n/tooling/translations/
|
i18n/tooling/translations/
|
||||||
|
i18n/tooling/translations-all/
|
||||||
.swc
|
.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" }
|
import fromCodebase from "./extracted.json" with { type: "json" }
|
||||||
|
|
||||||
function diffArray(json1, json2) {
|
function diffArray(json1, json2) {
|
||||||
@@ -24,20 +25,24 @@ function resolveLabels(ids, arr) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const labelsToRemove = diffArray(fromLokalise, fromCodebase)
|
const labelsHidden = diffArray(allLokalise, filteredLokalise)
|
||||||
const labelsToAdd = diffArray(fromCodebase, fromLokalise)
|
const labelsToRemove = diffArray(filteredLokalise, fromCodebase)
|
||||||
|
const labelsToAdd = diffArray(fromCodebase, filteredLokalise).filter(
|
||||||
|
(key) => !labelsHidden.includes(key)
|
||||||
|
)
|
||||||
|
|
||||||
if (labelsToRemove.length === 0 && labelsToAdd.length === 0) {
|
if (labelsToRemove.length === 0 && labelsToAdd.length === 0) {
|
||||||
console.log(`Nothing has changed!`)
|
console.log(`Nothing has changed!`)
|
||||||
} else {
|
} else {
|
||||||
console.log(`Labels to REMOVE from Lokalise: ${labelsToRemove.length}`)
|
console.log(`Labels to REMOVE from Lokalise: ${labelsToRemove.length}`)
|
||||||
console.log(`Labels to ADD to Lokalise: ${labelsToAdd.length}`)
|
console.log(`Labels to ADD to Lokalise: ${labelsToAdd.length}`)
|
||||||
|
console.log(`Labels HIDDEN in Lokalise: ${labelsHidden.length}`)
|
||||||
console.log("")
|
console.log("")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (labelsToRemove.length) {
|
if (labelsToRemove.length) {
|
||||||
console.log(`${labelsToRemove.length} labels to remove from Lokalise:`)
|
console.log(`${labelsToRemove.length} labels to remove from Lokalise:`)
|
||||||
console.table(resolveLabels(labelsToRemove, fromLokalise))
|
console.table(resolveLabels(labelsToRemove, filteredLokalise))
|
||||||
console.log("")
|
console.log("")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,10 +53,18 @@ if (labelsToAdd.length) {
|
|||||||
console.log("")
|
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) {
|
if (labelsToRemove.length === 0 && labelsToAdd.length === 0) {
|
||||||
console.log(`Nothing has changed!`)
|
console.log(`Nothing has changed!`)
|
||||||
} else {
|
} else {
|
||||||
console.log(`Labels to REMOVE from Lokalise: ${labelsToRemove.length}`)
|
console.log(`Labels to REMOVE from Lokalise: ${labelsToRemove.length}`)
|
||||||
console.log(`Labels to ADD to Lokalise: ${labelsToAdd.length}`)
|
console.log(`Labels to ADD to Lokalise: ${labelsToAdd.length}`)
|
||||||
|
console.log(`Labels HIDDEN in Lokalise: ${labelsHidden.length}`)
|
||||||
console.log("")
|
console.log("")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,13 @@ import { config } from "dotenv"
|
|||||||
|
|
||||||
config({ path: `${process.cwd()}/.env.local` })
|
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() {
|
async function main() {
|
||||||
const { download } = await import("./lokalise")
|
const { download } = await import("./lokalise")
|
||||||
await download(extractPath)
|
await download(filteredExtractPath, false)
|
||||||
|
await download(allExtractPath, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ const perf = new PerformanceObserver((items) => {
|
|||||||
}
|
}
|
||||||
performance.clearMeasures()
|
performance.clearMeasures()
|
||||||
})
|
})
|
||||||
perf.observe({ type: "measure" })
|
|
||||||
|
|
||||||
async function waitUntilUploadDone(processId: string) {
|
async function waitUntilUploadDone(processId: string) {
|
||||||
return new Promise<void>((resolve, reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
@@ -87,6 +86,8 @@ async function waitUntilUploadDone(processId: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function upload(filepath: string) {
|
export async function upload(filepath: string) {
|
||||||
|
perf.observe({ type: "measure" })
|
||||||
|
|
||||||
try {
|
try {
|
||||||
log(`Uploading ${filepath}...`)
|
log(`Uploading ${filepath}...`)
|
||||||
|
|
||||||
@@ -143,9 +144,15 @@ export async function upload(filepath: string) {
|
|||||||
await performanceMetrics
|
await performanceMetrics
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function download(extractPath: string) {
|
export async function download(extractPath: string, all: boolean = false) {
|
||||||
|
perf.observe({ type: "measure" })
|
||||||
|
|
||||||
try {
|
try {
|
||||||
log("Downloading translations...")
|
log(
|
||||||
|
all
|
||||||
|
? "Downloading all translations..."
|
||||||
|
: "Downloading filtered translations..."
|
||||||
|
)
|
||||||
|
|
||||||
performance.mark("downloadStart")
|
performance.mark("downloadStart")
|
||||||
|
|
||||||
@@ -158,7 +165,7 @@ export async function download(extractPath: string) {
|
|||||||
icu_numeric: true,
|
icu_numeric: true,
|
||||||
bundle_structure: "%LANG_ISO%.%FORMAT%",
|
bundle_structure: "%LANG_ISO%.%FORMAT%",
|
||||||
directory_prefix: "",
|
directory_prefix: "",
|
||||||
filter_data: ["translated", "nonhidden"],
|
filter_data: all ? [] : ["translated", "nonhidden"],
|
||||||
export_empty_as: "skip",
|
export_empty_as: "skip",
|
||||||
})
|
})
|
||||||
performance.mark("lokaliseDownloadInitEnd")
|
performance.mark("lokaliseDownloadInitEnd")
|
||||||
|
|||||||
Reference in New Issue
Block a user