[IMP] test_translation_import: support testing exported pot files
test exported pot files Part-of: odoo/odoo#142329
This commit is contained in:
@@ -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({
|
||||
|
||||
@@ -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()):
|
||||
|
||||
Reference in New Issue
Block a user