summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openerp/addons/base/ir/ir_translation.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/openerp/addons/base/ir/ir_translation.py b/openerp/addons/base/ir/ir_translation.py
index 95a68af013b..93fa727365e 100644
--- a/openerp/addons/base/ir/ir_translation.py
+++ b/openerp/addons/base/ir/ir_translation.py
@@ -538,41 +538,46 @@ class ir_translation(osv.osv):
def insert_missing(self, field, records):
""" Insert missing translations for `field` on `records`. """
records = records.with_context(lang=None)
+ external_ids = records.get_external_id() # if no xml_id, empty string
if callable(field.translate):
# insert missing translations for each term in src
- query = """ INSERT INTO ir_translation (lang, type, name, res_id, src, value)
- SELECT l.code, 'model', %(name)s, %(res_id)s, %(src)s, %(src)s
+ query = """ INSERT INTO ir_translation (lang, type, name, res_id, src, value, module)
+ SELECT l.code, 'model', %(name)s, %(res_id)s, %(src)s, %(src)s, %(module)s
FROM res_lang l
WHERE NOT EXISTS (
SELECT 1 FROM ir_translation
- WHERE lang=l.code AND type='model' AND name=%(name)s AND res_id=%(res_id)s AND src=%(src)s
+ WHERE lang=l.code AND type='model' AND name=%(name)s AND res_id=%(res_id)s AND src=%(src)s AND module=%(module)s
);
"""
for record in records:
+ module = external_ids[record.id].split('.')[0]
src = record[field.name] or None
for term in set(field.get_trans_terms(src)):
self._cr.execute(query, {
'name': "%s,%s" % (field.model_name, field.name),
'res_id': record.id,
'src': term,
+ 'module': module
})
else:
# insert missing translations for src
- query = """ INSERT INTO ir_translation (lang, type, name, res_id, src, value)
- SELECT l.code, 'model', %(name)s, %(res_id)s, %(src)s, %(src)s
+ query = """ INSERT INTO ir_translation (lang, type, name, res_id, src, value, module)
+ SELECT l.code, 'model', %(name)s, %(res_id)s, %(src)s, %(src)s, %(module)s
FROM res_lang l
WHERE l.code != 'en_US' AND NOT EXISTS (
SELECT 1 FROM ir_translation
- WHERE lang=l.code AND type='model' AND name=%(name)s AND res_id=%(res_id)s
+ WHERE lang=l.code AND type='model' AND name=%(name)s AND res_id=%(res_id)s AND module=%(module)s
);
UPDATE ir_translation SET src=%(src)s
- WHERE type='model' AND name=%(name)s AND res_id=%(res_id)s;
+ WHERE type='model' AND name=%(name)s AND res_id=%(res_id)s AND module=%(module)s;
"""
for record in records:
+ module = external_ids[record.id].split('.')[0]
self._cr.execute(query, {
'name': "%s,%s" % (field.model_name, field.name),
'res_id': record.id,
'src': record[field.name] or None,
+ 'module': module
})
self.clear_caches()