[IMP] test_translation_import: support testing exported pot files

test exported pot files

Part-of: odoo/odoo#142329
This commit is contained in:
Chong Wang (cwg)
2023-11-27 12:39:51 +00:00
parent d2f560535f
commit 09a4762be4
3 changed files with 43 additions and 12 deletions
@@ -51,16 +51,19 @@ msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model1__create_uid
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model2__create_uid
msgid "Created by"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model1__create_date
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model2__create_date
msgid "Created on"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model1__display_name
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model2__display_name
msgid "Display Name"
msgstr ""
@@ -71,11 +74,13 @@ msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,help:test_translation_import.field_test_translation_import_model1__name
#: model:ir.model.fields,help:test_translation_import.field_test_translation_import_model2__name
msgid "Help, English"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model1__id
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model2__id
msgid "ID"
msgstr ""
@@ -84,23 +89,26 @@ msgstr ""
msgid "Knife"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model1____last_update
msgid "Last Modified on"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model1__write_uid
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model2__write_uid
msgid "Last Updated by"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model1__write_date
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model2__write_date
msgid "Last Updated on"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model2__model1_id
msgid "Model1"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model1__name
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model2__name
msgid "Name"
msgstr ""
@@ -141,6 +149,7 @@ msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model1__selection
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model2__selection
msgid "Selection"
msgstr ""
@@ -180,8 +189,14 @@ msgstr ""
msgid "Translation Test 1"
msgstr ""
#. module: test_translation_import
#: model:ir.model,name:test_translation_import.model_test_translation_import_model2
msgid "Translation Test 2"
msgstr ""
#. module: test_translation_import
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model1__xml
#: model:ir.model.fields,field_description:test_translation_import.field_test_translation_import_model2__xml
msgid "XML"
msgstr ""
@@ -235,8 +250,8 @@ msgid "link label"
msgstr ""
#. module: test_translation_import
#. odoo-javascript
#. odoo-python
#. odoo-javascript
#: code:addons/test_translation_import/models/models.py:0
#: code:addons/test_translation_import/static/src/xml/js_templates.xml:0
#, python-format
@@ -5,8 +5,8 @@ import io
from markupsafe import Markup
from odoo.tests import common, tagged
from odoo.tools.misc import file_open, mute_logger
from odoo.tools.translate import TranslationModuleReader, TranslationRecordReader, code_translations, CodeTranslations, PYTHON_TRANSLATION_COMMENT, JAVASCRIPT_TRANSLATION_COMMENT, WEB_TRANSLATION_COMMENT
from odoo.tools.misc import file_open, mute_logger, file_path
from odoo.tools.translate import TranslationModuleReader, TranslationRecordReader, code_translations, CodeTranslations, PYTHON_TRANSLATION_COMMENT, JAVASCRIPT_TRANSLATION_COMMENT, WEB_TRANSLATION_COMMENT, TranslationFileReader
from odoo import Command
from odoo.addons.base.models.ir_fields import BOOLEAN_TRANSLATIONS
@@ -231,6 +231,22 @@ class TestImport(common.TransactionCase):
@tagged('post_install', '-at_install')
class TestTranslationFlow(common.TransactionCase):
def test_export_pot(self):
module_name = 'test_translation_import'
module = self.env.ref('base.module_' + module_name)
export = self.env["base.language.export"].create({
'format': 'po',
'modules': [Command.set([module.id])]
})
export.act_getfile()
pot_file_data = export.data
self.assertIsNotNone(pot_file_data)
with io.BytesIO(base64.b64decode(pot_file_data)) as pot_file:
pot_file.name = f'{module_name}.pot'
for line1, line2 in zip(TranslationFileReader(pot_file, 'po'), TranslationFileReader(file_path(f'{module_name}/i18n/{module_name}.pot'), 'po')):
self.assertEqual(line1, line2)
def test_export_import(self):
""" Ensure export+import gives the same result as loading a language """
self.env["base.language.install"].create({
+4 -4
View File
@@ -30,7 +30,7 @@ from psycopg2.extras import Json
import odoo
from odoo.exceptions import UserError
from . import config, pycompat
from .misc import file_open, file_path, get_iso_codes, SKIPPED_ELEMENT_TYPES
from .misc import file_open, file_path, get_iso_codes, SKIPPED_ELEMENT_TYPES, OrderedSet
_logger = logging.getLogger(__name__)
@@ -747,14 +747,14 @@ class PoFileWriter:
def write_rows(self, rows):
# we now group the translations by source. That means one translation per source.
grouped_rows = {}
modules = set([])
modules = OrderedSet([])
for module, type, name, res_id, src, trad, comments in rows:
row = grouped_rows.setdefault(src, {})
row.setdefault('modules', set()).add(module)
row.setdefault('modules', OrderedSet()).add(module)
if not row.get('translation') and trad != src:
row['translation'] = trad
row.setdefault('tnrs', []).append((type, name, res_id))
row.setdefault('comments', set()).update(comments)
row.setdefault('comments', OrderedSet()).update(comments)
modules.add(module)
for src, row in sorted(grouped_rows.items()):