X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=scripts%2Fi18n%2Fcreate-custom-files.ts;h=c4f8411e133b078e3fdbda97f81c577072d9bc04;hb=3d52b300ea79bec21f090e2447c4808307078618;hp=3895b3b9d74203e9c759cc05da610f3e8e990770;hpb=e945b184a0f29b47c33bbd05578f3493ca9c8e6c;p=github%2FChocobozzz%2FPeerTube.git diff --git a/scripts/i18n/create-custom-files.ts b/scripts/i18n/create-custom-files.ts index 3895b3b9d..c4f8411e1 100755 --- a/scripts/i18n/create-custom-files.ts +++ b/scripts/i18n/create-custom-files.ts @@ -1,16 +1,27 @@ import * as jsToXliff12 from 'xliff/jsToXliff12' import { writeFile } from 'fs' import { join } from 'path' +import { + buildLanguages, + VIDEO_CATEGORIES, + VIDEO_IMPORT_STATES, + VIDEO_LICENCES, + VIDEO_PRIVACIES, + VIDEO_STATES +} from '../../server/initializers/constants' +import { values } from 'lodash' -// First, the player -const playerSource = join(__dirname, '../../../client/src/locale/source/videojs_en_US.json') -const playerTarget = join(__dirname, '../../../client/src/locale/source/player_en_US.xml') +type TranslationType = { + target: string + data: { [id: string]: string } +} -const videojs = require(playerSource) +const videojs = require(join(__dirname, '../../../client/src/locale/source/videojs_en_US.json')) const playerKeys = { 'Quality': 'Quality', 'Auto': 'Auto', 'Speed': 'Speed', + 'Subtitles/CC': 'Subtitles/CC', 'peers': 'peers', 'Go to the video page': 'Go to the video page', 'Settings': 'Settings', @@ -19,31 +30,77 @@ const playerKeys = { 'Copy the video URL at the current time': 'Copy the video URL at the current time', 'Copy embed code': 'Copy embed code' } +const playerTranslations = { + target: join(__dirname, '../../../client/src/locale/source/player_en_US.xml'), + data: Object.assign({}, videojs, playerKeys) +} -const obj = { - resources: { - namespace1: {} - } +// Server keys +const serverKeys: any = {} +values(VIDEO_CATEGORIES) + .concat(values(VIDEO_LICENCES)) + .concat(values(VIDEO_PRIVACIES)) + .concat(values(VIDEO_STATES)) + .concat(values(VIDEO_IMPORT_STATES)) + .forEach(v => serverKeys[v] = v) + +// More keys +Object.assign(serverKeys, { + 'Misc': 'Misc', + 'Unknown': 'Unknown' +}) + +const serverTranslations = { + target: join(__dirname, '../../../client/src/locale/source/server_en_US.xml'), + data: serverKeys } -for (const sourceObject of [ videojs, playerKeys ]) { - Object.keys(sourceObject).forEach(k => obj.resources.namespace1[ k ] = { source: sourceObject[ k ] }) +// ISO 639 keys +const languageKeys: any = {} +const languages = buildLanguages() +Object.keys(languages).forEach(k => languageKeys[languages[k]] = languages[k]) + +const iso639Translations = { + target: join(__dirname, '../../../client/src/locale/source/iso639_en_US.xml'), + data: languageKeys } -jsToXliff12(obj, (err, res) => { - if (err) { - console.error(err) - process.exit(-1) - } +saveToXliffFile(playerTranslations, err => { + if (err) return handleError(err) - writeFile(playerTarget, res, err => { - if (err) { - console.error(err) - process.exit(-1) - } + saveToXliffFile(serverTranslations, err => { + if (err) return handleError(err) + + saveToXliffFile(iso639Translations, err => { + if (err) return handleError(err) - process.exit(0) + process.exit(0) + }) }) }) // Then, the server strings + +function saveToXliffFile (jsonTranslations: TranslationType, cb: Function) { + const obj = { + resources: { + namespace1: {} + } + } + Object.keys(jsonTranslations.data).forEach(k => obj.resources.namespace1[ k ] = { source: jsonTranslations.data[ k ] }) + + jsToXliff12(obj, (err, res) => { + if (err) return cb(err) + + writeFile(jsonTranslations.target, res, err => { + if (err) return cb(err) + + return cb(null) + }) + }) +} + +function handleError (err: any) { + console.error(err) + process.exit(-1) +} \ No newline at end of file