diff --git a/odoo/addons/test_translation_import/i18n/fr_BE.po b/odoo/addons/test_translation_import/i18n/fr_BE.po index 1d41cc94dcb..f60b8342c5b 100644 --- a/odoo/addons/test_translation_import/i18n/fr_BE.po +++ b/odoo/addons/test_translation_import/i18n/fr_BE.po @@ -21,8 +21,8 @@ msgstr "Ijkl in belgian french" #. module: test_translation_import #: model:ir.model,name:test_translation_import.model_test_translation_import -msgid "test.translation.import" -msgstr "test.translation.import in belgian french" +msgid "Test: Translation Import" +msgstr "Test: Translation Import in belgian french" #. module: test_translation_import #: model:ir.model.fields,help:test_translation_import.field_test_translation_import__name diff --git a/odoo/addons/test_translation_import/i18n/test_translation_import.pot b/odoo/addons/test_translation_import/i18n/test_translation_import.pot index 39333d2b363..c2ffe5b20ce 100644 --- a/odoo/addons/test_translation_import/i18n/test_translation_import.pot +++ b/odoo/addons/test_translation_import/i18n/test_translation_import.pot @@ -29,6 +29,37 @@ msgstr "" msgid "1XBUO5PUYH2RYZSA1FTLRYS8SPCNU1UYXMEYMM25ASV7JC2KTJZQESZYRV9L8CGB" msgstr "" +#. module: test_translation_import +#: code:addons/test_translation_import/models.py:21 +#, python-format +msgid "Accounting" +msgstr "" + +#. module: test_translation_import +#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__create_uid +msgid "Created by" +msgstr "" + +#. module: test_translation_import +#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__create_date +msgid "Created on" +msgstr "" + +#. module: test_translation_import +#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__display_name +msgid "Display Name" +msgstr "" + +#. module: test_translation_import +#: model:ir.model.fields,help:test_translation_import.field_test_translation_import__name +msgid "Efgh" +msgstr "" + +#. module: test_translation_import +#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__id +msgid "ID" +msgstr "" + #. module: test_translation_import #: code:addons/test_translation_import/models.py:14 #, python-format @@ -36,13 +67,29 @@ msgid "Ijkl" msgstr "" #. module: test_translation_import -#: model:ir.model,name:test_translation_import.model_test_translation_import -msgid "test.translation.import" +#: code:addons/test_translation_import/models.py:19 +#, python-format +msgid "Klingon" msgstr "" #. module: test_translation_import -#: model:ir.model.fields,help:test_translation_import.field_test_translation_import__name -msgid "Efgh" +#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import____last_update +msgid "Last Modified on" +msgstr "" + +#. module: test_translation_import +#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: test_translation_import +#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__write_date +msgid "Last Updated on" +msgstr "" + +#. module: test_translation_import +#: model:ir.ui.menu,name:test_translation_import.menu_test_translation +msgid "Test translation" msgstr "" #. module: test_translation_import @@ -51,19 +98,16 @@ msgstr "" msgid "Test translation import" msgstr "" -#. module: test_translation_import -#: model:ir.ui.menu,name:test_translation_import.menu_test_translation -msgid "Test translation" -msgstr "" - #. module: test_translation_import #: code:addons/base/models/arthur.py:42 #: code:addons/base/models/arthur.py:43 +#, python-format msgid "Test translation with two code lines" msgstr "" #. module: test_translation_import #: code:addons/base/models/ford.py:42 +#, python-format msgid "Test translation with a code type but different line number in pot" msgstr "" @@ -71,5 +115,11 @@ msgstr "" #: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import__other_name #: code:addons/base/models/marvin.py:42 #: code:addons/base/models/trillian.py:42 +#, python-format msgid "Test translation with two code type and model" msgstr "" + +#. module: test_translation_import +#: model:ir.model,name:test_translation_import.model_test_translation_import +msgid "Test: Translation Import" +msgstr "" diff --git a/odoo/addons/test_translation_import/tests/test_term_count.py b/odoo/addons/test_translation_import/tests/test_term_count.py index 936a9c93c61..58716ad6ec5 100644 --- a/odoo/addons/test_translation_import/tests/test_term_count.py +++ b/odoo/addons/test_translation_import/tests/test_term_count.py @@ -5,7 +5,7 @@ import base64 import io import odoo -from odoo.tests import common +from odoo.tests import common, tagged from odoo.tools.misc import file_open, mute_logger from odoo.tools.translate import _ @@ -179,3 +179,49 @@ class TestTermCount(common.TransactionCase): self.env.context = dict(self.env.context, lang="dot") self.assertEqual(_("Accounting"), "samva", "The code translation was not applied") + +@tagged('post_install', '-at_install') +class TestTranslationFlow(common.TransactionCase): + + def test_export_import(self): + """ Ensure export+import gives the same result as loading a language """ + # load language and generate missing terms to create missing empty terms + with mute_logger('odoo.addons.base.models.ir_translation'): + self.env["base.language.install"].create({'lang': 'fr_FR'}).lang_install() + self.env["base.update.translations"].create({'lang': 'fr_FR'}).act_update() + + translations = self.env["ir.translation"].search([ + ('lang', '=', 'fr_FR'), + ('module', '=', 'test_translation_import') + ]) + + # minus 3 as the original fr.po contains 3 fake code translations (cf + # test_no_duplicate test) which are not found by babel_extract_terms + init_translation_count = len(translations) - 3 + + module = self.env.ref('base.module_test_translation_import') + export = self.env["base.language.export"].create({ + 'lang': 'fr_FR', + 'format': 'po', + 'modules': [(6, 0, [module.id])] + }) + export.act_getfile() + po_file = export.data + self.assertIsNotNone(po_file) + + translations.unlink() + + import_fr = self.env["base.language.import"].create({ + 'name': 'French', + 'code': 'fr_FR', + 'data': export.data, + 'filename': export.name, + }) + with mute_logger('odoo.addons.base.models.res_lang'): + import_fr.with_context(create_empty_translation=True).import_lang() + + import_translation = self.env["ir.translation"].search([ + ('lang', '=', 'fr_FR'), + ('module', '=', 'test_translation_import') + ]) + self.assertEqual(init_translation_count, len(import_translation))