From 2009d139958feb2632187a8510991b6bb4d058c0 Mon Sep 17 00:00:00 2001 From: the1812 Date: Thu, 6 Jun 2019 00:23:10 +0800 Subject: [PATCH] Add i18n-sync script --- builder/node/i18n-sync/i18n-sync.js | 15 +++++++++++---- builder/node/i18n-sync/i18n-sync.ts | 17 ++++++++++++----- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/builder/node/i18n-sync/i18n-sync.js b/builder/node/i18n-sync/i18n-sync.js index e11215b50..b7c70eb51 100644 --- a/builder/node/i18n-sync/i18n-sync.js +++ b/builder/node/i18n-sync/i18n-sync.js @@ -28,11 +28,18 @@ const extractKeys = (language) => { return new LanguageKeys(mapKeys, regexKeys); }; const mainLanguageKey = extractKeys(readFile(path_1.join(config.folder, `i18n.${config.mainLanguage}.js`))); -const targetLanguages = config.targetLanguages.map(l => readFile(path_1.join(config.folder, `i18n.${l}.js`))); +const targetLanguages = config.targetLanguages.map(name => { + const path = path_1.join(config.folder, `i18n.${name}.js`); + return { + name, + path, + text: readFile(path) + }; +}); targetLanguages.forEach(language => { - const diff = mainLanguageKey.diff(extractKeys(language)); - const output = language + const diff = mainLanguageKey.diff(extractKeys(language.text)); + const output = language.text .replace(/([\s\n]*\[`\*`)/, `\n ${diff.mapKeys.map(k => '[`' + k + '`, `TODO:`],').join('\n ')}$1`) .replace(/(\]\);?[\s\n]*export default)/, ` ${diff.regexKeys.map(k => '[' + k + ', `TODO:`],').join('\n ')}\n$1`); - console.log(output); + fs_1.writeFileSync(language.path, output, { encoding: 'utf-8' }); }); diff --git a/builder/node/i18n-sync/i18n-sync.ts b/builder/node/i18n-sync/i18n-sync.ts index f709aa47f..d2d1baeed 100644 --- a/builder/node/i18n-sync/i18n-sync.ts +++ b/builder/node/i18n-sync/i18n-sync.ts @@ -1,4 +1,4 @@ -import { readFileSync } from 'fs'; +import { readFileSync, writeFileSync } from 'fs'; import { join } from 'path'; interface Config { @@ -38,11 +38,18 @@ const extractKeys = (language: string) => { } const mainLanguageKey = extractKeys(readFile(join(config.folder, `i18n.${config.mainLanguage}.js`))) -const targetLanguages = config.targetLanguages.map(l => readFile(join(config.folder, `i18n.${l}.js`))) +const targetLanguages = config.targetLanguages.map(name => { + const path = join(config.folder, `i18n.${name}.js`) + return { + name, + path, + text: readFile(path) + } +}) targetLanguages.forEach(language => { - const diff = mainLanguageKey.diff(extractKeys(language)) - const output = language + const diff = mainLanguageKey.diff(extractKeys(language.text)) + const output = language.text .replace(/([\s\n]*\[`\*`)/, `\n ${diff.mapKeys.map(k => '[`' + k + '`, `TODO:`],').join('\n ')}$1`) .replace(/(\]\);?[\s\n]*export default)/, ` ${diff.regexKeys.map(k => '[' + k + ', `TODO:`],').join('\n ')}\n$1`) - console.log(output) + writeFileSync(language.path, output, { encoding: 'utf-8' }) }) \ No newline at end of file