From 7ce44a74a3b052190cfacd4bd5ee6b92cfc620ac Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 6 Jun 2018 16:46:42 +0200 Subject: Add server localization --- scripts/i18n/xliff2json.ts | 62 ++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 21 deletions(-) (limited to 'scripts/i18n/xliff2json.ts') diff --git a/scripts/i18n/xliff2json.ts b/scripts/i18n/xliff2json.ts index 34784ac11..fa5a71d65 100755 --- a/scripts/i18n/xliff2json.ts +++ b/scripts/i18n/xliff2json.ts @@ -1,33 +1,53 @@ import * as xliff12ToJs from 'xliff/xliff12ToJs' -import { readFileSync, writeFile } from 'fs' +import { unlink, readFileSync, writeFile } from 'fs' import { join } from 'path' +import { buildFileLocale, I18N_LOCALES, isDefaultLocale } from '../../shared/models/i18n/i18n' +import { eachSeries } from 'async' -// First, the player -const playerSource = join(__dirname, '../../../client/src/locale/target/player_fr.xml') -const playerTarget = join(__dirname, '../../../client/src/locale/target/player_fr.json') +const sources: string[] = [] +const availableLocales = Object.keys(I18N_LOCALES) + .filter(l => isDefaultLocale(l) === false) + .map(l => buildFileLocale(l)) -// Remove the two first lines our xliff module does not like -let playerFile = readFileSync(playerSource).toString() -playerFile = removeFirstLine(playerFile) -playerFile = removeFirstLine(playerFile) - -xliff12ToJs(playerFile, (err, res) => { - if (err) { - console.error(err) - process.exit(-1) +for (const file of [ 'server', 'player' ]) { + for (const locale of availableLocales) { + sources.push(join(__dirname, '../../../client/src/locale/target/', `${file}_${locale}.xml`)) } +} - const json = createJSONString(res) - writeFile(playerTarget, json, err => { - if (err) { - console.error(err) - process.exit(-1) - } +eachSeries(sources, (source, cb) => { + xliffFile2JSON(source, cb) +}, err => { + if (err) return handleError(err) - process.exit(0) - }) + process.exit(0) }) +function handleError (err: any) { + console.error(err) + process.exit(-1) +} + +function xliffFile2JSON (filePath: string, cb) { + const fileTarget = filePath.replace('.xml', '.json') + + // Remove the two first lines our xliff module does not like + let fileContent = readFileSync(filePath).toString() + fileContent = removeFirstLine(fileContent) + fileContent = removeFirstLine(fileContent) + + xliff12ToJs(fileContent, (err, res) => { + if (err) return cb(err) + + const json = createJSONString(res) + writeFile(fileTarget, json, err => { + if (err) return cb(err) + + return unlink(filePath, cb) + }) + }) +} + function removeFirstLine (str: string) { return str.substring(str.indexOf('\n') + 1) } -- cgit v1.2.3