X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=scripts%2Fi18n%2Fxliff2json.ts;h=c607395615399100759c75e27ab2a004a5a7b507;hb=749c7247ae9042a74d132afda0c7eefab66a0428;hp=34784ac111c95245dbbc988e574f126a5fb0892e;hpb=e945b184a0f29b47c33bbd05578f3493ca9c8e6c;p=github%2FChocobozzz%2FPeerTube.git diff --git a/scripts/i18n/xliff2json.ts b/scripts/i18n/xliff2json.ts index 34784ac11..c60739561 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, LOCALE_FILES } 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 LOCALE_FILES) { + 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) }