[IMP] l10n_multilang: add translation_folder field

bzr revid: mat@openerp.com-20130813094730-8wbjph5qsfp0z84o
This commit is contained in:
Martin Trigaux 2013-08-13 11:47:30 +02:00
parent 1bdd49c23a
commit 97aa297b68
1 changed files with 46 additions and 2 deletions

View File

@ -19,8 +19,9 @@
#
##############################################################################
from openerp import tools
from openerp import SUPERUSER_ID
from openerp.osv import fields, osv
import os
from openerp.tools.translate import _
import logging
_logger = logging.getLogger(__name__)
@ -152,4 +153,47 @@ class wizard_multi_charts_accounts(osv.osv_memory):
wizard_multi_charts_accounts()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
class module(osv.osv):
_inherit = "ir.module.module"
_columns = {
'translation_folder': fields.char("Additional Translation Folder", size=256, help="Relative path name of a folder containing the translations for this module in addtion to i18n/.")
}
def get_values_from_terp(self, terp):
info = super(module, self).get_values_from_terp(terp)
info.update({'translation_folder': terp.get('translation_folder', False)})
return info
class ir_translation(osv.osv):
_inherit = "ir.translation"
def load(self, cr, modules, langs, context=None):
res = super(ir_translation, self).load(cr, modules, context=context)
context = dict(context or {}) # local copy
module_ids = self.pool.get('ir.module.module').search(cr, SUPERUSER_ID, [('name', 'in', modules)], context=context)
for module in self.browse(cr, SUPERUSER_ID, module_ids, context=context):
for lang in langs:
lang_code = tools.get_iso_codes(lang)
base_lang_code = None
if '_' in lang_code:
base_lang_code = lang_code.split('_')[0]
# Step 3: if additional translation folder is specified, load it as well
if module.translation_folder:
module_name = module.name
base_trans_file = openerp.modules.get_module_resource(module_name, module.translation_folder, base_lang_code + '.po')
if base_trans_file:
_logger.info('module %s: loading base translation file %s for language %s', module_name, base_lang_code, lang)
tools.trans_load(cr, base_trans_file, lang, verbose=False, module_name=module_name, context=context)
context['overwrite'] = True # make sure the requested translation will override the base terms later
trans_file = openerp.modules.get_module_resource(module_name, module.translation_folder, lang_code + '.po')
if trans_file:
_logger.info('module %s: loading translation file (%s) for language %s', module_name, lang_code, lang)
tools.trans_load(cr, trans_file, lang, verbose=False, module_name=module_name, context=context)
elif lang_code != 'en_US':
_logger.warning('module %s: no translation for language %s', module_name, lang_code)
return res