79 lines
2.8 KiB
Python
79 lines
2.8 KiB
Python
#!/usr/bin/python2.6
|
|
|
|
|
|
# Generate lang files with en.js file as reference
|
|
# if key does not exist in json file, the key and value are added from reference file (en.js)
|
|
# Usage : $ python ./utils/generate-lang.py
|
|
|
|
|
|
class bcolors:
|
|
HEADER = '\033[95m'
|
|
OKBLUE = '\033[94m'
|
|
OKGREEN = '\033[92m'
|
|
WARNING = '\033[93m'
|
|
FAIL = '\033[91m'
|
|
ENDC = '\033[0m'
|
|
|
|
def disable(self):
|
|
self.HEADER = ''
|
|
self.OKBLUE = ''
|
|
self.OKGREEN = ''
|
|
self.WARNING = ''
|
|
self.FAIL = ''
|
|
self.ENDC = ''
|
|
|
|
import os, io, json, codecs, sys
|
|
|
|
fmRootFolder = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + "/"
|
|
|
|
os.chdir(fmRootFolder + "scripts/languages/") # set working directory
|
|
|
|
|
|
filesList = list()
|
|
|
|
print bcolors.HEADER + "\nFiles to translate :"
|
|
print "-------------------------------------------\n" + bcolors.ENDC
|
|
|
|
for files in os.listdir("."):
|
|
# we exclude 'en.js' file
|
|
if files.endswith(".js") and files != 'en.js':
|
|
filesList.append(files) # we populate filesList
|
|
print bcolors.OKBLUE + files+ bcolors.ENDC # display file names
|
|
|
|
print bcolors.HEADER + "-------------------------------------------\n" + bcolors.ENDC
|
|
|
|
|
|
with open(fmRootFolder + "scripts/languages/" + 'en.js') as f:
|
|
default_json = json.load(f)
|
|
|
|
# we loop on JS languages files
|
|
# if key does not exist in json file, the key and value are added from reference file (en.js)
|
|
for index, item in enumerate(filesList):
|
|
# print index, item
|
|
with open(fmRootFolder + "scripts/languages/" + item) as f:
|
|
filename = fmRootFolder + "scripts/languages/" + item
|
|
print bcolors.OKGREEN + str(index) + ") Writing file : " + filename + bcolors.ENDC
|
|
current = json.load(f) # we get the current JSON file content
|
|
|
|
# merging 2 dictionnaries
|
|
data = dict(default_json.items() + current.items())
|
|
|
|
# we calculate differences between lists
|
|
diff = set(default_json.keys()) - set(current.keys())
|
|
if len(diff) == 0:
|
|
print bcolors.OKBLUE + "... no keys added."+ bcolors.ENDC
|
|
else:
|
|
print bcolors.WARNING + "... keys " + bcolors.OKBLUE + ",".join(diff ) + bcolors.WARNING +" were added." + bcolors.ENDC
|
|
|
|
# get a string with JSON encoding the list
|
|
data = json.dumps(data)
|
|
|
|
# we use codecs to keep utf-8 encoding without escaped \uXXXX
|
|
filename = fmRootFolder + "scripts/languages/" + item
|
|
file=codecs.open(filename, mode='w', encoding='utf-8')
|
|
# magic happens here to make it pretty-printed
|
|
file.write(json.dumps(json.loads(data), indent=4, sort_keys=True, ensure_ascii=False))
|
|
file.close()
|
|
|
|
print bcolors.OKBLUE + "... file saved." + bcolors.ENDC
|