mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Add actions from old UI to new UI Fixes: #40 Doing the following: Extract out actions from old UI to new for infra section - zones, pods, clusters, ...etc. Support translation of labels for actions instead of hard coding them Translation of action buttons in list view, detail view, forms and also their fields will now be human readable. Some misc changes - like comparing API param names with case insensitive stuff, allowing reusing of same API for multiple actions by passing defaultArgs: to action in config files. Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
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) |