diff --git a/setup/web_translate_dialog/odoo/addons/web_translate_dialog b/setup/web_translate_dialog/odoo/addons/web_translate_dialog new file mode 120000 index 000000000..a6d6ae992 --- /dev/null +++ b/setup/web_translate_dialog/odoo/addons/web_translate_dialog @@ -0,0 +1 @@ +../../../../web_translate_dialog \ No newline at end of file diff --git a/setup/web_translate_dialog/setup.py b/setup/web_translate_dialog/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/web_translate_dialog/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/web_translate_dialog/README.rst b/web_translate_dialog/README.rst new file mode 100644 index 000000000..591fd52cb --- /dev/null +++ b/web_translate_dialog/README.rst @@ -0,0 +1,100 @@ +==================== +Web Translate Dialog +==================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github + :target: https://github.com/OCA/web/tree/12.0/web_translate_dialog + :alt: OCA/web +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_translate_dialog + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/162/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module replaces the standard translation view by an easy-to-use pop-up +view where you can translate all the fields of the object in all the installed +languages (for long-time users, it may remind them the translation pop-up of +OpenERP 6.1). + +This module also features: + +* A *Translate* button item in the *More* menu +* Support for HTML fields +* Autosize the textareas to the size of the content + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Go to an object that has translatable fields (*Products* for example) and +select *Actions > Translate* (or click on *Edit* and then click on the flag at +the top-right of one of the translatable fields): the translation view will +pop-up on your screen. This translation view contains all the translatable +fields of the object. + +If you click in the standard translate icon then the translation view will +pop-up with this field only. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Camptocamp +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* Guewen Baconnier (Camptocamp) +* Antonio Espinosa +* Serpent Consulting Services Pvt. Ltd. +* Timon Tschanz +* Akim Juillerat +* Forma Shah + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/web `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/web_translate_dialog/__init__.py b/web_translate_dialog/__init__.py new file mode 100644 index 000000000..fc0fc4348 --- /dev/null +++ b/web_translate_dialog/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2012 Guewen Baconnier (Camptocamp SA) +# Copyright 2016 Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import models diff --git a/web_translate_dialog/__manifest__.py b/web_translate_dialog/__manifest__.py new file mode 100644 index 000000000..0982cb948 --- /dev/null +++ b/web_translate_dialog/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2012 Guewen Baconnier (Camptocamp SA) +# Copyright 2016 Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Web Translate Dialog", + "summary": "Easy-to-use pop-up to translate fields in several languages", + "version": "13.0.1.0.0", + "category": "Web", + "website": "https://github.com/OCA/web", + "author": "Camptocamp, Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["web"], + "data": ["views/res_lang.xml", "views/web_translate.xml"], + "qweb": ["static/src/xml/base.xml"], +} diff --git a/web_translate_dialog/i18n/ar.po b/web_translate_dialog/i18n/ar.po new file mode 100644 index 000000000..3a063f97f --- /dev/null +++ b/web_translate_dialog/i18n/ar.po @@ -0,0 +1,76 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2017-04-28 18:03+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "إلغاء" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "الحقل" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "حفظ" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "ترجم" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, fuzzy, python-format +msgid "Translate fields: /" +msgstr "الترجمات" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +#, fuzzy +msgid "Translation sequence" +msgstr "الترجمات" diff --git a/web_translate_dialog/i18n/de.po b/web_translate_dialog/i18n/de.po new file mode 100644 index 000000000..3065c985a --- /dev/null +++ b/web_translate_dialog/i18n/de.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2017-04-28 18:03+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "Abbrechen" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "Feld" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "Speichern" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "Übersetze" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, fuzzy, python-format +msgid "Translate fields: /" +msgstr "Übersetzungen" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +#, fuzzy +msgid "Translation sequence" +msgstr "Übersetzungen" diff --git a/web_translate_dialog/i18n/es.po b/web_translate_dialog/i18n/es.po new file mode 100644 index 000000000..12641c9c3 --- /dev/null +++ b/web_translate_dialog/i18n/es.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2020-07-09 18:19+0000\n" +"Last-Translator: claudiagn \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "Base" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "Cancelar" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "Define el orden de idioma para aparecer en el diálogo de traducción" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "Campo" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "Idiomas" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "Guardar" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "Traducir" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, python-format +msgid "Translate fields: /" +msgstr "Traducir campos: /" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +msgid "Translation sequence" +msgstr "Secuencia de traducción" diff --git a/web_translate_dialog/i18n/fi.po b/web_translate_dialog/i18n/fi.po new file mode 100644 index 000000000..dd62ca815 --- /dev/null +++ b/web_translate_dialog/i18n/fi.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2017-04-28 18:03+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "Peru" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "Kenttä" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "Tallenna" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "Käännä" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, fuzzy, python-format +msgid "Translate fields: /" +msgstr "Käännökset" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +#, fuzzy +msgid "Translation sequence" +msgstr "Käännökset" diff --git a/web_translate_dialog/i18n/fr.po b/web_translate_dialog/i18n/fr.po new file mode 100644 index 000000000..7e97ddbf7 --- /dev/null +++ b/web_translate_dialog/i18n/fr.po @@ -0,0 +1,77 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2021-02-01 12:44+0000\n" +"Last-Translator: Yann Papouin \n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "Base" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "Annuler" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" +"Définit l'ordre de la langue à apparaître dans la boîte de dialogue de " +"traduction" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "Champ" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "Langues" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "Enregistrer" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "Traduire" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, python-format +msgid "Translate fields: /" +msgstr "Traduire les champs : /" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +msgid "Translation sequence" +msgstr "Séquence de traduction" diff --git a/web_translate_dialog/i18n/hr.po b/web_translate_dialog/i18n/hr.po new file mode 100644 index 000000000..8ed4f4af2 --- /dev/null +++ b/web_translate_dialog/i18n/hr.po @@ -0,0 +1,77 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2017-04-28 18:03+0000\n" +"Last-Translator: Bole , 2017\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "Otkaži" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "Polje" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "Snimi" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "Prevedi" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, fuzzy, python-format +msgid "Translate fields: /" +msgstr "Prevodi" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +#, fuzzy +msgid "Translation sequence" +msgstr "Prevodi" diff --git a/web_translate_dialog/i18n/it.po b/web_translate_dialog/i18n/it.po new file mode 100644 index 000000000..33fbf92ca --- /dev/null +++ b/web_translate_dialog/i18n/it.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2017-04-28 18:03+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "Annulla" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "Campo" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "Salva" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "Traduci" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, fuzzy, python-format +msgid "Translate fields: /" +msgstr "Traduzioni" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +#, fuzzy +msgid "Translation sequence" +msgstr "Traduzioni" diff --git a/web_translate_dialog/i18n/nl.po b/web_translate_dialog/i18n/nl.po new file mode 100644 index 000000000..dbca13b5a --- /dev/null +++ b/web_translate_dialog/i18n/nl.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2017-04-28 18:03+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "Veld" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "Vertalen" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, fuzzy, python-format +msgid "Translate fields: /" +msgstr "Vertalingen" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +#, fuzzy +msgid "Translation sequence" +msgstr "Vertalingen" diff --git a/web_translate_dialog/i18n/nl_NL.po b/web_translate_dialog/i18n/nl_NL.po new file mode 100644 index 000000000..d9831194b --- /dev/null +++ b/web_translate_dialog/i18n/nl_NL.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-01 03:35+0000\n" +"PO-Revision-Date: 2017-07-01 03:35+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "Annuleer" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, python-format +msgid "Translate fields: /" +msgstr "" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +msgid "Translation sequence" +msgstr "" diff --git a/web_translate_dialog/i18n/pt_BR.po b/web_translate_dialog/i18n/pt_BR.po new file mode 100644 index 000000000..8b4ddbbb0 --- /dev/null +++ b/web_translate_dialog/i18n/pt_BR.po @@ -0,0 +1,76 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2017-04-28 18:03+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "Cancelar" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "Campo" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "Salvar" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "Traduzir" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, fuzzy, python-format +msgid "Translate fields: /" +msgstr "Traduções" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +#, fuzzy +msgid "Translation sequence" +msgstr "Traduções" diff --git a/web_translate_dialog/i18n/sl.po b/web_translate_dialog/i18n/sl.po new file mode 100644 index 000000000..d1bb54dc3 --- /dev/null +++ b/web_translate_dialog/i18n/sl.po @@ -0,0 +1,76 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2020-03-30 22:13+0000\n" +"Last-Translator: Matjaz Mozetic \n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3;\n" +"X-Generator: Weblate 3.10\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "Osnova" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "Preklic" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "Določa vrstni red jezika v prikazu prevajalskega dialoga" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "Polje" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "Jeziki" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "Shrani" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "Prevod" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, python-format +msgid "Translate fields: /" +msgstr "Polja prevoda: /" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +msgid "Translation sequence" +msgstr "Zaporedje prevoda" diff --git a/web_translate_dialog/i18n/tr.po b/web_translate_dialog/i18n/tr.po new file mode 100644 index 000000000..e4a673192 --- /dev/null +++ b/web_translate_dialog/i18n/tr.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 18:03+0000\n" +"PO-Revision-Date: 2017-04-28 18:03+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "İptal" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "Alan" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "Kaydet" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "Çeviri" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, fuzzy, python-format +msgid "Translate fields: /" +msgstr "daha çevrilmedi" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +#, fuzzy +msgid "Translation sequence" +msgstr "daha çevrilmedi" diff --git a/web_translate_dialog/i18n/web_translate_dialog.pot b/web_translate_dialog/i18n/web_translate_dialog.pot new file mode 100644 index 000000000..9df963f7e --- /dev/null +++ b/web_translate_dialog/i18n/web_translate_dialog.pot @@ -0,0 +1,70 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_translate_dialog +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_base +msgid "Base" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:49 +#, python-format +msgid "Cancel" +msgstr "" + +#. module: web_translate_dialog +#: model:ir.model.fields,help:web_translate_dialog.field_res_lang__tr_sequence +msgid "Defines the order of language to appear in translation dialog" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:14 +#, python-format +msgid "Field" +msgstr "" + +#. module: web_translate_dialog +#: model:ir.model,name:web_translate_dialog.model_res_lang +msgid "Languages" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/xml/base.xml:46 +#, python-format +msgid "Save" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:240 +#, python-format +msgid "Translate" +msgstr "" + +#. module: web_translate_dialog +#. openerp-web +#: code:addons/web_translate_dialog/static/src/js/web_translate_dialog.js:26 +#, python-format +msgid "Translate fields: /" +msgstr "" + +#. module: web_translate_dialog +#: model:ir.model.fields,field_description:web_translate_dialog.field_res_lang__tr_sequence +msgid "Translation sequence" +msgstr "" + diff --git a/web_translate_dialog/models/__init__.py b/web_translate_dialog/models/__init__.py new file mode 100644 index 000000000..399e4aa35 --- /dev/null +++ b/web_translate_dialog/models/__init__.py @@ -0,0 +1,2 @@ +from . import base +from . import res_lang diff --git a/web_translate_dialog/models/base.py b/web_translate_dialog/models/base.py new file mode 100644 index 000000000..6c45e3670 --- /dev/null +++ b/web_translate_dialog/models/base.py @@ -0,0 +1,37 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +from odoo import models + + +class BaseModel(models.BaseModel): + + _inherit = "base" + + def get_field_translations(self, field_names): + """Get only the existing translations for specified field + + :param field_name: Name of the field + :return: dict of + {self.id: {'lang_code': {'field_name':ir.translation,value}} + """ + read_res = self.with_context(lang="en_US").read(fields=field_names) + res = {} + for rec in read_res: + rec_id = rec.get("id") + del rec["id"] + res[rec_id] = {"en_US": rec} + for rec_id, values in res.items(): + for name in field_names: + + tr_read_res = self.env["ir.translation"].search_read( + [ + ("name", "=", "{},{}".format(self._name, name)), + ("res_id", "=", rec_id), + ("lang", "!=", "en_US"), + ] + ) + for tr_res in tr_read_res: + if not tr_res.get("lang") in values: + values[tr_res.get("lang")] = {} + values[tr_res.get("lang")][name] = tr_res.get("value") + return res diff --git a/web_translate_dialog/models/res_lang.py b/web_translate_dialog/models/res_lang.py new file mode 100644 index 000000000..9f497b21d --- /dev/null +++ b/web_translate_dialog/models/res_lang.py @@ -0,0 +1,14 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +from odoo import fields, models + + +class ResLang(models.Model): + + _inherit = "res.lang" + + tr_sequence = fields.Integer( + string="Translation sequence", + help="Defines the order of language to appear in translation dialog", + default=10, + ) diff --git a/web_translate_dialog/readme/CONTRIBUTORS.rst b/web_translate_dialog/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..f054626ef --- /dev/null +++ b/web_translate_dialog/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +* Guewen Baconnier (Camptocamp) +* Antonio Espinosa +* Serpent Consulting Services Pvt. Ltd. +* Timon Tschanz +* Akim Juillerat +* Foram Shah diff --git a/web_translate_dialog/readme/DESCRIPTION.rst b/web_translate_dialog/readme/DESCRIPTION.rst new file mode 100644 index 000000000..3915b8c40 --- /dev/null +++ b/web_translate_dialog/readme/DESCRIPTION.rst @@ -0,0 +1,10 @@ +This module replaces the standard translation view by an easy-to-use pop-up +view where you can translate all the fields of the object in all the installed +languages (for long-time users, it may remind them the translation pop-up of +OpenERP 6.1). + +This module also features: + +* A *Translate* button item in the *More* menu +* Support for HTML fields +* Autosize the textareas to the size of the content diff --git a/web_translate_dialog/readme/USAGE.rst b/web_translate_dialog/readme/USAGE.rst new file mode 100644 index 000000000..e2f6c3dd2 --- /dev/null +++ b/web_translate_dialog/readme/USAGE.rst @@ -0,0 +1,8 @@ +Go to an object that has translatable fields (*Products* for example) and +select *Actions > Translate* (or click on *Edit* and then click on the flag at +the top-right of one of the translatable fields): the translation view will +pop-up on your screen. This translation view contains all the translatable +fields of the object. + +If you click in the standard translate icon then the translation view will +pop-up with this field only. diff --git a/web_translate_dialog/static/description/icon.png b/web_translate_dialog/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/web_translate_dialog/static/description/icon.png differ diff --git a/web_translate_dialog/static/description/index.html b/web_translate_dialog/static/description/index.html new file mode 100644 index 000000000..70c99aed2 --- /dev/null +++ b/web_translate_dialog/static/description/index.html @@ -0,0 +1,444 @@ + + + + + + +Web Translate Dialog + + + +
+

Web Translate Dialog

+ + +

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runbot

+

This module replaces the standard translation view by an easy-to-use pop-up +view where you can translate all the fields of the object in all the installed +languages (for long-time users, it may remind them the translation pop-up of +OpenERP 6.1).

+

This module also features:

+
    +
  • A Translate button item in the More menu
  • +
  • Support for HTML fields
  • +
  • Autosize the textareas to the size of the content
  • +
+

Table of contents

+ +
+

Usage

+

Go to an object that has translatable fields (Products for example) and +select Actions > Translate (or click on Edit and then click on the flag at +the top-right of one of the translatable fields): the translation view will +pop-up on your screen. This translation view contains all the translatable +fields of the object.

+

If you click in the standard translate icon then the translation view will +pop-up with this field only.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Camptocamp
  • +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/web project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/web_translate_dialog/static/src/css/base.css b/web_translate_dialog/static/src/css/base.css new file mode 100644 index 000000000..78fce0c8d --- /dev/null +++ b/web_translate_dialog/static/src/css/base.css @@ -0,0 +1,18 @@ +/* Copyright 2012 Guewen Baconnier (Camptocamp SA) + * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */ + +.oe_translation_field { + width: 95%; + margin-top: 5px; +} +.oe_translation_field.touched { + border: 1px solid green !important; +} +.modal-xl { + max-width: 90%; +} + +.oe_form_frame_cell.field_name { + padding-top: 5px; + vertical-align: top; +} diff --git a/web_translate_dialog/static/src/js/web_translate_dialog.js b/web_translate_dialog/static/src/js/web_translate_dialog.js new file mode 100644 index 000000000..4cf9361fd --- /dev/null +++ b/web_translate_dialog/static/src/js/web_translate_dialog.js @@ -0,0 +1,299 @@ +/* Copyright 2012 Guewen Baconnier (Camptocamp SA) + Copyright 2016 Antonio Espinosa + * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */ + +odoo.define("web_translate_dialog.translate_dialog", function(require) { + "use strict"; + + var core = require("web.core"); + var BasicController = require("web.BasicController"); + var data = require("web.data"); + var Context = require("web.Context"); + var concurrency = require("web.concurrency"); + var Dialog = require("web.Dialog"); + var session = require("web.session"); + var rpc = require("web.rpc"); + var FormController = require("web.FormController"); + var _t = core._t; + var QWeb = core.qweb; + var Mutex = concurrency.Mutex; + + var TranslateDialog = Dialog.extend({ + template: "TranslateDialog", + init: function(parent, options) { + var title_string = _t("Translate fields: /"); + var single_field = false; + if (options.field) { + var field_names = [options.field.fieldName]; + single_field = true; + title_string = title_string.replace("/", field_names); + } else { + field_names = this.get_translatable_fields(parent); + } + this._super(parent, {title: title_string, size: "x-large"}); + this.view_language = session.user_context.lang; + this.view = parent; + this.view_type = parent.viewType || ""; + this.translatable_fields = field_names; + this.res_id = options.res_id; + this.single_field = single_field; + this.languages = null; + this.languages_loaded = $.Deferred(); + this.lang_data = new data.DataSetSearch(this, "res.lang", parent.context, [ + ["active", "=", "1"], + ]); + this.lang_data.set_sort(["tr_sequence asc", "id asc"]); + this.lang_data.read_slice(["code", "name"]).then(this.on_languages_loaded); + }, + willStart: function() { + var self = this; + return this._super.apply(this, arguments).then(function() { + if (self.size === "x-large") { + self.$modal.find(".modal-dialog").addClass("modal-xl"); + } + }); + }, + get_translatable_fields: function(parent) { + var field_list = []; + _.each(parent.renderer.state.fields, function(field, name) { + var related_readonly = + typeof field.related !== "undefined" && field.readonly; + if ( + field.translate === true && + !related_readonly && + parent.renderer.state.getFieldNames().includes(name) + ) { + field_list.push(name); + } + }); + return field_list; + }, + on_languages_loaded: function(langs) { + this.languages = langs; + this.languages_loaded.resolve(); + }, + open: function() { + // The template needs the languages + return $.when(this.languages_loaded).then($.proxy(this._super, this)); + }, + start: function() { + var self = this; + this.$(".oe_translation_field").change(function() { + $(this).toggleClass( + "touched", + $(this).val() !== $(this).attr("data-value") + ); + }); + this.$footer.html(QWeb.render("TranslateDialog.buttons")); + this.$footer + .find(".oe_form_translate_dialog_save_button") + .click(function() { + self.on_button_save(); + self.on_button_close(); + }); + this.$footer + .find(".oe_form_translate_dialog_cancel_button") + .click(function() { + self.on_button_close(); + }); + + this.do_load_fields_values(); + }, + resize_textareas: function() { + var textareas = this.$("textarea.oe_translation_field"); + var max_height = 100; + // Resize textarea either to the max height of its content if it stays + // in the modal or to the max height available in the modal + if (textareas.length) { + _.each(textareas, function(textarea) { + if (textarea.scrollHeight > max_height) { + max_height = textarea.scrollHeight; + } + }); + var max_client_height = + $(window).height() - $(".modal-content").height(); + var new_height = Math.min(max_height, max_client_height); + textareas.css({minHeight: new_height}); + } + }, + set_maxlength: function() { + // Set maxlength if initial field has size attr + _.each( + this.translatable_fields, + function(field_name) { + var size = $("[name=" + field_name + "]")[0].maxLength; + if (size > 0) { + this.$( + 'input.oe_translation_field[name$="' + + field_name + + '"], textarea.oe_translation_field[name$="' + + field_name + + '"]' + ).attr("maxlength", size); + } + }, + this + ); + }, + initialize_html_fields: function(lang) { + // Initialize summernote if HTML field + this.$( + '.oe_form_field_html .oe_translation_field[name^="' + lang + '-"]' + ).each(function() { + var $parent = $(this) + .summernote({ + focus: false, + toolbar: [ + ["style", ["style"]], + ["font", ["bold", "italic", "underline", "clear"]], + ["fontsize", ["fontsize"]], + ["color", ["color"]], + ["para", ["ul", "ol", "paragraph"]], + ["table", ["table"]], + ["insert", ["link", "picture"]], + ["misc", ["codeview"]], + ["history", ["undo", "redo"]], + ], + prettifyHtml: false, + styleWithSpan: false, + inlinemedia: ["p"], + lang: "odoo", + onChange: function(value) { + $(this).toggleClass( + "touched", + value !== $(this).attr("data-value") + ); + }, + }) + .parent(); + // Triggers a mouseup to refresh the editor toolbar + $parent.find(".note-editable").trigger("mouseup"); + $parent.find(".note-editing-area").css({ + minHeight: "100px", + minWidth: "260px", + }); + }); + }, + set_fields_values: function(lang, tr_value) { + _.each( + tr_value, + function(translation, field) { + this.$('.oe_translation_field[name="' + lang + "-" + field + '"]') + .val(translation || "") + .attr("data-value", translation || ""); + }, + this + ); + this.initialize_html_fields(lang); + }, + do_load_fields_values: function() { + var self = this, + deferred = []; + + this.$(".oe_translation_field") + .val("") + .removeClass("touched"); + + var def = $.Deferred(); + deferred.push(def); + rpc.query({ + model: this.view.modelName, + method: "get_field_translations", + args: [[this.res_id]], + kwargs: { + field_names: this.translatable_fields, + }, + }).then(function(res) { + if (res[self.res_id]) { + _.each(res[self.res_id], function(translation, lang) { + self.set_fields_values(lang, translation); + }); + self.resize_textareas(); + self.set_maxlength(); + def.resolve(); + } + }); + + return deferred; + }, + on_button_save: function() { + var translations = {}, + self = this, + save_mutex = new Mutex(); + this.$(".oe_translation_field.touched").each(function() { + var field = $(this) + .attr("name") + .split("-"); + if (!translations[field[0]]) { + translations[field[0]] = {}; + } + translations[field[0]][field[1]] = $(this).val(); + }); + _.each(translations, function(text, code) { + save_mutex.exec(function() { + var done = new $.Deferred(); + + var context = new Context(session.user_context, {lang: code}); + rpc.query({ + model: self.view.modelName, + method: "write", + args: [self.res_id, text], + kwargs: {context: context.eval()}, + }).then(function() { + done.resolve(); + }); + if (code === self.view_language) { + _.each(text, function(value, key) { + var view_elem = self.view.$(":input[name='" + key + "']"); + view_elem.val(value).trigger("change"); + }); + } + return done; + }); + }); + this.close(); + }, + on_button_close: function() { + this.close(); + }, + }); + + FormController.include({ + renderSidebar: function($node) { + this._super($node); + if (this.sidebar) { + var item = this.is_action_enabled("edit") && { + label: _t("Translate"), + callback: this.on_button_translate, + }; + if (item) { + this.sidebar.items.other.push(item); + } + } + }, + on_button_translate: function() { + var self = this; + $.when(this.has_been_loaded).then(function() { + self.open_translate_dialog(null, self.initialState.res_id); + }); + }, + }); + + BasicController.include({ + open_translate_dialog: function(field, res_id) { + new TranslateDialog(this, {field: field, res_id: res_id}).open(); + }, + + _onTranslate: function(event) { + // The image next to the fields opens the translate dialog + var res_id = event.target.res_id + ? event.target.res_id + : event.target.state.res_id; + this.open_translate_dialog(event.data, res_id); + }, + }); + + return { + TranslateDialog: TranslateDialog, + }; +}); diff --git a/web_translate_dialog/static/src/xml/base.xml b/web_translate_dialog/static/src/xml/base.xml new file mode 100644 index 000000000..1e2797ab4 --- /dev/null +++ b/web_translate_dialog/static/src/xml/base.xml @@ -0,0 +1,92 @@ + + +