summaryrefslogtreecommitdiff
path: root/addons/base/controllers/main.py
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2011-08-16 14:59:12 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2011-08-16 14:59:12 +0200
commit5a34b9fee1eac75d724ea459a65e6d4792b39f0d (patch)
tree320e586cbdc3ad8debcc6ebb1dfa907c573caf62 /addons/base/controllers/main.py
parent81ea898b8c0a05e2f538bb7450e9d64e4ef8c470 (diff)
[imp] added fallback support for translations
bzr revid: nicolas.vanhoren@openerp.com-20110816125912-5fkm71nb4y6yp3d0
Diffstat (limited to 'addons/base/controllers/main.py')
-rw-r--r--addons/base/controllers/main.py39
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}