mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 14:06:36 +08:00
5a8722ff07
接入无 URL 前缀的 zh-CN/en,顶栏与外观设置可切换语言;选择写入 cookie 后刷新生效。
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import { readFileSync, writeFileSync, readdirSync } from 'node:fs';
|
|
import { resolve, dirname } from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const root = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
const fragmentsDir = resolve(root, 'messages/fragments');
|
|
|
|
function deepMerge(target, source) {
|
|
for (const [key, value] of Object.entries(source)) {
|
|
if (
|
|
value &&
|
|
typeof value === 'object' &&
|
|
!Array.isArray(value) &&
|
|
target[key] &&
|
|
typeof target[key] === 'object' &&
|
|
!Array.isArray(target[key])
|
|
) {
|
|
deepMerge(target[key], value);
|
|
} else {
|
|
target[key] = value;
|
|
}
|
|
}
|
|
return target;
|
|
}
|
|
|
|
function mergeLocale(locale) {
|
|
const mainPath = resolve(root, `messages/${locale}.json`);
|
|
const data = JSON.parse(readFileSync(mainPath, 'utf8'));
|
|
const suffix = `.${locale}.json`;
|
|
for (const name of readdirSync(fragmentsDir).sort()) {
|
|
if (!name.endsWith(suffix)) continue;
|
|
const frag = JSON.parse(
|
|
readFileSync(resolve(fragmentsDir, name), 'utf8'),
|
|
);
|
|
deepMerge(data, frag);
|
|
console.log(`merged ${name}`);
|
|
}
|
|
writeFileSync(mainPath, `${JSON.stringify(data, null, 2)}\n`);
|
|
}
|
|
|
|
mergeLocale('zh-CN');
|
|
mergeLocale('en');
|
|
console.log('fragments merged');
|