feat: segment
parent
b470aca534
commit
fedfc96baa
|
|
@ -6,7 +6,7 @@ on:
|
|||
branches:
|
||||
- dev
|
||||
paths-ignore:
|
||||
- 'test/**'
|
||||
# - 'test/**'
|
||||
- '.run/**'
|
||||
- '.github/**'
|
||||
- '/*.*'
|
||||
|
|
@ -79,8 +79,9 @@ jobs:
|
|||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: ${{ github.ref }}
|
||||
- uses: casperdcl/push-dir@v1
|
||||
- name: Push output
|
||||
if: success()
|
||||
uses: casperdcl/push-dir@v1
|
||||
with:
|
||||
message: "build: static localizations"
|
||||
branch: main
|
||||
|
|
|
|||
|
|
@ -0,0 +1,105 @@
|
|||
import Bluebird from 'bluebird';
|
||||
import { getSegment, stringify } from 'novel-segment-cli';
|
||||
import { EnumDictDatabase } from '@novel-segment/types';
|
||||
import { Segment } from 'novel-segment/lib';
|
||||
import { cn2tw_min, tw2cn_min } from '@lazy-cjk/zh-convert/min';
|
||||
import { load as loadSynonym } from '@novel-segment/loaders/segment/synonym';
|
||||
import { load as loadTable } from '@novel-segment/loaders/segment/index';
|
||||
import { join } from 'path';
|
||||
import { __ROOT } from '../../test/__root';
|
||||
|
||||
const __dict_table_txt = join(__ROOT, 'src', 'dict', 'table.txt');
|
||||
const __dict_synonym_txt = join(__ROOT, 'src', 'dict', 'synonym.txt');
|
||||
|
||||
let inited: Segment;
|
||||
|
||||
export function initIdeaSegmentText()
|
||||
{
|
||||
return Bluebird.resolve()
|
||||
.then(async () =>
|
||||
{
|
||||
if (!inited)
|
||||
{
|
||||
inited = await getSegment({
|
||||
//disableCache: true,
|
||||
optionsSegment: {
|
||||
nodeNovelMode: true,
|
||||
},
|
||||
}).then(async (segment) =>
|
||||
{
|
||||
const db_dict = segment.getDictDatabase(EnumDictDatabase.TABLE);
|
||||
const db_synonym = segment.getDictDatabase(EnumDictDatabase.SYNONYM);
|
||||
|
||||
const autoCjk = db_dict.options.autoCjk;
|
||||
db_dict.options.autoCjk = true;
|
||||
|
||||
/*
|
||||
db_dict
|
||||
.add(['選項卡', 0x100000, 0])
|
||||
.add(['標籤頁', 0x100000, 0])
|
||||
.add(['標簽頁', 0x100000, 0])
|
||||
;
|
||||
*/
|
||||
|
||||
/*
|
||||
db_dict
|
||||
.remove('复上')
|
||||
.remove('复分析')
|
||||
.remove('为重')
|
||||
.remove('出新')
|
||||
;
|
||||
*/
|
||||
|
||||
await loadTable(__dict_table_txt)
|
||||
.each(data =>
|
||||
{
|
||||
return db_dict.add(data as any);
|
||||
})
|
||||
;
|
||||
|
||||
db_dict.options.autoCjk = autoCjk;
|
||||
|
||||
await loadSynonym(__dict_synonym_txt)
|
||||
.each(data =>
|
||||
{
|
||||
return db_synonym.add(data as any, false, true);
|
||||
})
|
||||
;
|
||||
|
||||
/*
|
||||
db_synonym
|
||||
.add(['頁籤', '選項卡', '標籤頁', '標簽頁', '选项卡', '标签页', '标签页'])
|
||||
.add(['視窗', '窗口', '窗口'])
|
||||
.add(['預設', '默認', '默认'])
|
||||
.add(['列印', '打印', '打印'])
|
||||
.add(['貼上', '粘貼', '粘贴'])
|
||||
.add(['剪貼簿', '剪貼板', '剪贴板'])
|
||||
.add(['剪下', '剪切', '剪切'])
|
||||
.add(['註釋', '注釋', '注释'])
|
||||
.add(['唯讀', '只讀', '只读'])
|
||||
.add(['選單', '菜單', '菜单'])
|
||||
.add(['日誌', '日志'])
|
||||
.add(['註解', '注解', '注解'])
|
||||
.add(['磁碟', '磁盤', '磁盘'])
|
||||
;
|
||||
*/
|
||||
|
||||
return inited = segment;
|
||||
})
|
||||
}
|
||||
return inited
|
||||
})
|
||||
}
|
||||
|
||||
export function processTextSync(input: string, opts?: {
|
||||
toCN?: boolean,
|
||||
noSeg?: boolean,
|
||||
})
|
||||
{
|
||||
opts ??= {};
|
||||
let text = opts.noSeg ? input : stringify(inited.doSegment(input));
|
||||
|
||||
text = (opts.toCN ? tw2cn_min : cn2tw_min)(text);
|
||||
|
||||
return text
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
import { outputJSON, readJSON } from 'fs-extra';
|
||||
import { join } from 'path';
|
||||
import { __ROOT } from '../__root';
|
||||
import { initIdeaSegmentText, processTextSync } from '../../src/lib/segment';
|
||||
|
||||
export default Promise.all([
|
||||
readJSON(join(__ROOT, 'localizations', 'zh_TW.json')),
|
||||
|
|
@ -10,6 +11,7 @@ export default Promise.all([
|
|||
])
|
||||
.then(ls =>
|
||||
{
|
||||
console.log(`merge localizations`);
|
||||
|
||||
let tw = ls[2];
|
||||
|
||||
|
|
@ -29,10 +31,25 @@ export default Promise.all([
|
|||
})
|
||||
.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`);
|
||||
|
||||
for (const key of Object.keys(json))
|
||||
{
|
||||
json[key] = processTextSync(json[key]);
|
||||
}
|
||||
|
||||
console.log(`build zh_Hant.json`);
|
||||
|
||||
await outputJSON(join(__ROOT, 'output', 'localizations', 'zh_Hant.json'), json, {
|
||||
spaces: 2,
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue