From 81ea898b8c0a05e2f538bb7450e9d64e4ef8c470 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 16 Aug 2011 14:24:50 +0200 Subject: [PATCH 1/2] [imp] added loading of encoding parameters bzr revid: nicolas.vanhoren@openerp.com-20110816122450-1cpa3oq8j31hr4xd --- addons/base/controllers/main.py | 10 +++++++++- addons/base/static/src/js/core.js | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index d4d420590ab..71f2d480dd2 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -175,7 +175,15 @@ class WebClient(openerpweb.Controller): for x in po: if x.id: transl["messages"].append({'id': x.id, 'string': x.string}) - return {"modules": transs} + lang_model = req.session.model('res.lang') + ids = lang_model.search([("code", "=", lang)]) + if ids: + lang_obj = lang_model.read(ids[0], ["direction", "date_format", "time_format", + "grouping", "decimal_point", "thousands_sep"]) + else: + lang_obj = None + return {"modules": transs, + "lang_parameters": lang_obj} class Database(openerpweb.Controller): diff --git a/addons/base/static/src/js/core.js b/addons/base/static/src/js/core.js index 8efae36863a..b7fc7704c10 100644 --- a/addons/base/static/src/js/core.js +++ b/addons/base/static/src/js/core.js @@ -566,6 +566,12 @@ openerp.base.OldWidget = openerp.base.Widget.extend({ openerp.base.TranslationDataBase = openerp.base.Class.extend({ init: function() { this.db = {}; + this.parameters = {"direction": 'ltr', + "date_format": '%m/%d/%Y', + "time_format": '%H:%M:%S', + "grouping": "[]", + "decimal_point": ".", + "thousands_sep": ","}; }, set_bundle: function(translation_bundle) { var self = this; @@ -577,6 +583,9 @@ openerp.base.TranslationDataBase = openerp.base.Class.extend({ _.each(modules, function(name) { self.add_module_translation(translation_bundle.modules[name]); }); + if (translation_bundle.lang_parameters) { + this.parameters = translation_bundle.lang_parameters; + } }, add_module_translation: function(mod) { var self = this; From 5a34b9fee1eac75d724ea459a65e6d4792b39f0d Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 16 Aug 2011 14:59:12 +0200 Subject: [PATCH 2/2] [imp] added fallback support for translations bzr revid: nicolas.vanhoren@openerp.com-20110816125912-5fkm71nb4y6yp3d0 --- addons/base/controllers/main.py | 39 +++++++++++++++++++------------ addons/base/static/src/js/core.js | 1 - 2 files changed, 24 insertions(+), 16 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} diff --git a/addons/base/static/src/js/core.js b/addons/base/static/src/js/core.js index b7fc7704c10..9c5bf358d7b 100644 --- a/addons/base/static/src/js/core.js +++ b/addons/base/static/src/js/core.js @@ -893,7 +893,6 @@ openerp.base.Session = openerp.base.CallbackEnabled.extend( /** @lends openerp.b openerp[mod] = {}; // init module mod if(openerp._openerp[mod] != undefined) { - openerp._openerp[mod]._T = openerp.base._t.database.build_translation_function(); openerp._openerp[mod](openerp); this.module_loaded[mod] = true; }