]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - scripts/i18n/create-custom-files.ts
Add missing translations in embed template
[github/Chocobozzz/PeerTube.git] / scripts / i18n / create-custom-files.ts
CommitLineData
e945b184 1import * as jsToXliff12 from 'xliff/jsToXliff12'
c9d5c64f 2import { writeFile } from 'fs-extra'
e945b184 3import { join } from 'path'
7e5f9f00
C
4import {
5 buildLanguages,
6 VIDEO_CATEGORIES,
7 VIDEO_IMPORT_STATES,
8 VIDEO_LICENCES,
9 VIDEO_PRIVACIES,
10 VIDEO_STATES
11} from '../../server/initializers/constants'
7ce44a74 12import { values } from 'lodash'
e945b184 13
7ce44a74
C
14type TranslationType = {
15 target: string
16 data: { [id: string]: string }
17}
e945b184 18
7ce44a74 19const videojs = require(join(__dirname, '../../../client/src/locale/source/videojs_en_US.json'))
e945b184
C
20const playerKeys = {
21 'Quality': 'Quality',
22 'Auto': 'Auto',
23 'Speed': 'Speed',
16f7022b 24 'Subtitles/CC': 'Subtitles/CC',
e945b184
C
25 'peers': 'peers',
26 'Go to the video page': 'Go to the video page',
27 'Settings': 'Settings',
28 'Uses P2P, others may know you are watching this video.': 'Uses P2P, others may know you are watching this video.',
29 'Copy the video URL': 'Copy the video URL',
30 'Copy the video URL at the current time': 'Copy the video URL at the current time',
31 'Copy embed code': 'Copy embed code'
32}
7ce44a74
C
33const playerTranslations = {
34 target: join(__dirname, '../../../client/src/locale/source/player_en_US.xml'),
35 data: Object.assign({}, videojs, playerKeys)
e945b184
C
36}
37
7ce44a74
C
38// Server keys
39const serverKeys: any = {}
40values(VIDEO_CATEGORIES)
41 .concat(values(VIDEO_LICENCES))
42 .concat(values(VIDEO_PRIVACIES))
7e5f9f00
C
43 .concat(values(VIDEO_STATES))
44 .concat(values(VIDEO_IMPORT_STATES))
ad3fa0c5
C
45 .concat([
46 'This video does not exist.',
47 'We cannot fetch the video. Please try again later.',
48 'Sorry',
49 'This video is not available because the remote instance is not responding.'
50 ])
7ce44a74
C
51 .forEach(v => serverKeys[v] = v)
52
7ce44a74
C
53// More keys
54Object.assign(serverKeys, {
55 'Misc': 'Misc',
56 'Unknown': 'Unknown'
57})
58
59const serverTranslations = {
60 target: join(__dirname, '../../../client/src/locale/source/server_en_US.xml'),
61 data: serverKeys
e945b184
C
62}
63
850c1bf7
C
64// ISO 639 keys
65const languageKeys: any = {}
66const languages = buildLanguages()
67Object.keys(languages).forEach(k => languageKeys[languages[k]] = languages[k])
68
69const iso639Translations = {
70 target: join(__dirname, '../../../client/src/locale/source/iso639_en_US.xml'),
71 data: languageKeys
72}
73
7ce44a74
C
74saveToXliffFile(playerTranslations, err => {
75 if (err) return handleError(err)
76
77 saveToXliffFile(serverTranslations, err => {
78 if (err) return handleError(err)
e945b184 79
850c1bf7
C
80 saveToXliffFile(iso639Translations, err => {
81 if (err) return handleError(err)
82
83 process.exit(0)
84 })
7ce44a74 85 })
e945b184
C
86})
87
88// Then, the server strings
f07d6385 89
7ce44a74
C
90function saveToXliffFile (jsonTranslations: TranslationType, cb: Function) {
91 const obj = {
92 resources: {
93 namespace1: {}
94 }
95 }
96 Object.keys(jsonTranslations.data).forEach(k => obj.resources.namespace1[ k ] = { source: jsonTranslations.data[ k ] })
97
f07d6385
C
98 jsToXliff12(obj, (err, res) => {
99 if (err) return cb(err)
100
7ce44a74 101 writeFile(jsonTranslations.target, res, err => {
f07d6385
C
102 if (err) return cb(err)
103
104 return cb(null)
105 })
106 })
107}
7ce44a74
C
108
109function handleError (err: any) {
110 console.error(err)
111 process.exit(-1)
ad3fa0c5 112}