From ad912c3de64939cc2cd128ec45a4b32cb548f8d1 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 7 Nov 2019 12:00:09 +0100 Subject: Update server and player --- scripts/i18n/xliff2json.ts | 96 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 4 deletions(-) (limited to 'scripts/i18n') diff --git a/scripts/i18n/xliff2json.ts b/scripts/i18n/xliff2json.ts index 68fc95f34..d15039bb9 100755 --- a/scripts/i18n/xliff2json.ts +++ b/scripts/i18n/xliff2json.ts @@ -2,14 +2,55 @@ import { registerTSPaths } from '../../server/helpers/register-ts-paths' registerTSPaths() import * as xliff12ToJs from 'xliff/xliff12ToJs' -import { readFileSync, unlink, writeFile } from 'fs-extra' +import { readFileSync, readJSON, unlink, writeFile, writeJSON, existsSync, exists, pathExists } from 'fs-extra' import { join } from 'path' import { buildFileLocale, I18N_LOCALES, isDefaultLocale } from '../../shared/models/i18n/i18n' import { eachSeries } from 'async' const sources: string[] = [] -const availableLocales = Object.keys(I18N_LOCALES) - .filter(l => isDefaultLocale(l) === false) +const l = [ + 'ar-001', + 'ca-ES', + 'cs-CZ', + 'da-DK', + 'de-DE', + 'el-GR', + 'en-GB', + 'en-US', + 'eo', + 'es-ES', + 'eu-ES', + 'fa-IR', + 'fi-FI', + 'fr-FR', + 'gd', + 'gl-ES', + 'hu-HU', + 'it-IT', + 'ja-JP', + 'jbo', + 'ko-KR', + 'lt-LT', + 'nb-NO', + 'nl-NL', + 'oc', + 'pl-PL', + 'pt-BR', + 'pt-PT', + 'ru-RU', + 'sk-SK', + 'sl-SI', + 'sv-SE', + 'ta', + 'th-TH', + 'tr-TR', + 'uk-UA', + 'vi-VN', + 'zh-Hans-CN', + 'zh-Hant-TW' +] + +const availableLocales = l.filter(l => isDefaultLocale(l) === false) .map(l => buildFileLocale(l)) for (const file of [ 'player', 'server', 'iso639' ]) { @@ -26,7 +67,7 @@ eachSeries(sources, (source, cb) => { mergeISO639InServer(err => { if (err) return handleError(err) - process.exit(0) + injectMissingTranslations().then(() => process.exit(0)) }) }) @@ -38,6 +79,11 @@ function handleError (err: any) { function xliffFile2JSON (filePath: string, cb) { const fileTarget = filePath.replace('.xml', '.json') + if (!existsSync(filePath)) { + console.log('No file %s exists.', filePath) + return cb() + } + // Remove the two first lines our xliff module does not like let fileContent = readFileSync(filePath).toString() fileContent = removeFirstLine(fileContent) @@ -60,6 +106,15 @@ function mergeISO639InServer (cb) { const serverPath = join(__dirname, '../../../client/src/locale/target/', `server_${locale}.json`) const iso639Path = join(__dirname, '../../../client/src/locale/target/', `iso639_${locale}.json`) + if (!existsSync(serverPath)) { + console.log('No file %s exists.', serverPath) + return cb() + } + if (!existsSync(iso639Path)) { + console.log('No file %s exists.', iso639Path) + return cb() + } + const resServer = readFileSync(serverPath).toString() const resISO639 = readFileSync(iso639Path).toString() @@ -89,3 +144,36 @@ function createJSONString (obj: any) { return JSON.stringify(res) } + +async function injectMissingTranslations () { + const baseServer = await readJSON(join(__dirname, '../../../client/src/locale/server.en-US.json')) + Object.keys(baseServer).forEach(k => baseServer[k] = '') + + for (const locale of availableLocales) { + const serverPath = join(__dirname, '../../../client/src/locale/target/', `server_${locale}.json`) + if (!await pathExists(serverPath)) { + console.log('No file exists to inject missing translations: %s.', serverPath) + continue + } + + let serverJSON = await readJSON(serverPath) + + serverJSON = Object.assign({}, baseServer, serverJSON) + await writeJSON(serverPath, serverJSON) + } + + const basePlayer = await readJSON(join(__dirname, '../../../client/src/locale/player.en-US.json')) + Object.keys(basePlayer).forEach(k => basePlayer[k] = '') + for (const locale of availableLocales) { + const serverPath = join(__dirname, '../../../client/src/locale/target/', `player_${locale}.json`) + if (!await pathExists(serverPath)) { + console.log('No file exists to inject missing translations: %s.', serverPath) + continue + } + + let serverJSON = await readJSON(serverPath) + + serverJSON = Object.assign({}, basePlayer, serverJSON) + await writeJSON(serverPath, serverJSON) + } +} -- cgit v1.2.3