aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/i18n
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2019-11-07 09:45:14 +0100
committerChocobozzz <me@florianbigard.com>2019-11-07 09:45:14 +0100
commit3aea8eb2e7ee8fa53e05298030eaeef98d234797 (patch)
tree9dfb03803b8a2b7d7eedad33eb2a0c6925469167 /scripts/i18n
parentc2368b72411253d825a3a4169a85ec4570ba5854 (diff)
downloadPeerTube-3aea8eb2e7ee8fa53e05298030eaeef98d234797.tar.gz
PeerTube-3aea8eb2e7ee8fa53e05298030eaeef98d234797.tar.zst
PeerTube-3aea8eb2e7ee8fa53e05298030eaeef98d234797.zip
Try new worflow with french
Diffstat (limited to 'scripts/i18n')
-rwxr-xr-xscripts/i18n/create-custom-files.ts73
-rwxr-xr-xscripts/i18n/generate.sh9
-rwxr-xr-xscripts/i18n/pull-hook.sh9
3 files changed, 17 insertions, 74 deletions
diff --git a/scripts/i18n/create-custom-files.ts b/scripts/i18n/create-custom-files.ts
index e946b8fd6..47b3e3784 100755
--- a/scripts/i18n/create-custom-files.ts
+++ b/scripts/i18n/create-custom-files.ts
@@ -1,25 +1,21 @@
1import { registerTSPaths } from '../../server/helpers/register-ts-paths' 1import { registerTSPaths } from '../../server/helpers/register-ts-paths'
2registerTSPaths() 2import { writeJSON } from 'fs-extra'
3
4import * as jsToXliff12 from 'xliff/jsToXliff12'
5import { writeFile } from 'fs-extra'
6import { join } from 'path' 3import { join } from 'path'
7import { 4import {
8 buildLanguages, 5 buildLanguages,
9 VIDEO_CATEGORIES, 6 VIDEO_CATEGORIES,
10 VIDEO_IMPORT_STATES, 7 VIDEO_IMPORT_STATES,
11 VIDEO_LICENCES, VIDEO_PLAYLIST_PRIVACIES, VIDEO_PLAYLIST_TYPES, 8 VIDEO_LICENCES,
9 VIDEO_PLAYLIST_PRIVACIES,
10 VIDEO_PLAYLIST_TYPES,
12 VIDEO_PRIVACIES, 11 VIDEO_PRIVACIES,
13 VIDEO_STATES 12 VIDEO_STATES
14} from '../../server/initializers/constants' 13} from '../../server/initializers/constants'
15import { values } from 'lodash' 14import { values } from 'lodash'
16 15
17type TranslationType = { 16registerTSPaths()
18 target: string
19 data: { [id: string]: string }
20}
21 17
22const videojs = require(join(__dirname, '../../../client/src/locale/source/videojs_en_US.json')) 18const videojs = require(join(__dirname, '../../../client/src/locale/videojs.en-US.json'))
23const playerKeys = { 19const playerKeys = {
24 'Quality': 'Quality', 20 'Quality': 'Quality',
25 'Auto': 'Auto', 21 'Auto': 'Auto',
@@ -37,10 +33,7 @@ const playerKeys = {
37 'Total downloaded: ': 'Total downloaded: ', 33 'Total downloaded: ': 'Total downloaded: ',
38 'Total uploaded: ': 'Total uploaded: ' 34 'Total uploaded: ': 'Total uploaded: '
39} 35}
40const playerTranslations = { 36Object.assign(playerKeys, videojs)
41 target: join(__dirname, '../../../client/src/locale/source/player_en_US.xml'),
42 data: Object.assign({}, videojs, playerKeys)
43}
44 37
45// Server keys 38// Server keys
46const serverKeys: any = {} 39const serverKeys: any = {}
@@ -65,57 +58,17 @@ Object.assign(serverKeys, {
65 'Unknown': 'Unknown' 58 'Unknown': 'Unknown'
66}) 59})
67 60
68const serverTranslations = {
69 target: join(__dirname, '../../../client/src/locale/source/server_en_US.xml'),
70 data: serverKeys
71}
72
73// ISO 639 keys 61// ISO 639 keys
74const languageKeys: any = {} 62const languageKeys: any = {}
75const languages = buildLanguages() 63const languages = buildLanguages()
76Object.keys(languages).forEach(k => languageKeys[languages[k]] = languages[k]) 64Object.keys(languages).forEach(k => languageKeys[languages[k]] = languages[k])
77 65
78const iso639Translations = { 66Object.assign(serverKeys, languageKeys)
79 target: join(__dirname, '../../../client/src/locale/source/iso639_en_US.xml'),
80 data: languageKeys
81}
82
83saveToXliffFile(playerTranslations, err => {
84 if (err) return handleError(err)
85
86 saveToXliffFile(serverTranslations, err => {
87 if (err) return handleError(err)
88
89 saveToXliffFile(iso639Translations, err => {
90 if (err) return handleError(err)
91 67
92 process.exit(0) 68Promise.all([
93 }) 69 writeJSON(join(__dirname, '../../../client/src/locale/player.en-US.json'), playerKeys),
94 }) 70 writeJSON(join(__dirname, '../../../client/src/locale/server.en-US.json'), serverKeys)
95}) 71]).catch(err => {
96
97// Then, the server strings
98
99function saveToXliffFile (jsonTranslations: TranslationType, cb: Function) {
100 const obj = {
101 resources: {
102 namespace1: {}
103 }
104 }
105 Object.keys(jsonTranslations.data).forEach(k => obj.resources.namespace1[ k ] = { source: jsonTranslations.data[ k ] })
106
107 jsToXliff12(obj, (err, res) => {
108 if (err) return cb(err)
109
110 writeFile(jsonTranslations.target, res, err => {
111 if (err) return cb(err)
112
113 return cb(null)
114 })
115 })
116}
117
118function handleError (err: any) {
119 console.error(err) 72 console.error(err)
120 process.exit(-1) 73 process.exit(-1)
121} 74})
diff --git a/scripts/i18n/generate.sh b/scripts/i18n/generate.sh
index 3f3e3d8e5..f9c2f0613 100755
--- a/scripts/i18n/generate.sh
+++ b/scripts/i18n/generate.sh
@@ -3,12 +3,11 @@
3set -eu 3set -eu
4 4
5cd client 5cd client
6npm run ng -- xi18n --i18n-locale "en-US" --output-path src/locale/source --out-file angular_en_US.xml 6npm run ng -- xi18n --i18n-locale "en-US" --output-path src/locale --out-file angular.xlf
7npm run ngx-extractor -- --locale "en-US" -i 'src/**/*.ts' -f xlf -o src/locale/source/angular_en_US.xml 7npm run ngx-extractor -- --locale "en-US" -i 'src/**/*.ts' -f xlf -o src/locale/angular.xlf
8 8
9# Zanata does not support inner elements in <source>, so we hack these special elements 9# Merge new translations in other language files
10# This regex translate the Angular elements to special entities (that we will reconvert on pull) 10npm run ng run -- PeerTube:xliffmerge
11perl -pi -e 's|<x id=(.+?)/>|&lt;x id=\1/&gt;|g' src/locale/source/angular_en_US.xml
12 11
13# Add our strings too 12# Add our strings too
14cd ../ 13cd ../
diff --git a/scripts/i18n/pull-hook.sh b/scripts/i18n/pull-hook.sh
index 8d1f7ee55..738469e38 100755
--- a/scripts/i18n/pull-hook.sh
+++ b/scripts/i18n/pull-hook.sh
@@ -2,14 +2,5 @@
2 2
3set -eu 3set -eu
4 4
5for i in $(seq 1 10); do
6 # Angular does not like when there is not target element, so we create it with the same content than the source element
7 perl -0pi -e 's#<source>([^<]+)</source>\s*<context-group #<source>\1</source><target>\1</target><context-group #g' client/src/locale/target/angular_*.xml
8
9 # Zanata does not support inner elements in <source>, so we hack these special elements
10 # This regex translate the converted elements to initial Angular elements
11 perl -pi -e 's|&lt;x id=(.+?)/&gt;([^"])|<x id=\1/>\2|g' client/src/locale/target/*.xml
12done
13
14npm run i18n:xliff2json 5npm run i18n:xliff2json
15 6