chinese localization!!
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
|
||||
const settings = JSON.parse(
|
||||
readFileSync(new URL("../project.inlang/settings.json", import.meta.url)),
|
||||
);
|
||||
const baseMessages = readMessages(settings.baseLocale);
|
||||
const baseKeys = Object.keys(baseMessages).filter((key) => key !== "$schema");
|
||||
|
||||
for (const locale of settings.locales) {
|
||||
const messages = readMessages(locale);
|
||||
const keys = Object.keys(messages).filter((key) => key !== "$schema");
|
||||
const missing = baseKeys.filter((key) => !(key in messages));
|
||||
const extra = keys.filter((key) => !(key in baseMessages));
|
||||
const blank = keys.filter(
|
||||
(key) => typeof messages[key] !== "string" || messages[key].trim() === "",
|
||||
);
|
||||
|
||||
if (missing.length || extra.length || blank.length) {
|
||||
throw new Error(
|
||||
[
|
||||
`${locale} catalog does not match ${settings.baseLocale}.`,
|
||||
missing.length ? `Missing: ${missing.join(", ")}` : "",
|
||||
extra.length ? `Extra: ${extra.join(", ")}` : "",
|
||||
blank.length ? `Blank: ${blank.join(", ")}` : "",
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join("\n"),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function readMessages(locale) {
|
||||
return JSON.parse(
|
||||
readFileSync(new URL(`../messages/${locale}.json`, import.meta.url)),
|
||||
);
|
||||
}
|
||||
|
||||
console.log(`Validated ${settings.locales.length} localization catalogs.`);
|
||||
Reference in New Issue
Block a user