[IMP] translate: export empty translations for empty ones
Instead of use the original string by default. Currently odoo export a PO translation file using the logic: "If there is not a translation then use the source." This generate a false 100% of file translated for tools based on PO files. This commit change this logic to: "If there is not a translation then use empty string." Odoo import a PO translation file supporting empty string because if a item is empty string odoo use the original source. Closes #17925
This commit is contained in:
committed by
Martin Trigaux
parent
2c0ad82d5a
commit
eb90eb42ce
@@ -55,9 +55,6 @@ class IrTranslationImport(object):
|
||||
|
||||
def push(self, trans_dict):
|
||||
""" Feed a translation, as a dictionary, into the cursor """
|
||||
if not trans_dict['value']:
|
||||
return
|
||||
|
||||
params = dict(trans_dict, state="translated")
|
||||
|
||||
if params['type'] == 'view':
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from contextlib import closing
|
||||
|
||||
import odoo
|
||||
from odoo.tests import common
|
||||
|
||||
try:
|
||||
from StringIO import StringIO
|
||||
except ImportError:
|
||||
from io import StringIO
|
||||
|
||||
|
||||
class TestTermCount(common.TransactionCase):
|
||||
|
||||
def test_count_term(self):
|
||||
@@ -30,3 +38,30 @@ class TestTermCount(common.TransactionCase):
|
||||
menu.refresh()
|
||||
self.assertEqual(menu.name, "New Name")
|
||||
self.assertEqual(menu.with_context(lang='fr_FR').name, "Nouveau nom")
|
||||
|
||||
def test_export_empty_string(self):
|
||||
"""When the string and the translation is equal the translation is empty"""
|
||||
# Export the translations
|
||||
def update_translations():
|
||||
with closing(StringIO()) as bufferobj:
|
||||
odoo.tools.trans_export('fr_FR', ['test_translation_import'], bufferobj, 'po', self.cr)
|
||||
bufferobj.name = 'test_translation_import/i18n/fr.po'
|
||||
odoo.tools.trans_load_data(self.cr, bufferobj, 'po', 'fr_FR', verbose=False, context={'overwrite': True})
|
||||
|
||||
# Check if the not translated key is empty string
|
||||
update_translations()
|
||||
translation = self.env['ir.translation'].search_count([('src', '=', 'Efgh'), ('value', '=', '')])
|
||||
self.assertTrue(translation, 'The translation of "Efgh" should be empty')
|
||||
|
||||
# Modify the value translated for the equal value of the key
|
||||
menu = self.env.ref('test_translation_import.menu_test_translation_import')
|
||||
menu.name = "New Name"
|
||||
menu.with_context(lang='fr_FR').name = "New Name"
|
||||
update_translations()
|
||||
self.assertEqual(menu.with_context(lang='fr_FR').name, "New Name", 'The translation of "New Name" should be "New Name"')
|
||||
|
||||
# Modify the value translated for another different value
|
||||
menu.name = "New Name"
|
||||
menu.with_context(lang='fr_FR').name = "Nouveau nom"
|
||||
update_translations()
|
||||
self.assertEqual(menu.with_context(lang='fr_FR').name, "Nouveau nom", 'The translation of "New Name" should be "Nouveau nom"')
|
||||
|
||||
@@ -683,7 +683,7 @@ def trans_export(lang, modules, buffer, format, cr):
|
||||
# translation template, so no translation value
|
||||
row['translation'] = ''
|
||||
elif not row.get('translation'):
|
||||
row['translation'] = src
|
||||
row['translation'] = ''
|
||||
writer.write(row['modules'], row['tnrs'], src, row['translation'], row['comments'])
|
||||
|
||||
elif format == 'tgz':
|
||||
|
||||
Reference in New Issue
Block a user