]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - scripts/i18n/create-custom-files.ts
Fix live migrations
[github/Chocobozzz/PeerTube.git] / scripts / i18n / create-custom-files.ts
... / ...
CommitLineData
1import { writeJSON } from 'fs-extra'
2import { values } from 'lodash'
3import { join } from 'path'
4import { registerTSPaths } from '../../server/helpers/register-ts-paths'
5import {
6 buildLanguages,
7 VIDEO_CATEGORIES,
8 VIDEO_IMPORT_STATES,
9 VIDEO_LICENCES,
10 VIDEO_PLAYLIST_PRIVACIES,
11 VIDEO_PLAYLIST_TYPES,
12 VIDEO_PRIVACIES,
13 VIDEO_STATES
14} from '../../server/initializers/constants'
15import { I18N_LOCALES } from '../../shared/core-utils/i18n'
16
17registerTSPaths()
18
19const videojs = require(join(__dirname, '../../../client/src/locale/videojs.en-US.json'))
20const playerKeys = {
21 'Quality': 'Quality',
22 'Auto': 'Auto',
23 'Speed': 'Speed',
24 'Subtitles/CC': 'Subtitles/CC',
25 'peers': 'peers',
26 'peer': 'peer',
27 'Go to the video page': 'Go to the video page',
28 'Settings': 'Settings',
29 'Watching this video may reveal your IP address to others.': 'Watching this video may reveal your IP address to others.',
30 'Copy the video URL': 'Copy the video URL',
31 'Copy the video URL at the current time': 'Copy the video URL at the current time',
32 'Copy embed code': 'Copy embed code',
33 'Copy magnet URI': 'Copy magnet URI',
34 'Total downloaded: ': 'Total downloaded: ',
35 'Total uploaded: ': 'Total uploaded: ',
36 'Normal mode': 'Normal mode',
37 'Theater mode': 'Theater mode'
38}
39Object.assign(playerKeys, videojs)
40
41// Server keys
42const serverKeys: any = {}
43values(VIDEO_CATEGORIES)
44 .concat(values(VIDEO_LICENCES))
45 .concat(values(VIDEO_PRIVACIES))
46 .concat(values(VIDEO_STATES))
47 .concat(values(VIDEO_IMPORT_STATES))
48 .concat(values(VIDEO_PLAYLIST_PRIVACIES))
49 .concat(values(VIDEO_PLAYLIST_TYPES))
50 .concat([
51 'This video does not exist.',
52 'We cannot fetch the video. Please try again later.',
53 'Sorry',
54 'This video is not available because the remote instance is not responding.',
55 'This playlist does not exist',
56 'We cannot fetch the playlist. Please try again later.',
57 'Playlist: {1}',
58 'By {1}',
59 'Unavailable video'
60 ])
61 .forEach(v => { serverKeys[v] = v })
62
63// More keys
64Object.assign(serverKeys, {
65 Misc: 'Misc',
66 Unknown: 'Unknown'
67})
68
69// ISO 639 keys
70const languageKeys: any = {}
71const languages = buildLanguages()
72Object.keys(languages).forEach(k => { languageKeys[languages[k]] = languages[k] })
73
74Object.assign(serverKeys, languageKeys)
75
76writeAll().catch(err => {
77 console.error(err)
78 process.exit(-1)
79})
80
81async function writeAll () {
82 const localePath = join(__dirname, '../../../client/src/locale')
83
84 await writeJSON(join(localePath, 'player.en-US.json'), playerKeys, { spaces: 4 })
85 await writeJSON(join(localePath, 'server.en-US.json'), serverKeys, { spaces: 4 })
86
87 for (const key of Object.keys(I18N_LOCALES)) {
88 const playerJsonPath = join(localePath, `player.${key}.json`)
89 const translatedPlayer = require(playerJsonPath)
90
91 const newTranslatedPlayer = Object.assign({}, playerKeys, translatedPlayer)
92 await writeJSON(playerJsonPath, newTranslatedPlayer, { spaces: 4 })
93
94 const serverJsonPath = join(localePath, `server.${key}.json`)
95 const translatedServer = require(serverJsonPath)
96
97 const newTranslatedServer = Object.assign({}, serverKeys, translatedServer)
98 await writeJSON(serverJsonPath, newTranslatedServer, { spaces: 4 })
99 }
100}