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; } } |