]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - scripts/i18n/create-custom-files.ts
Improve admin users list table
[github/Chocobozzz/PeerTube.git] / scripts / i18n / create-custom-files.ts
1 import { writeJSON } from 'fs-extra'
2 import { values } from 'lodash'
3 import { join } from 'path'
4 import { root } from '@shared/core-utils'
5 import {
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'
15 import { I18N_LOCALES } from '../../shared/core-utils/i18n'
16
17 const videojs = require(join(root(), 'client', 'src', 'locale', 'videojs.en-US.json'))
18 const playerKeys = {
19 'Quality': 'Quality',
20 'Auto': 'Auto',
21 'Speed': 'Speed',
22 'Subtitles/CC': 'Subtitles/CC',
23 'peers': 'peers',
24 'peer': 'peer',
25 'Go to the video page': 'Go to the video page',
26 'Settings': 'Settings',
27 'Watching this video may reveal your IP address to others.': 'Watching this video may reveal your IP address to others.',
28 'Copy the video URL': 'Copy the video URL',
29 'Copy the video URL at the current time': 'Copy the video URL at the current time',
30 'Copy embed code': 'Copy embed code',
31 'Copy magnet URI': 'Copy magnet URI',
32 'Total downloaded: ': 'Total downloaded: ',
33 'Total uploaded: ': 'Total uploaded: ',
34 'From servers: ': 'From servers: ',
35 'From peers: ': 'From peers: ',
36 'Normal mode': 'Normal mode',
37 'Stats for nerds': 'Stats for nerds',
38 'Theater mode': 'Theater mode',
39 'Video UUID': 'Video UUID',
40 'Viewport / Frames': 'Viewport / Frames',
41 'Resolution': 'Resolution',
42 'Volume': 'Volume',
43 'Codecs': 'Codecs',
44 'Color': 'Color',
45 'Connection Speed': 'Connection Speed',
46 'Network Activity': 'Network Activity',
47 'Total Transfered': 'Total Transfered',
48 'Download Breakdown': 'Download Breakdown',
49 'Buffer Progress': 'Buffer Progress',
50 'Buffer State': 'Buffer State',
51 'Live Latency': 'Live Latency',
52 'P2P': 'P2P',
53 '{1} seconds': '{1} seconds',
54 'enabled': 'enabled',
55 'Playlist: {1}': 'Playlist: {1}',
56 'disabled': 'disabled',
57 ' off': ' off',
58 'Player mode': 'Player mode',
59 'Play in loop': 'Play in loop',
60 'The video failed to play, will try to fast forward.': 'The video failed to play, will try to fast forward.'
61 }
62 Object.assign(playerKeys, videojs)
63
64 // Server keys
65 const serverKeys: any = {}
66 values(VIDEO_CATEGORIES)
67 .concat(values(VIDEO_LICENCES))
68 .concat(values(VIDEO_PRIVACIES))
69 .concat(values(VIDEO_STATES))
70 .concat(values(VIDEO_IMPORT_STATES))
71 .concat(values(VIDEO_PLAYLIST_PRIVACIES))
72 .concat(values(VIDEO_PLAYLIST_TYPES))
73 .concat([
74 'This video does not exist.',
75 'We cannot fetch the video. Please try again later.',
76 'Sorry',
77 'This video is not available because the remote instance is not responding.',
78 'This playlist does not exist',
79 'We cannot fetch the playlist. Please try again later.',
80 'Playlist: {1}',
81 'By {1}',
82 'Unavailable video'
83 ])
84 .forEach(v => { serverKeys[v] = v })
85
86 // More keys
87 Object.assign(serverKeys, {
88 Misc: 'Misc',
89 Unknown: 'Unknown'
90 })
91
92 // ISO 639 keys
93 const languageKeys: any = {}
94 const languages = buildLanguages()
95 Object.keys(languages).forEach(k => { languageKeys[languages[k]] = languages[k] })
96
97 Object.assign(serverKeys, languageKeys)
98
99 writeAll().catch(err => {
100 console.error(err)
101 process.exit(-1)
102 })
103
104 async function writeAll () {
105 const localePath = join(root(), 'client', 'src', 'locale')
106
107 await writeJSON(join(localePath, 'player.en-US.json'), playerKeys, { spaces: 4 })
108 await writeJSON(join(localePath, 'server.en-US.json'), serverKeys, { spaces: 4 })
109
110 for (const key of Object.keys(I18N_LOCALES)) {
111 const playerJsonPath = join(localePath, `player.${key}.json`)
112 const translatedPlayer = require(playerJsonPath)
113
114 const newTranslatedPlayer = Object.assign({}, playerKeys, translatedPlayer)
115 await writeJSON(playerJsonPath, newTranslatedPlayer, { spaces: 4 })
116
117 const serverJsonPath = join(localePath, `server.${key}.json`)
118 const translatedServer = require(serverJsonPath)
119
120 const newTranslatedServer = Object.assign({}, serverKeys, translatedServer)
121 await writeJSON(serverJsonPath, newTranslatedServer, { spaces: 4 })
122 }
123 }