2021-12-08 01:34:50 +01:00
|
|
|
import fs from "fs";
|
|
|
|
|
|
|
|
const translationsBasePath = "./translations";
|
|
|
|
const fallbackLanguage = process.env.FALLBACK_LANGUAGE || "en-US";
|
|
|
|
|
|
|
|
const getAllLanguagesByFiles = (dirPath: string, languages: Array<LanguageFound> | undefined) => {
|
|
|
|
const files = fs.readdirSync(dirPath);
|
|
|
|
languages = languages || new Array<LanguageFound>();
|
|
|
|
|
|
|
|
files.forEach(function (file) {
|
|
|
|
if (fs.statSync(dirPath + "/" + file).isDirectory()) {
|
|
|
|
languages = getAllLanguagesByFiles(dirPath + "/" + file, languages);
|
|
|
|
} else {
|
|
|
|
const parts = file.split(".");
|
|
|
|
|
|
|
|
if (parts.length !== 3 || parts[0] !== "index" || parts[2] !== "json") {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
const rawData = fs.readFileSync(dirPath + "/" + file, "utf-8");
|
|
|
|
const languageObject = JSON.parse(rawData);
|
|
|
|
|
2022-01-07 01:50:47 +01:00
|
|
|
if (
|
|
|
|
"language" in languageObject && typeof languageObject.language === "string" &&
|
|
|
|
"country" in languageObject && typeof languageObject.country === "string" &&
|
|
|
|
"default" in languageObject && typeof languageObject.default === "boolean"
|
|
|
|
) {
|
|
|
|
languages?.push({
|
|
|
|
id: parts[1],
|
|
|
|
language: languageObject.language,
|
|
|
|
country: languageObject.country,
|
|
|
|
default: languageObject.default
|
|
|
|
});
|
|
|
|
}
|
2021-12-08 01:34:50 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
return languages;
|
|
|
|
};
|
|
|
|
|
|
|
|
const getFallbackLanguageObject = (dirPath: string, languageObject: Object | undefined) => {
|
|
|
|
const files = fs.readdirSync(dirPath);
|
|
|
|
languageObject = languageObject || {};
|
|
|
|
|
|
|
|
files.forEach(function (file) {
|
|
|
|
if (fs.statSync(dirPath + "/" + file).isDirectory()) {
|
|
|
|
languageObject = getFallbackLanguageObject(dirPath + "/" + file, languageObject);
|
|
|
|
} else {
|
|
|
|
const parts = file.split(".");
|
|
|
|
|
|
|
|
if (parts.length !== 3 || parts[1] !== fallbackLanguage || parts[2] !== "json") {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
const rawData = fs.readFileSync(dirPath + "/" + file, "utf-8");
|
|
|
|
languageObject = { ...languageObject, ...JSON.parse(rawData) };
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
return languageObject;
|
|
|
|
};
|
|
|
|
|
|
|
|
export const languages = getAllLanguagesByFiles(translationsBasePath, undefined);
|
|
|
|
export const fallbackLanguageObject = getFallbackLanguageObject(translationsBasePath, undefined);
|