112 lines
2.2 KiB
TypeScript
112 lines
2.2 KiB
TypeScript
import { outputJSON, readFile, readJSON } from 'fs-extra';
|
|
import { join } from 'path';
|
|
import { __ROOT, __ROOT_OUTPUT } from '../__root';
|
|
import { initIdeaSegmentText, processTextSync } from '../../src/lib/segment';
|
|
import { tw2cn_min } from '@lazy-cjk/zh-convert/min';
|
|
import { parse } from 'json5'
|
|
|
|
function readJSON5(path: string)
|
|
{
|
|
return readFile(path).then(buf => parse(buf.toString()))
|
|
}
|
|
|
|
export default Promise.all([
|
|
readJSON(join(__ROOT, 'localizations', 'zh_TW.json')),
|
|
readJSON(join(__ROOT, 'localizations', 'zh-Hans.json')),
|
|
readJSON(join(__ROOT, 'localizations', 'zh_TW.json')),
|
|
readJSON5(join(__ROOT, 'localizations', 'my.json5')),
|
|
])
|
|
.then(ls =>
|
|
{
|
|
console.log(`merge localizations`);
|
|
|
|
let tw = ls[2];
|
|
|
|
Object.entries(tw)
|
|
.forEach(([key, value]) =>
|
|
{
|
|
if (key === value)
|
|
{
|
|
delete tw[key]
|
|
}
|
|
})
|
|
;
|
|
|
|
ls.unshift(ls[1]);
|
|
|
|
return ls.reduce((a, b) => Object.assign(a, b), {}) as Record<string, string>
|
|
})
|
|
.then(async (json) =>
|
|
{
|
|
console.log(`output zh_Hant.json`);
|
|
|
|
await outputJSON(join(__ROOT, 'localizations', 'zh_Hant.json'), json, {
|
|
spaces: 2,
|
|
});
|
|
|
|
console.log(`init Segment`);
|
|
|
|
await initIdeaSegmentText();
|
|
|
|
console.log(`process zh_Hant.json`);
|
|
|
|
const ignoreProcessList = [
|
|
'zh_Hant',
|
|
'zh_Hans',
|
|
];
|
|
|
|
const json_hans: typeof json = {};
|
|
|
|
for (const key of Object.keys(json))
|
|
{
|
|
let value = json[key];
|
|
let _do = true;
|
|
|
|
if (typeof value === 'undefined' || value === null || key === value || typeof value !== 'string' && typeof value !== 'number')
|
|
{
|
|
_do = false;
|
|
}
|
|
|
|
if (_do)
|
|
{
|
|
if (ignoreProcessList.includes(key))
|
|
{
|
|
json_hans[key] = json[key] = value;
|
|
}
|
|
else
|
|
{
|
|
value = processTextSync(value);
|
|
|
|
if (key === value)
|
|
{
|
|
_do = false;
|
|
}
|
|
else
|
|
{
|
|
json[key] = value;
|
|
json_hans[key] = tw2cn_min(value);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!_do)
|
|
{
|
|
delete json[key]
|
|
}
|
|
}
|
|
|
|
console.log(`build zh_Hant.json`);
|
|
|
|
await Promise.all([
|
|
outputJSON(join(__ROOT_OUTPUT, 'localizations', 'zh_Hant.json'), json, {
|
|
spaces: 2,
|
|
}),
|
|
outputJSON(join(__ROOT_OUTPUT, 'localizations', 'zh_Hans.json'), json_hans, {
|
|
spaces: 2,
|
|
}),
|
|
])
|
|
|
|
console.log(`build done.`)
|
|
})
|
|
;
|