web-apps/translation/convert_translation.py
2021-10-08 16:29:48 +03:00

116 lines
4.5 KiB
Python

import os
import io
import shutil
def strSplit(str):
result = []
ind1 = str.find('"')
ind2 = str.find('"', ind1+1)
result.append(str[ind1+1:ind2])
ind3 = str.find('"', ind2+1)
indLast = str.rfind('"')
result.append(str[ind3+1:indLast])
return result
def sortByAlphabet(inputStr):
return inputStr.lower()
app_names = ['documenteditor', 'presentationeditor', 'spreadsheeteditor']
app_types = ['embed', 'main', 'forms']
prefix_apps = '../apps/'
prefix_src = 'src/'
prefix_dest = 'dest/'
str_apps = []
langs = []
for i in range(len(app_names)):
for j in range(len(app_types)):
locale_path = prefix_apps + app_names[i] + '/' + app_types[j] + '/locale/'
src_path = prefix_src + app_names[i] + '/' + app_types[j] + '/locale/'
dest_path = prefix_dest + app_names[i] + '/' + app_types[j] + '/locale/'
print(locale_path)
if os.path.isdir(locale_path):
langs = os.listdir(locale_path)
if not os.path.isdir(dest_path):
os.makedirs(dest_path)
if len(langs) > 0:
try:
f = io.open(locale_path + 'en.json', mode='r', encoding='utf-8')
except Exception:
continue
lines = f.readlines()
f.close()
str_apps = []
for k in range(1, len(lines)-1):
arr = strSplit(lines[k])
if len(arr) > 0:
str_apps.append(arr[0])
str_apps.sort(key=sortByAlphabet)
for l in range(len(langs)):
lang = langs[l].split('.')[0]
f = io.open(locale_path + lang+ '.json', mode='r', encoding='utf-8')
lines = f.readlines()
f.close()
try:
f = io.open(src_path + lang+ '.json', mode='r', encoding='utf-8')
except Exception:
f.close()
f = io.open(dest_path + lang + '.json', mode='w', encoding='utf-8')
f.writelines(lines)
f.close()
print(' ' + lang+ '.json - copied')
continue
d_locale = dict()
d_src = dict()
# locale
for k in range(1, len(lines)-1):
arr = strSplit(lines[k])
if len(arr) > 1:
d_locale[arr[0]] = arr[1]
# src
lines = f.readlines()
for k in range(1, len(lines)-1):
arr = strSplit(lines[k])
if len(arr) > 1:
d_src[arr[0]] = arr[1]
f.close()
f = io.open(dest_path + lang + '.json', mode='w', encoding='utf-8')
f.write(u'{')
f.write(u'\n')
changed = 'not changed'
isFirst = True
arr_len = len(str_apps)
for k in range(arr_len):
str = str_apps[k]
if str.find('del_') == 0:
continue
if str in d_src:
changed = 'changed'
str = ' "' + str + '": "' + d_src[str] + '"'
if isFirst:
isFirst = False
else:
f.write(u',\n')
f.write(str)
elif str in d_locale:
str = ' "' + str + '": "' + d_locale[str] + '"'
if isFirst:
isFirst = False
else:
f.write(u',\n')
f.write(str)
f.write(u'\n')
f.write(u'}')
f.close()
print(' ' + lang + '.json - ' + changed)
if os.path.isdir(src_path):
add_langs = os.listdir(src_path)
for m in range(len(langs)):
if add_langs.count(langs[m]) > 0:
add_langs.remove(langs[m])
for m in range(len(add_langs)):
lang = add_langs[m]
shutil.copyfile(src_path + lang, dest_path + lang)
print(' ' + lang + ' - ' + 'added')