mirror of https://github.com/apache/cloudstack.git
92 lines
3.4 KiB
Python
92 lines
3.4 KiB
Python
# coding: utf-8
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
def loadJson(lfile):
|
|
ldata = lfile.read()
|
|
cont = ldata.split("var dictionary =")
|
|
if len(cont) != 2:
|
|
print "Unexpected format for file " + lfile + ". Expected `var dictionary =` from old source code"
|
|
exit(1)
|
|
|
|
trans = cont[1].strip().replace("\n", "")
|
|
if trans[-1] == ";":
|
|
trans = trans[0: -1]
|
|
|
|
try:
|
|
return json.loads(trans)
|
|
except expression as identifier:
|
|
print "Something went wrong in parsing old files. Perhaps incorrect formatting?"
|
|
exit(1)
|
|
|
|
def loadTranslations(l10repo):
|
|
with open("fieldsFromOldLayout.json") as outfile:
|
|
oldLayout = json.load(outfile)
|
|
|
|
fieldsFromOldLayout = oldLayout["allFields"]
|
|
actionsFromOldLayout = oldLayout["actions"]
|
|
|
|
with open("manualNeededLabels.json") as outfile:
|
|
manualNeededLabels = json.load(outfile)
|
|
|
|
newTranslations = {}
|
|
for r, d, f in os.walk(l10repo):
|
|
for file in f:
|
|
print file
|
|
if '.js' in file:
|
|
with open(os.path.join(r, file)) as oldfile:
|
|
oldTrans = loadJson(oldfile)
|
|
print len(oldTrans.keys())
|
|
newTrans = {}
|
|
for apikey in fieldsFromOldLayout:
|
|
currLabel = fieldsFromOldLayout[apikey]["labels"][0] # Just use the first label for now in case multiple labels exist
|
|
if currLabel in oldTrans:
|
|
newTrans[apikey] = oldTrans[currLabel]
|
|
for label in manualNeededLabels:
|
|
if label in oldTrans:
|
|
newTrans[manualNeededLabels[label]] = oldTrans[label]
|
|
else:
|
|
newTrans[manualNeededLabels[label]] = manualNeededLabels[label]
|
|
|
|
for a in actionsFromOldLayout:
|
|
actions = actionsFromOldLayout[a]
|
|
for action in actions:
|
|
if not "label" in action:
|
|
continue
|
|
curLabel = action["label"]
|
|
if curLabel in oldTrans:
|
|
newTrans[curLabel] = oldTrans[curLabel]
|
|
else:
|
|
print "Not found translation for " + curLabel
|
|
|
|
if "keys" in action:
|
|
curKeys = action["keys"]
|
|
for key in curKeys:
|
|
curLabel = curKeys[key]["label"]
|
|
if curLabel in oldTrans:
|
|
newTrans[key] = oldTrans[curLabel]
|
|
else:
|
|
print "Not found translation for " + curLabel
|
|
|
|
|
|
newTranslations[file] = newTrans
|
|
|
|
for file in newTranslations:
|
|
with open("../src/locales/" + file[:-3] + ".json", "w") as newT:
|
|
json.dump(newTranslations[file], newT, sort_keys=True, indent=4)
|
|
|
|
if __name__ == "__main__":
|
|
if len(sys.argv) != 2:
|
|
print "Usage: fileTranslations.py $CLOUDSTACK_CODE_REPO"
|
|
exit(1)
|
|
|
|
cldstk = sys.argv[1]
|
|
l10repo = os.path.join(cldstk, "ui/l10n")
|
|
if not os.path.isdir(l10repo):
|
|
print "Invalid translations location sent: " + l10repo + " does not exists"
|
|
exit(1)
|
|
|
|
loadTranslations(l10repo)
|
|
exit(0) |