forked from wireapp/wire-desktop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrans.py
executable file
·107 lines (91 loc) · 2.72 KB
/
trans.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/python
# coding: utf-8
#
# Wire
# Copyright (C) 2018 Wire Swiss GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
import os
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')
SUPPORTED_LOCALE = [
'cs',
'da',
'de',
'el',
'es',
'et',
'fi',
'fr',
'hr',
'hu',
'it',
'lt',
'nl',
'pl',
'pt',
'ro',
'ru',
'sk',
'sl',
'tr',
'uk',
]
os.system('crowdin-cli --identity=keys/crowdin.yaml upload sources')
os.system('crowdin-cli --identity=keys/crowdin.yaml download')
os.chdir(os.path.dirname(os.path.realpath(__file__)))
root = 'electron/locale/'
def get_locale(filename):
locale = filename.replace('strings-', '').replace('.js', '')
return locale if len(locale) == 2 else None
def fix_apostrophe(text):
if not text:
return text
text = unicode(text, errors='ignore')
first = text.find(u"'")
last = text.rfind(u"'")
if first != last:
pre = text[0:first + 1]
string = text[first + 1:last]
post = text[last:]
return '%s%s%s' % (pre, string.replace(u"'", u'’'), post)
return text
for filename in os.listdir(root):
locale = get_locale(filename)
if locale:
if locale not in SUPPORTED_LOCALE:
file_to_delete = os.path.join(root, filename)
print('Removing unsupported locale "%s" (%s)' % (locale, file_to_delete))
os.remove(file_to_delete)
continue
with open(os.path.join(root, filename), 'r') as f:
source = f.read()
with open(os.path.join(root, filename), 'w') as f:
source = source.replace('=', ' = ')
source = source.replace("'use = strict';\n\n", '')
source = re.sub(r'#(.)+\n', '', source)
source = '\n'.join(map(fix_apostrophe, source.splitlines()))
f.write("'use strict';\n\nconst string = {};\n\n")
f.write(source)
f.write('\nmodule.exports = string;\n')
if filename == 'strings.js':
with open(os.path.join(root, filename), 'r') as f:
source = f.read()
with open(os.path.join(root, filename.replace('.js', '-en.js')), 'w') as f:
f.write("'use strict';\n\nconst string = {};\n\n")
f.write(source.replace("'use strict';\n\n", ''))
f.write('\nmodule.exports = string;\n')