Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import fs from "node:fs";
import path from "node:path";
export class JSONLocaleLoader {
public constructor(private readonly path: string) {}
public async loadTranslations() {
const locales: Record<string, Record<string, string>> = {};
const folders = fs.readdirSync(this.path);
for (const langFolder of folders) {
const langPath = path.join(this.path, langFolder);
const namespaces = fs.readdirSync(langPath);
const langData = {};
for (const namespace of namespaces) {
const namespacePath = path.join(langPath, namespace);
const files = fs.readdirSync(namespacePath);
const namespaceData = {};
for (const file of files) {
const filePath = path.join(namespacePath, file);
const jsonContent = fs.readFileSync(filePath, "utf-8");
const jsonData = JSON.parse(jsonContent);
namespaceData[file.replace(".json", "")] = jsonData;
}
langData[namespace] = namespaceData;
}
locales[langFolder] = langData;
}
return locales;
}
}
|