diff options
Diffstat (limited to 'addons/base/controllers/main.py')
| -rw-r--r-- | addons/base/controllers/main.py | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 71f2d480dd2..e73e281ce3a 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -160,21 +160,6 @@ class WebClient(openerpweb.Controller): @openerpweb.jsonrequest def translations(self, req, mods, lang): - transs = {} - for addon_name in mods: - transl = {"messages":[]} - transs[addon_name] = transl - f_name = os.path.join(openerpweb.path_addons, addon_name, "po", lang + ".po") - if not os.path.exists(f_name): - continue - try: - with open(f_name) as t_file: - po = read_po(t_file) - except: - continue - for x in po: - if x.id: - transl["messages"].append({'id': x.id, 'string': x.string}) lang_model = req.session.model('res.lang') ids = lang_model.search([("code", "=", lang)]) if ids: @@ -182,6 +167,30 @@ class WebClient(openerpweb.Controller): "grouping", "decimal_point", "thousands_sep"]) else: lang_obj = None + + if lang.count("_") > 0: + separator = "_" + else: + separator = "@" + langs = lang.split(separator) + langs = [separator.join(langs[:x]) for x in range(1, len(langs) + 1)] + + transs = {} + for addon_name in mods: + transl = {"messages":[]} + transs[addon_name] = transl + for l in langs: + f_name = os.path.join(openerpweb.path_addons, addon_name, "po", l + ".po") + if not os.path.exists(f_name): + continue + try: + with open(f_name) as t_file: + po = read_po(t_file) + except: + continue + for x in po: + if x.id and x.string: + transl["messages"].append({'id': x.id, 'string': x.string}) return {"modules": transs, "lang_parameters": lang_obj} |
