[MERGE] forward port of branch 8.0 up to 1f07b942
This commit is contained in:
@@ -126,11 +126,13 @@ class ir_translation_import_cursor(object):
|
|||||||
AND irt.type = ti.type
|
AND irt.type = ti.type
|
||||||
AND irt.module = ti.module
|
AND irt.module = ti.module
|
||||||
AND irt.name = ti.name
|
AND irt.name = ti.name
|
||||||
AND (ti.type IN ('field', 'help') OR irt.src = ti.src)
|
AND ( -- 8.0 only where unicity is assured on translations of 'model'
|
||||||
AND ( ti.type NOT IN ('model', 'view')
|
(ti.type = 'model' AND ti.res_id = irt.res_id)
|
||||||
OR (ti.type = 'model' AND ti.res_id = irt.res_id)
|
OR (ti.type = 'view' AND (irt.res_id IS NULL OR ti.res_id = irt.res_id) AND irt.src = ti.src)
|
||||||
OR (ti.type = 'view' AND (irt.res_id IS NULL OR ti.res_id = irt.res_id))
|
OR (ti.type = 'field')
|
||||||
)
|
OR (ti.type = 'help')
|
||||||
|
OR (ti.type NOT IN ('model', 'view', 'field', 'help') AND irt.src = ti.src)
|
||||||
|
)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Step 2: update existing (matching) translations
|
# Step 2: update existing (matching) translations
|
||||||
@@ -435,17 +437,19 @@ class ir_translation(osv.osv):
|
|||||||
if len(langs):
|
if len(langs):
|
||||||
fields = [f.get('name') for f in translatable_fields]
|
fields = [f.get('name') for f in translatable_fields]
|
||||||
record = trans_model.read(cr, uid, [id], fields, context={ 'lang': main_lang })[0]
|
record = trans_model.read(cr, uid, [id], fields, context={ 'lang': main_lang })[0]
|
||||||
|
external_id = trans_model.get_external_id(cr, uid, [id])[id]
|
||||||
|
module = external_id.split('.')[0] # if no xml_id, empty string
|
||||||
for lg in langs:
|
for lg in langs:
|
||||||
for f in translatable_fields:
|
for f in translatable_fields:
|
||||||
# Check if record exists, else create it (at once)
|
# Check if record exists, else create it (at once)
|
||||||
sql = """INSERT INTO ir_translation (lang, src, name, type, res_id, value)
|
sql = """INSERT INTO ir_translation (lang, src, name, type, res_id, value, module)
|
||||||
SELECT %s, %s, %s, 'model', %s, %s WHERE NOT EXISTS
|
SELECT %s, %s, %s, 'model', %s, %s, %s WHERE NOT EXISTS
|
||||||
(SELECT 1 FROM ir_translation WHERE lang=%s AND name=%s AND res_id=%s AND type='model');
|
(SELECT 1 FROM ir_translation WHERE lang=%s AND name=%s AND res_id=%s AND type='model' AND module=%s);
|
||||||
UPDATE ir_translation SET src = %s WHERE lang=%s AND name=%s AND res_id=%s AND type='model';
|
UPDATE ir_translation SET src = %s WHERE lang=%s AND name=%s AND res_id=%s AND type='model' AND module=%s;
|
||||||
"""
|
"""
|
||||||
src = record[f['name']] or None
|
src = record[f['name']] or None
|
||||||
name = "%s,%s" % (f['model'], f['name'])
|
name = "%s,%s" % (f['model'], f['name'])
|
||||||
cr.execute(sql, (lg, src , name, f['id'], src, lg, name, f['id'], src, lg, name, id))
|
cr.execute(sql, (lg, src, name, f['id'], src, module, lg, name, f['id'], module, src, lg, name, id, module))
|
||||||
|
|
||||||
action = {
|
action = {
|
||||||
'name': 'Translate',
|
'name': 'Translate',
|
||||||
|
|||||||
Reference in New Issue
Block a user