Начальное наполнение
This commit is contained in:
parent
cdb7936157
commit
ffafb888b2
3
__init__.py
Normal file
3
__init__.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from . import models
|
29
__manifest__.py
Normal file
29
__manifest__.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
{
|
||||||
|
'name': 'Web Hierarchy',
|
||||||
|
'category': 'Hidden',
|
||||||
|
'version': '1.0',
|
||||||
|
'description':
|
||||||
|
"""
|
||||||
|
Odoo Web Hierarchy view
|
||||||
|
=======================
|
||||||
|
|
||||||
|
This module adds a new view called to be able to define a view to display
|
||||||
|
an organization such as an Organization Chart for employees for instance.
|
||||||
|
""",
|
||||||
|
'depends': ['web'],
|
||||||
|
'assets': {
|
||||||
|
'web.assets_backend': [
|
||||||
|
'web_hierarchy/static/src/hierarchy.variables.scss',
|
||||||
|
'web_hierarchy/static/src/**/*',
|
||||||
|
],
|
||||||
|
'web.assets_web_dark': [
|
||||||
|
('before', 'web_hierarchy/static/src/hierarchy.variables.scss', 'web_hierarchy/static/src/**/*.variables.dark.scss'),
|
||||||
|
],
|
||||||
|
'web.qunit_suite_tests': [
|
||||||
|
'web_hierarchy/static/tests/**/*',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'license': 'LGPL-3',
|
||||||
|
}
|
121
i18n/ar.po
Normal file
121
i18n/ar.po
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
# Malaz Abuidris <msea@odoo.com>, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Malaz Abuidris <msea@odoo.com>, 2024\n"
|
||||||
|
"Language-Team: Arabic (https://app.transifex.com/odoo/teams/41243/ar/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: ar\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_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "عرض نافذة الإجراء"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "قاعدة "
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "لا يمكن تغيير الأصل لأنه سيتسبب في حلقة مغلقة. "
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "طي"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "التسلسل الهرمي"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr "يمكن أن يكون التسلسل الهرمي للتابع إما حقل أو قالب فقط ، به %s "
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
"يمكن أن تحتوي نافذة عرض التسلسل الهرمي الآن على علامة تصنيف قوالب واحدة فقط "
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"من المستحيل تحديث العقدة الأصلية للعقدة التي تم سحبها لأنه لم يتم العثور على"
|
||||||
|
" الأصل. "
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"خواص غير صالحة (%s) في نافذة عرض التسلسل الهرمي. يجب أن تكون الخواص في (%s) "
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "جديد"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "لا يمكن أن يكون السجل الأصلي السجل الذي تم سحبه. "
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "كشف"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "أداة العرض"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "نوع واجهة العرض"
|
116
i18n/bg.po
Normal file
116
i18n/bg.po
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# KeyVillage, 2023
|
||||||
|
# Maria Boyadjieva <marabo2000@gmail.com>, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Maria Boyadjieva <marabo2000@gmail.com>, 2024\n"
|
||||||
|
"Language-Team: Bulgarian (https://app.transifex.com/odoo/teams/41243/bg/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: bg\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Основа"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Сгънете"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Йерархия"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Нов"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Преглед"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Вид изглед"
|
124
i18n/ca.po
Normal file
124
i18n/ca.po
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# RGB Consulting <odoo@rgbconsulting.com>, 2023
|
||||||
|
# Josep Anton Belchi, 2023
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Arnau Ros, 2024
|
||||||
|
# Manel Fernandez Ramirez <manelfera@outlook.com>, 2024
|
||||||
|
# Óscar Fonseca <tecnico@pyming.com>, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Óscar Fonseca <tecnico@pyming.com>, 2024\n"
|
||||||
|
"Language-Team: Catalan (https://app.transifex.com/odoo/teams/41243/ca/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: ca\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Vista de la finestra d'acció"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Base"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "No es pot canviar el pare perquè causarà un cíclic."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Plegar"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Jerarquia"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr "El fill jeràrquic només pot ser un camp o plantilla, s'ha obtingut %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "La vista jeràrquica només pot contenir una etiqueta de plantilles."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"Impossible d'actualitzar el node pare a partir del node arrossegat perquè no"
|
||||||
|
" s'ha trobat cap pare."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Atributs no vàlids (%s) a la vista jeràrquica. Els atributs han d'estar en "
|
||||||
|
"(%s)"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Nou"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "El registre pare no pot ser el registre arrossegat."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Desplegar"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Vista"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Tipus de vista"
|
117
i18n/cs.po
Normal file
117
i18n/cs.po
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Jiří Podhorecký, 2023
|
||||||
|
# Jakub Smolka, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Wil Odoo, 2024\n"
|
||||||
|
"Language-Team: Czech (https://app.transifex.com/odoo/teams/41243/cs/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: cs\n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Akce okna zobrazení"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Jádro"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Sbalit"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarchie"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Nové"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Rozbalit"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Zobrazení"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Typ zobrazení"
|
116
i18n/da.po
Normal file
116
i18n/da.po
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Ejner Sønniksen <ejner@vkdata.dk>, 2023
|
||||||
|
# Martin Trigaux, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Martin Trigaux, 2024\n"
|
||||||
|
"Language-Team: Danish (https://app.transifex.com/odoo/teams/41243/da/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: da\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Visning af handlingsvindue"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Basis"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Fold"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarki"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Ny"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Fold ud"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Vis"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Se type"
|
123
i18n/de.po
Normal file
123
i18n/de.po
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Larissa Manderfeld, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Larissa Manderfeld, 2024\n"
|
||||||
|
"Language-Team: German (https://app.transifex.com/odoo/teams/41243/de/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: de\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Ansicht des Aktionsfensters"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Basis"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
"Sie können das übergeordnete Element nicht ändern, da dies einen Zyklus "
|
||||||
|
"verursacht."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Einklappen"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarchie"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
"Untergeordnetes Element der Hierarchie kann nur Feld oder Vorlage sein, %s "
|
||||||
|
"erhalten"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "Hierarchie-Ansicht kann nur ein Vorlagen-Stichwort beinhalten"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"Es ist nicht möglich, den übergeordneten Knoten des gezogenen Knotens zu "
|
||||||
|
"aktualisieren, da kein übergeordneter Knoten gefunden wurde."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Ungültige Attribute (%s) in der Hierarchie-Ansicht. Attribute müssen in (%s)"
|
||||||
|
" stehen."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Neu"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "Der übergeordnete Datensatz kann nicht der gezogene Datensatz sein."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Ausklappen"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Ansicht"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Ansichtstyp"
|
122
i18n/es.po
Normal file
122
i18n/es.po
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
# Larissa Manderfeld, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Larissa Manderfeld, 2024\n"
|
||||||
|
"Language-Team: Spanish (https://app.transifex.com/odoo/teams/41243/es/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: es\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Vista de acción de ventana"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Base"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "No se puede cambiar el principal porque causará un ciclo."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Plegar"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Jerarquía"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
"La jerarquía secundaria solo puede ser un campo o una plantilla, recibió %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "La vista de jerarquía solo puede contener una etiqueta de plantillas"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"No se pudo actualizar el nodo principal del nodo arrastrado. No se encontró "
|
||||||
|
"ningún nodo principal."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Atributos no válidos (%s) en la vista gantt. Los atributos deben estar en "
|
||||||
|
"(%s)"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Nuevo"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "El registro principal no puede ser el registro que arrastró."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Desplegar"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Ver"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Tipo de vista"
|
122
i18n/es_419.po
Normal file
122
i18n/es_419.po
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Fernanda Alvarez, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
# Lucia Pacheco, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Lucia Pacheco, 2024\n"
|
||||||
|
"Language-Team: Spanish (Latin America) (https://app.transifex.com/odoo/teams/41243/es_419/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: es_419\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Vista de acción de ventana"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Base"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "No se puede cambiar el principal porque causará un ciclo."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Plegar"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Jerarquía"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
"La jerarquía secundaria solo puede ser un campo o una plantilla, obtuvo %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "La vista de jerarquía solo puede contener una etiqueta de plantillas"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"No se pudo actualizar el nodo principal del nodo arrastrado. No se encontró "
|
||||||
|
"ningún nodo principal."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Atributos no válidos (%s) en la vista gantt. Los atributos deben estar en "
|
||||||
|
"(%s)"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Nuevo"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "El registro principal no puede ser el registro que arrastró."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Desplegar"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Ver"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Tipo de vista"
|
119
i18n/et.po
Normal file
119
i18n/et.po
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Leaanika Randmets, 2023
|
||||||
|
# Arma Gedonsky <armagedonsky@hot.ee>, 2023
|
||||||
|
# Patrick-Jordan Kiudorv, 2023
|
||||||
|
# Eneli Õigus <enelioigus@gmail.com>, 2024
|
||||||
|
# Martin Trigaux, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Martin Trigaux, 2024\n"
|
||||||
|
"Language-Team: Estonian (https://app.transifex.com/odoo/teams/41243/et/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: et\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Toimingu akna vaade"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Baas"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Voldi"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarhia"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Uus"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Ava"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Vaade"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Vaate tüüp"
|
118
i18n/fa.po
Normal file
118
i18n/fa.po
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Zahed Alfak <tamass4116@gmail.com>, 2023
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Hamed Mohammadi <hamed@dehongi.com>, 2024
|
||||||
|
# Hanna Kheradroosta, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Hanna Kheradroosta, 2024\n"
|
||||||
|
"Language-Team: Persian (https://app.transifex.com/odoo/teams/41243/fa/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: fa\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "مشاهده پنجره اقدام"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "پایه"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "تا کردن"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "سلسله مراتب"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "جدید"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "باز کردن"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "نما"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "نوع نما"
|
122
i18n/fi.po
Normal file
122
i18n/fi.po
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Tuomo Aura <tuomo.aura@web-veistamo.fi>, 2023
|
||||||
|
# Miku Laitinen <miku.laitinen@gmail.com>, 2023
|
||||||
|
# Martin Trigaux, 2024
|
||||||
|
# Ossi Mantylahti <ossi.mantylahti@obs-solutions.fi>, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Ossi Mantylahti <ossi.mantylahti@obs-solutions.fi>, 2024\n"
|
||||||
|
"Language-Team: Finnish (https://app.transifex.com/odoo/teams/41243/fi/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: fi\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Toimintoikkunan näkymä"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Pohja"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "Aiempaa ei voi muuttaa, koska se aiheuttaa ikuisen kierron."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Laskosta"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarkia"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr "Hierarkian alempi taso voi olla vain kenttä tai malli, sai %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "Hierarkianäkymä voi sisältää vain yhden mallinetunnisteen"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"Vedetyn solmun vanhemman solmun päivittäminen on mahdotonta, koska ylemmän "
|
||||||
|
"tason solmua ei ole löydetty."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Virheelliset attribuutit (%s) hierarkianäkymässä. Attribuuttien on oltava "
|
||||||
|
"(%s)"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Uusi"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "Ylemmällä tasolla oleva tietue ei voi olla vedettävä tietue."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Avaa laskostus"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Näytä"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Näkymän tyyppi"
|
122
i18n/fr.po
Normal file
122
i18n/fr.po
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Jolien De Paepe, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Jolien De Paepe, 2024\n"
|
||||||
|
"Language-Team: French (https://app.transifex.com/odoo/teams/41243/fr/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: fr\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Vue de la fenêtre d'action"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Base"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
"Il n'est pas possible de modifier le parent, car cela entraînerait un cycle."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Replier"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hiérarchie"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
"Une ligne enfant hiérarchie ne peut être qu'un champ ou un modèle, vous avez"
|
||||||
|
" %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "La vie hiérarchie ne peut contenir qu'une seule étiquette de modèles"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"Impossible de mettre à jour le nœud parent du nœud déplacé, car aucun parent"
|
||||||
|
" n'a été trouvé."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Attributs invalides (%s) dans la vue hiérarchie. Les attributs doivent être "
|
||||||
|
"en (%s)"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Nouveau"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "L'enregistrement parent ne peut pas être l'enregistrement déplacé."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Déplier"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Vue"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Type de vue"
|
116
i18n/he.po
Normal file
116
i18n/he.po
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# ZVI BLONDER <ZVIBLONDER@gmail.com>, 2024
|
||||||
|
# Martin Trigaux, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Martin Trigaux, 2024\n"
|
||||||
|
"Language-Team: Hebrew (https://app.transifex.com/odoo/teams/41243/he/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: he\n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "תצוגת חלון פעולה"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "בסיס"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "קפל"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "היררכיה"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "חדש"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "פרוס"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "תצוגה"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "סוג תצוגה"
|
119
i18n/hu.po
Normal file
119
i18n/hu.po
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Tamás Németh <ntomasz81@gmail.com>, 2023
|
||||||
|
# Csaba Tóth <i3rendszerhaz@gmail.com>, 2023
|
||||||
|
# krnkris, 2023
|
||||||
|
# Martin Trigaux, 2024
|
||||||
|
# Ákos Nagy <akos.nagy@oregional.hu>, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Ákos Nagy <akos.nagy@oregional.hu>, 2024\n"
|
||||||
|
"Language-Team: Hungarian (https://app.transifex.com/odoo/teams/41243/hu/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: hu\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Műveletablak megjelenítése"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Alap"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Behajtás"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Rangsor"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Új"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Kihajtás"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Megtekintés"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Nézet típusa"
|
120
i18n/id.po
Normal file
120
i18n/id.po
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
# Abe Manyo, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Abe Manyo, 2024\n"
|
||||||
|
"Language-Team: Indonesian (https://app.transifex.com/odoo/teams/41243/id/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: id\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Jendela Tindakan"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Base"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "Tidak dapat mengubah parent karena akan menimbulkan cyclic."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Lipat"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hirarki"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr "Hierarki anak hanya dapat merupakan field atau templat, bukan %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "Tampilan hierarki hanya dapat memiliki satu tag templat"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"Mustahil untuk memperbarui node induk dari node yang ditarik karena tidak "
|
||||||
|
"ada induk yang ditemukan."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Atribut tidak valid (%s) di tampilan hierarki. Atribut harus berada di (%s)"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Baru"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "Record induk tidak dapat merupakan record yang ditarik."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Buka"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Lihat"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Tipe Tampilan"
|
123
i18n/it.po
Normal file
123
i18n/it.po
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
# Sergio Zanchetta <primes2h@gmail.com>, 2024
|
||||||
|
# Marianna Ciofani, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Marianna Ciofani, 2024\n"
|
||||||
|
"Language-Team: Italian (https://app.transifex.com/odoo/teams/41243/it/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: it\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Azione visualizzazione finestra"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Base"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "Impossibile modificare il genitore perché causerà un ciclo."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Minimizza"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Gerarchia"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
"Una riga figlia gerarchia può essere solo un campo o un modello, tu hai %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "La vista gerarchia può contenere solo un tag modello"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"Impossibile aggiornare il nodo genitore del nodo spostato perché non è stato"
|
||||||
|
" trovato nessun nodo."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Attributi non validi (%s) nella vista gerarchia. Gli attributi devono essere"
|
||||||
|
" in (%s)"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Nuova"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "Il record genitore non può essere il record spostato."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Espandi"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Visualizza"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Tipo vista"
|
117
i18n/ja.po
Normal file
117
i18n/ja.po
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
# Junko Augias, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Junko Augias, 2024\n"
|
||||||
|
"Language-Team: Japanese (https://app.transifex.com/odoo/teams/41243/ja/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: ja\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "アクションウィンドウビュー"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "ベース"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "サイクリックを引き起こすため、親を変更することはできません。"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "折りたたむ"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "階層"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr "階層の子にはフィールドかテンプレートしか指定できません。 %sがあります。"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "階層ビューにはテンプレートタグを1つだけ含めることができます"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr "ドラッグされたノードの親ノードが見つからないため、更新できません。"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr "階層ビューの無効な属性 (%s)。属性は(%s)である必要があります。"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "新規"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "親レコードをドラッグしたレコードにすることはできません。"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "展開"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "ビュー"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "ビュータイプ"
|
117
i18n/ko.po
Normal file
117
i18n/ko.po
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Daye Jeong, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Wil Odoo, 2024\n"
|
||||||
|
"Language-Team: Korean (https://app.transifex.com/odoo/teams/41243/ko/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: ko\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "작업 윈도우 보기"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "기준액"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "접기"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "계층"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr "하위 계층 구조는 필드나 템플릿만 선택 가능하며, 다음 내용입니다 %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "계층 구조 보기에는 서식 태그가 하나만 포함될 수 있습니다."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr "상위 노드를 찾을 수 없으므로 드래그한 노드의 상위 노드를 업데이트할 수 없습니다."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr "계층 구조 보기에 유효하지 않은 속성 (%s)이 있습니다. 속성은 (%s)에 위치해야 합니다."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "신규"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "상위 레코드는 드래그한 레코드가 될 수 없습니다."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "펼치기"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "보기"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "화면 유형"
|
118
i18n/lt.po
Normal file
118
i18n/lt.po
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# digitouch UAB <digitouchagencyeur@gmail.com>, 2023
|
||||||
|
# Naglis Jonaitis, 2023
|
||||||
|
# Linas Versada <linaskrisiukenas@gmail.com>, 2024
|
||||||
|
# Martin Trigaux, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Martin Trigaux, 2024\n"
|
||||||
|
"Language-Team: Lithuanian (https://app.transifex.com/odoo/teams/41243/lt/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: lt\n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Veiksmo lango peržiūra"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Bazė"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Sutraukti"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarchija"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Naujas"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Išskleisti"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Peržiūrėti"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Rodinio tipas"
|
117
i18n/lv.po
Normal file
117
i18n/lv.po
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Arnis Putniņš <arnis@allegro.lv>, 2023
|
||||||
|
# ievaputnina <ievai.putninai@gmail.com>, 2024
|
||||||
|
# JanisJanis <jbojars@gmail.com>, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: JanisJanis <jbojars@gmail.com>, 2024\n"
|
||||||
|
"Language-Team: Latvian (https://app.transifex.com/odoo/teams/41243/lv/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: lv\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Darbības loga skatījums"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Bāze"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Sakļaut"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Jauns"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Izvērst"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Skatījums"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Skatījuma Veids"
|
124
i18n/nl.po
Normal file
124
i18n/nl.po
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
# Jolien De Paepe, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Jolien De Paepe, 2024\n"
|
||||||
|
"Language-Team: Dutch (https://app.transifex.com/odoo/teams/41243/nl/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: nl\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Actie venster weergave"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Basis"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
"Kan het bovenliggende model niet wijzigen omdat het een cyclus zal "
|
||||||
|
"genereren."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Vouwen"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarchie"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
"Onderliggende hiërarchie kan alleen een veld of een sjabloon zijn, bekwam %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "Hiërarchieweergave kan slechts één sjabloonlabel bevatten"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"Kon de bovenliggende node van de versleepte node niet bijwerken, omdat er "
|
||||||
|
"geen bovenliggende node is gevonden."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Ongeldige kenmerken (%s) in de hiërarchieweergave. Kenmerken moeten in (%s) "
|
||||||
|
"zijn"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Nieuw"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "Het bovenliggend record kan niet het versleepte record zijn."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Uitvouwen"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Bekijk"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Soort weergave"
|
116
i18n/pl.po
Normal file
116
i18n/pl.po
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Paweł Michoń <michon.pawel@wp.pl>, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Wil Odoo, 2024\n"
|
||||||
|
"Language-Team: Polish (https://app.transifex.com/odoo/teams/41243/pl/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: pl\n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Widok okna akcji"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Baza"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Zwiń"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarchia"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Nowe"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Rozwiń"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Widok"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Typ widoku"
|
116
i18n/pt.po
Normal file
116
i18n/pt.po
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Nuno Silva <nuno.silva@arxi.pt>, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Wil Odoo, 2024\n"
|
||||||
|
"Language-Team: Portuguese (https://app.transifex.com/odoo/teams/41243/pt/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: pt\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Base"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Dobrar"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarquia"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Novo"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Ver"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Tipo de Vista"
|
122
i18n/pt_BR.po
Normal file
122
i18n/pt_BR.po
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# a75f12d3d37ea5bf159c4b3e85eb30e7_0fa6927, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
# Maitê Dietze, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Maitê Dietze, 2024\n"
|
||||||
|
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/odoo/teams/41243/pt_BR/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: pt_BR\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Exibição da janela de ação"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Base"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "Não é possível alterar o superior porque isso causará um ciclo."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Dobrar"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarquia"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
"O secundário da hierarquia só pode ser um campo ou um modelo, mas obteve %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "A visualização hierárquica pode conter apenas um marcador de modelo"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"Não é possível atualizar o nó primário do nó arrastado porque nenhum "
|
||||||
|
"primário foi encontrado."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Atributos inválidos (%s) na exibição de hierarquia. Os atributos devem estar"
|
||||||
|
" em (%s)"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Novo"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "O registro primário não pode ser o registro arrastado."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Desdobrar"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Visualização"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Tipo de visualização"
|
123
i18n/ru.po
Normal file
123
i18n/ru.po
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Сергей Шебанин <sergey@shebanin.ru>, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Wil Odoo, 2024\n"
|
||||||
|
"Language-Team: Russian (https://app.transifex.com/odoo/teams/41243/ru/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: ru\n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Вид окна действий"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "База"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
"Невозможно изменить родителя, так как это приведет к циклической ситуации."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Сложить"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Иерархия"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
"Дочерним элементом иерархии может быть только поле или шаблон, есть %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "Иерархическое представление может содержать только один тег шаблонов"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
"Невозможно обновить родительский узел перетаскиваемого узла, поскольку "
|
||||||
|
"родительский узел не найден."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
"Недопустимые атрибуты (%s) в представлении иерархии. Атрибуты должны быть в "
|
||||||
|
"(%s)"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Новый"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "Родительская запись не может быть перетаскиваемой записью."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Разворот"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Просмотр"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Тип просмотра"
|
116
i18n/sk.po
Normal file
116
i18n/sk.po
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Wil Odoo, 2024\n"
|
||||||
|
"Language-Team: Slovak (https://app.transifex.com/odoo/teams/41243/sk/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: sk\n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Okno pohľadu aktivít"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Základ"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Zložiť"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarchia"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Nové"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Rozvinúť"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Náhľad"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Typ zobrazenia"
|
117
i18n/sl.po
Normal file
117
i18n/sl.po
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Tomaž Jug <tomaz@editor.si>, 2023
|
||||||
|
# Matjaz Mozetic <m.mozetic@matmoz.si>, 2023
|
||||||
|
# Martin Trigaux, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Martin Trigaux, 2024\n"
|
||||||
|
"Language-Team: Slovenian (https://app.transifex.com/odoo/teams/41243/sl/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: sl\n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Pogled okna za ukrep"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Osnova"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Zlaganje"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Novo"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Prikaz"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Vrsta prikaza"
|
119
i18n/sr.po
Normal file
119
i18n/sr.po
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Uros Kalajdzic <ukalajdzic@gmail.com>, 2023
|
||||||
|
# Dragan Vukosavljevic <dragan.vukosavljevic@gmail.com>, 2023
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Milan Bojovic <mbojovic@outlook.com>, 2024
|
||||||
|
# コフスタジオ, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: コフスタジオ, 2024\n"
|
||||||
|
"Language-Team: Serbian (https://app.transifex.com/odoo/teams/41243/sr/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: sr\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_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Action Window View"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Osnova"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Preklopi"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarchy"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Novo"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Razviti"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Pregled"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Vrsta pregleda"
|
120
i18n/sv.po
Normal file
120
i18n/sv.po
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Chrille Hedberg <hedberg.chrille@gmail.com>, 2023
|
||||||
|
# Mikael Åkerberg <mikael.akerberg@mariaakerberg.com>, 2023
|
||||||
|
# Martin Wilderoth <martin.wilderoth@linserv.se>, 2023
|
||||||
|
# Kristoffer Grundström <lovaren@gmail.com>, 2023
|
||||||
|
# Kim Asplund <kim.asplund@gmail.com>, 2024
|
||||||
|
# Martin Trigaux, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Martin Trigaux, 2024\n"
|
||||||
|
"Language-Team: Swedish (https://app.transifex.com/odoo/teams/41243/sv/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: sv\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Vy för åtgärdsfönster"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Bas"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Vik ihop"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hierarki"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Ny"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Veckla ut"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Visa"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Typ av vy"
|
116
i18n/th.po
Normal file
116
i18n/th.po
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
# Rasareeyar Lappiam, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Rasareeyar Lappiam, 2024\n"
|
||||||
|
"Language-Team: Thai (https://app.transifex.com/odoo/teams/41243/th/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: th\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "มุมมองหน้าต่างการดำเนินการ"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "ฐาน"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "ไม่สามารถเปลี่ยนพาเรนต์ได้เนื่องจากจะทำให้เกิดวงจร"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "พับ"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "ลำดับชั้น"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr "ลำดับชั้นย่อยสามารถเป็นได้เฉพาะฟิลด์หรือเทมเพลต ได้รับ %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "มุมมองลำดับชั้นสามารถมีแท็กเทมเพลตได้เพียงแท็กเดียว"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr "ไม่สามารถอัปเดตโหนดหลักของโหนดที่ถูกลากได้ เนื่องจากไม่พบพาเรนต์"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr "คุณลักษณะไม่ถูกต้อง (%s) ในมุมมองลำดับชั้น คุณสมบัติต้องอยู่ใน (%s)"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "ใหม่"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "บันทึกหลักไม่สามารถลากบันทึกได้"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "กางออก"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "ดู"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "ประเภทมุมมอง"
|
119
i18n/tr.po
Normal file
119
i18n/tr.po
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Ediz Duman <neps1192@gmail.com>, 2023
|
||||||
|
# İmat Yahya Çataklı <yahyacatakli@gmail.com>, 2023
|
||||||
|
# abc Def <hdogan1974@gmail.com>, 2023
|
||||||
|
# Murat Kaplan <muratk@projetgrup.com>, 2024
|
||||||
|
# Martin Trigaux, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Martin Trigaux, 2024\n"
|
||||||
|
"Language-Team: Turkish (https://app.transifex.com/odoo/teams/41243/tr/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: tr\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Pencere Aksiyon Görünümü"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Temel"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Katla"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Hiyerarşi"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Yeni"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Katları Aç"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Görüntüle"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Görünüm Türü"
|
116
i18n/uk.po
Normal file
116
i18n/uk.po
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Wil Odoo, 2024\n"
|
||||||
|
"Language-Team: Ukrainian (https://app.transifex.com/odoo/teams/41243/uk/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: uk\n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Перегляд вікна дії"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "База"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Згорнути"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Ієрархія"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Новий"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Розгорнути"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Перегляд"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Тип перегляду"
|
117
i18n/vi.po
Normal file
117
i18n/vi.po
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Thi Huong Nguyen, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Wil Odoo, 2024\n"
|
||||||
|
"Language-Team: Vietnamese (https://app.transifex.com/odoo/teams/41243/vi/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: vi\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "Chế độ xem cửa sổ hành động"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "Cơ sở"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "Thu gọn"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "Phân cấp bậc"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "Mới"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "Mở ra"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Xem"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "Dạng hiển thị"
|
111
i18n/web_hierarchy.pot
Normal file
111
i18n/web_hierarchy.pot
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2024-01-05 12:32+0000\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_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr ""
|
116
i18n/zh_CN.po
Normal file
116
i18n/zh_CN.po
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2024
|
||||||
|
# Yazi Tian, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Yazi Tian, 2024\n"
|
||||||
|
"Language-Team: Chinese (China) (https://app.transifex.com/odoo/teams/41243/zh_CN/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: zh_CN\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "动作窗体视图"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "基础"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr "不能更改父节点,因为这会导致循环."
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "折叠"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "层级"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr "层次结构子项只能是字段或模板,得 %s"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr "层次视图只能包含一个模板标记"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr "无法更新拖动节点的父节点,因为没有找到父节点。"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr "层次视图中的属性 (%s) 无效。属性必须在 (%s) 中。"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "创建"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr "父记录不能是被拖动。"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "展开"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "查看"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "视图类型"
|
116
i18n/zh_TW.po
Normal file
116
i18n/zh_TW.po
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_hierarchy
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# Wil Odoo, 2024
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 17.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2024-01-05 12:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
|
||||||
|
"Last-Translator: Wil Odoo, 2024\n"
|
||||||
|
"Language-Team: Chinese (Taiwan) (https://app.transifex.com/odoo/teams/41243/zh_TW/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: zh_TW\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_actions_act_window_view
|
||||||
|
msgid "Action Window View"
|
||||||
|
msgstr "動作窗檢視"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_base
|
||||||
|
msgid "Base"
|
||||||
|
msgstr "計稅基數"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot change the parent because it will cause a cyclic."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Fold"
|
||||||
|
msgstr "收攏"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_view.js:0
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_actions_act_window_view__view_mode__hierarchy
|
||||||
|
#: model:ir.model.fields.selection,name:web_hierarchy.selection__ir_ui_view__type__hierarchy
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy"
|
||||||
|
msgstr "層級"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy child can only be field or template, got %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Hierarchy view can contain only one templates tag"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_renderer.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Impossible to update the parent node of the dragged node because no parent "
|
||||||
|
"has been found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/web_hierarchy/models/ir_ui_view.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_controller.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "New"
|
||||||
|
msgstr "新增"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_model.js:0
|
||||||
|
#, python-format
|
||||||
|
msgid "The parent record cannot be the record dragged."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#. odoo-javascript
|
||||||
|
#: code:addons/web_hierarchy/static/src/hierarchy_card.xml:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Unfold"
|
||||||
|
msgstr "展開"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model,name:web_hierarchy.model_ir_ui_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "檢視"
|
||||||
|
|
||||||
|
#. module: web_hierarchy
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_actions_act_window_view__view_mode
|
||||||
|
#: model:ir.model.fields,field_description:web_hierarchy.field_ir_ui_view__type
|
||||||
|
msgid "View Type"
|
||||||
|
msgstr "檢視類型"
|
5
models/__init__.py
Normal file
5
models/__init__.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from . import ir_actions
|
||||||
|
from . import ir_ui_view
|
||||||
|
from . import models
|
9
models/ir_actions.py
Normal file
9
models/ir_actions.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ActWindowView(models.Model):
|
||||||
|
_inherit = 'ir.actions.act_window.view'
|
||||||
|
|
||||||
|
view_mode = fields.Selection(selection_add=[('hierarchy', 'Hierarchy')], ondelete={'hierarchy': 'cascade'})
|
51
models/ir_ui_view.py
Normal file
51
models/ir_ui_view.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from lxml import etree
|
||||||
|
|
||||||
|
from odoo import fields, models, _
|
||||||
|
|
||||||
|
HIERARCHY_VALID_ATTRIBUTES = {
|
||||||
|
'__validate__', # ir.ui.view implementation detail
|
||||||
|
'class',
|
||||||
|
'js_class',
|
||||||
|
'string',
|
||||||
|
'create',
|
||||||
|
'edit',
|
||||||
|
'delete',
|
||||||
|
'parent_field',
|
||||||
|
'child_field',
|
||||||
|
'icon',
|
||||||
|
'draggable',
|
||||||
|
}
|
||||||
|
|
||||||
|
class View(models.Model):
|
||||||
|
_inherit = 'ir.ui.view'
|
||||||
|
|
||||||
|
type = fields.Selection(selection_add=[('hierarchy', "Hierarchy")])
|
||||||
|
|
||||||
|
def _is_qweb_based_view(self, view_type):
|
||||||
|
return super()._is_qweb_based_view(view_type) or view_type == "hierarchy"
|
||||||
|
|
||||||
|
def _validate_tag_hierarchy(self, node, name_manager, node_info):
|
||||||
|
if not node_info['validate']:
|
||||||
|
return
|
||||||
|
|
||||||
|
templates_count = 0
|
||||||
|
for child in node.iterchildren(tag=etree.Element):
|
||||||
|
if child.tag == 'templates':
|
||||||
|
if not templates_count:
|
||||||
|
templates_count += 1
|
||||||
|
else:
|
||||||
|
msg = _('Hierarchy view can contain only one templates tag')
|
||||||
|
self._raise_view_error(msg, child)
|
||||||
|
elif child.tag != 'field':
|
||||||
|
msg = _('Hierarchy child can only be field or template, got %s', child.tag)
|
||||||
|
self._raise_view_error(msg, child)
|
||||||
|
|
||||||
|
remaining = set(node.attrib) - HIERARCHY_VALID_ATTRIBUTES
|
||||||
|
if remaining:
|
||||||
|
msg = _(
|
||||||
|
"Invalid attributes (%s) in hierarchy view. Attributes must be in (%s)",
|
||||||
|
','.join(remaining), ','.join(HIERARCHY_VALID_ATTRIBUTES),
|
||||||
|
)
|
||||||
|
self._raise_view_error(msg, node)
|
42
models/models.py
Normal file
42
models/models.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import api, models
|
||||||
|
|
||||||
|
|
||||||
|
class Base(models.AbstractModel):
|
||||||
|
_inherit = 'base'
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def hierarchy_read(self, domain, fields, parent_field, child_field=None):
|
||||||
|
if parent_field not in fields:
|
||||||
|
fields.append(parent_field)
|
||||||
|
records = self.search(domain)
|
||||||
|
focus_record = self.env[self._name]
|
||||||
|
fetch_child_ids_for_all_records = False
|
||||||
|
if len(records) == 1:
|
||||||
|
domain = [(parent_field, '=', records.id), ('id', '!=', records.id)]
|
||||||
|
if records[parent_field]:
|
||||||
|
focus_record = records
|
||||||
|
records += focus_record[parent_field]
|
||||||
|
domain = [('id', 'not in', records.ids), (parent_field, 'in', records.ids)]
|
||||||
|
records += self.search(domain)
|
||||||
|
elif not records:
|
||||||
|
records = self.search([(parent_field, '=', False)])
|
||||||
|
else:
|
||||||
|
fetch_child_ids_for_all_records = True
|
||||||
|
children_ids_per_record_id = {}
|
||||||
|
if not child_field:
|
||||||
|
children_ids_per_record_id = {
|
||||||
|
record.id: child_ids
|
||||||
|
for record, child_ids in self._read_group(
|
||||||
|
[(parent_field, 'in', records.ids if fetch_child_ids_for_all_records else (records - records[parent_field]).ids)],
|
||||||
|
(parent_field,),
|
||||||
|
('id:array_agg',),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
result = records.read(fields)
|
||||||
|
if children_ids_per_record_id:
|
||||||
|
for record_data in result:
|
||||||
|
if record_data['id'] in children_ids_per_record_id:
|
||||||
|
record_data['__child_ids__'] = children_ids_per_record_id[record_data['id']]
|
||||||
|
return result
|
3
static/src/hierarchy.variables.dark.scss
Normal file
3
static/src/hierarchy.variables.dark.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
$hierarchy_element_dragged-background: $gray-100 !default;
|
||||||
|
$hierarchy_element_hover-background: #{darken($gray-100, 5%)} !default;
|
||||||
|
$hierarchy_element_hover-border: #{$gray-100} !default;
|
3
static/src/hierarchy.variables.scss
Normal file
3
static/src/hierarchy.variables.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
$hierarchy_element_dragged-background: white !default;
|
||||||
|
$hierarchy_element_hover-background: #e6f2f3 !default;
|
||||||
|
$hierarchy_element_hover-border: #017e84 !default;
|
74
static/src/hierarchy_arch_parser.js
Normal file
74
static/src/hierarchy_arch_parser.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/** @odoo-module */
|
||||||
|
|
||||||
|
import { visitXML } from "@web/core/utils/xml";
|
||||||
|
import { Field } from "@web/views/fields/field";
|
||||||
|
import { archParseBoolean, getActiveActions } from "@web/views/utils";
|
||||||
|
|
||||||
|
export class HierarchyArchParser {
|
||||||
|
parse(xmlDoc, models, modelName) {
|
||||||
|
const archInfo = {
|
||||||
|
activeActions: getActiveActions(xmlDoc),
|
||||||
|
draggable: false,
|
||||||
|
icon: "fa-share-alt o_hierarchy_icon",
|
||||||
|
parentFieldName: "parent_id",
|
||||||
|
fieldNodes: {},
|
||||||
|
templateDocs: {},
|
||||||
|
xmlDoc,
|
||||||
|
};
|
||||||
|
const fieldNextIds = {};
|
||||||
|
const fields = models[modelName];
|
||||||
|
|
||||||
|
visitXML(xmlDoc, (node) => {
|
||||||
|
if (node.hasAttribute("t-name")) {
|
||||||
|
archInfo.templateDocs[node.getAttribute("t-name")] = node;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (node.tagName === "hierarchy") {
|
||||||
|
if (node.hasAttribute("parent_field")) {
|
||||||
|
const parentFieldName = node.getAttribute("parent_field");
|
||||||
|
if (!(parentFieldName in fields)) {
|
||||||
|
throw new Error(`The parent field set (${parentFieldName}) is not defined in the model (${modelName}).`);
|
||||||
|
} else if (fields[parentFieldName].type !== "many2one") {
|
||||||
|
throw new Error(`Invalid parent field, it should be a Many2One field.`);
|
||||||
|
} else if (fields[parentFieldName].relation !== modelName) {
|
||||||
|
throw new Error(`Invalid parent field, the co-model should be same model than the current one (expected: ${modelName}).`);
|
||||||
|
}
|
||||||
|
archInfo.parentFieldName = parentFieldName;
|
||||||
|
}
|
||||||
|
if (node.hasAttribute("child_field")) {
|
||||||
|
const childFieldName = node.getAttribute("child_field");
|
||||||
|
if (!(childFieldName in fields)) {
|
||||||
|
throw new Error(`The child field set (${childFieldName}) is not defined in the model (${modelName}).`);
|
||||||
|
} else if (fields[childFieldName].type !== "one2many") {
|
||||||
|
throw new Error(`Invalid child field, it should be a One2Many field.`);
|
||||||
|
} else if (fields[childFieldName].relation !== modelName) {
|
||||||
|
throw new Error(`Invalid child field, the co-model should be same model than the current one (expected: ${modelName}).`);
|
||||||
|
}
|
||||||
|
archInfo.childFieldName = childFieldName;
|
||||||
|
}
|
||||||
|
if (node.hasAttribute("draggable")) {
|
||||||
|
archInfo.draggable = archParseBoolean(node.getAttribute("draggable"));
|
||||||
|
}
|
||||||
|
if (node.hasAttribute("icon")) {
|
||||||
|
archInfo.icon = node.getAttribute("icon");
|
||||||
|
}
|
||||||
|
} else if (node.tagName === "field") {
|
||||||
|
const fieldInfo = Field.parseFieldNode(node, models, modelName, "hierarchy");
|
||||||
|
const name = fieldInfo.name;
|
||||||
|
if (!(name in fieldNextIds)) {
|
||||||
|
fieldNextIds[name] = 0;
|
||||||
|
}
|
||||||
|
const fieldId = `${name}_${fieldNextIds[name]++}`;
|
||||||
|
archInfo.fieldNodes[fieldId] = fieldInfo;
|
||||||
|
node.setAttribute("field_id", fieldId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const cardDoc = archInfo.templateDocs["hierarchy-box"];
|
||||||
|
if (!cardDoc) {
|
||||||
|
throw new Error("Missing 'hierarchy-box' template.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return archInfo;
|
||||||
|
}
|
||||||
|
}
|
75
static/src/hierarchy_card.js
Normal file
75
static/src/hierarchy_card.js
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
/** @odoo-module */
|
||||||
|
|
||||||
|
import { Component } from "@odoo/owl";
|
||||||
|
|
||||||
|
import { Field } from "@web/views/fields/field";
|
||||||
|
import { Record } from "@web/model/record";
|
||||||
|
import { ViewButton } from "@web/views/view_button/view_button";
|
||||||
|
import { useViewCompiler } from "@web/views/view_compiler";
|
||||||
|
|
||||||
|
import { HierarchyCompiler } from "./hierarchy_compiler";
|
||||||
|
import { getFormattedRecord } from "@web/views/kanban/kanban_record";
|
||||||
|
|
||||||
|
export class HierarchyCard extends Component {
|
||||||
|
static components = {
|
||||||
|
Record,
|
||||||
|
Field,
|
||||||
|
ViewButton,
|
||||||
|
};
|
||||||
|
static props = {
|
||||||
|
node: Object,
|
||||||
|
openRecord: Function,
|
||||||
|
archInfo: Object,
|
||||||
|
templates: Object,
|
||||||
|
classNames: { type: String, optional: true },
|
||||||
|
};
|
||||||
|
static defaultProps = {
|
||||||
|
classNames: "",
|
||||||
|
};
|
||||||
|
static template = "web_hierarchy.HierarchyCard";
|
||||||
|
static Compiler = HierarchyCompiler;
|
||||||
|
|
||||||
|
setup() {
|
||||||
|
const { templates } = this.props;
|
||||||
|
this.templates = useViewCompiler(this.constructor.Compiler, templates);
|
||||||
|
}
|
||||||
|
|
||||||
|
get classNames() {
|
||||||
|
const classNames = [this.props.classNames];
|
||||||
|
if (this.props.node.nodes.length) {
|
||||||
|
classNames.push("o_hierarchy_node_unfolded");
|
||||||
|
}
|
||||||
|
return classNames.join(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
getRenderingContext(data) {
|
||||||
|
const record = getFormattedRecord(data.record);
|
||||||
|
return {
|
||||||
|
context: this.props.node.context,
|
||||||
|
JSON,
|
||||||
|
luxon,
|
||||||
|
record,
|
||||||
|
__comp__: Object.assign(Object.create(this), { this: this }),
|
||||||
|
__record__: data.record,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
onGlobalClick(ev) {
|
||||||
|
if (ev.target.closest("button")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.props.openRecord(this.props.node);
|
||||||
|
}
|
||||||
|
|
||||||
|
onClickArrowUp(ev) {
|
||||||
|
this.props.node.fetchParentNode();
|
||||||
|
}
|
||||||
|
|
||||||
|
onClickArrowDown(ev) {
|
||||||
|
if (this.props.node.nodes.length) {
|
||||||
|
this.props.node.collapseChildNodes();
|
||||||
|
} else {
|
||||||
|
this.props.node.showChildNodes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
71
static/src/hierarchy_card.scss
Normal file
71
static/src/hierarchy_card.scss
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
@mixin o-hierarchy-node-color {
|
||||||
|
@for $size from 2 through length($o-colors) {
|
||||||
|
// Note: the first color is not defined as it is the 'no color' for org chart node
|
||||||
|
.o_hierarchy_node_color_#{$size - 1} {
|
||||||
|
background-color: nth($o-colors, $size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_hierarchy_node_container {
|
||||||
|
width: 250px;
|
||||||
|
min-height: 130px;
|
||||||
|
|
||||||
|
&.o_hierarchy_dragged {
|
||||||
|
margin: 0px;
|
||||||
|
.o_hierarchy_node {
|
||||||
|
background-color: $hierarchy_element_dragged-background;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.o_hierarchy_hover {
|
||||||
|
.o_hierarchy_node {
|
||||||
|
background-color: $hierarchy_element_hover-background;
|
||||||
|
border: 3px solid green !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_hierarchy_node {
|
||||||
|
&:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_hierarchy_node_header {
|
||||||
|
height: 30px;
|
||||||
|
|
||||||
|
div.o_field_background_image {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
margin-bottom: -24px;
|
||||||
|
transform: translateY(-24px);
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
> img {
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_hierarchy_node_body {
|
||||||
|
.o_employee_availability {
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
right: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_hierarchy_node_color_0 {
|
||||||
|
background-color: $gray-200;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include o-hierarchy-node-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_hierarchy_node_button {
|
||||||
|
grid-template-columns: 50px 1fr 50px;
|
||||||
|
|
||||||
|
.o_hierarchy_icon {
|
||||||
|
vertical-align: text-top;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
61
static/src/hierarchy_card.xml
Normal file
61
static/src/hierarchy_card.xml
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<templates>
|
||||||
|
|
||||||
|
<t t-name="web_hierarchy.HierarchyCard">
|
||||||
|
<div class="o_hierarchy_node_container d-flex flex-column" t-att-class="classNames" t-att-data-node-id="props.node.id">
|
||||||
|
<div class="o_hierarchy_node_button_container w-100 d-flex justify-content-center">
|
||||||
|
<button t-if="props.node.parentResId !== false and !props.node.parentNode"
|
||||||
|
name="hierarchy_search_parent_node"
|
||||||
|
class="btn p-0"
|
||||||
|
t-on-click.synthetic="onClickArrowUp"
|
||||||
|
>
|
||||||
|
<i class="fa fa-chevron-up"/>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="o_hierarchy_node w-100 h-100 d-flex flex-column justify-content-between border mt-4"
|
||||||
|
t-att-class="{
|
||||||
|
'border-bottom-0': props.node.nodes.length or props.node.canShowChildNodes,
|
||||||
|
}"
|
||||||
|
t-att-data-node-id="props.node.id"
|
||||||
|
t-on-click.synthetic="onGlobalClick"
|
||||||
|
>
|
||||||
|
<div class="o_hierarchy_node_content">
|
||||||
|
<Record resModel="props.node.model.resModel"
|
||||||
|
resId="props.node.resId"
|
||||||
|
fields="props.node.model.fields"
|
||||||
|
activeFields="props.node.model.activeFields"
|
||||||
|
values="props.node.data"
|
||||||
|
t-slot-scope="data"
|
||||||
|
>
|
||||||
|
<t t-call="{{ templates['hierarchy-box'] }}" t-call-context="getRenderingContext(data)"/>
|
||||||
|
</Record>
|
||||||
|
</div>
|
||||||
|
<button t-if="props.node.nodes.length or props.node.canShowChildNodes"
|
||||||
|
name="hierarchy_search_subsidiaries"
|
||||||
|
class="o_hierarchy_node_button btn rounded-0 d-grid"
|
||||||
|
t-att-class="{
|
||||||
|
'btn-primary': !props.node.nodes.length,
|
||||||
|
'btn-secondary': props.node.nodes.length > 0,
|
||||||
|
}"
|
||||||
|
t-on-click.synthetic="onClickArrowDown"
|
||||||
|
>
|
||||||
|
<t t-if="!props.node.nodes.length">
|
||||||
|
<span style="grid-column: 2;">
|
||||||
|
Unfold
|
||||||
|
</span>
|
||||||
|
<span class="text-end" style="grid-column: 3;">
|
||||||
|
<t t-out="props.node.childResIds.length"/>
|
||||||
|
<i class="fa ps-1" t-att-class="props.archInfo.icon"/>
|
||||||
|
</span>
|
||||||
|
</t>
|
||||||
|
<t t-else="">
|
||||||
|
<span style="grid-column: 2;">
|
||||||
|
Fold
|
||||||
|
</span>
|
||||||
|
</t>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
</templates>
|
28
static/src/hierarchy_compiler.js
Normal file
28
static/src/hierarchy_compiler.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/** @odoo-module **/
|
||||||
|
|
||||||
|
import { KanbanCompiler } from "@web/views/kanban/kanban_compiler";
|
||||||
|
|
||||||
|
export class HierarchyCompiler extends KanbanCompiler {
|
||||||
|
/**
|
||||||
|
* @override
|
||||||
|
* @param {Element} el
|
||||||
|
* @param {Object} params
|
||||||
|
* @returns {Element}
|
||||||
|
*/
|
||||||
|
compileField(el, params) {
|
||||||
|
const fieldName = el.getAttribute("name");
|
||||||
|
return super.compileField(el, {
|
||||||
|
...(params || {}),
|
||||||
|
recordExpr: "__record__",
|
||||||
|
dataPointIdExpr: "__comp__.props.node.id",
|
||||||
|
formattedValueExpr: `record['${fieldName}'].value`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
compileButton(el, params) {
|
||||||
|
return super.compileButton(el, {
|
||||||
|
...(params || {}),
|
||||||
|
recordExpr: "__record__",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
64
static/src/hierarchy_controller.js
Normal file
64
static/src/hierarchy_controller.js
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/** @odoo-module */
|
||||||
|
|
||||||
|
import { Component, useRef } from "@odoo/owl";
|
||||||
|
|
||||||
|
import { useBus } from "@web/core/utils/hooks";
|
||||||
|
import { useModel } from "@web/model/model";
|
||||||
|
import { addFieldDependencies, extractFieldsFromArchInfo } from "@web/model/relational_model/utils";
|
||||||
|
import { CogMenu } from "@web/search/cog_menu/cog_menu";
|
||||||
|
import { Layout } from "@web/search/layout";
|
||||||
|
import { SearchBar } from "@web/search/search_bar/search_bar";
|
||||||
|
import { useSearchBarToggler } from "@web/search/search_bar/search_bar_toggler";
|
||||||
|
import { standardViewProps } from "@web/views/standard_view_props";
|
||||||
|
import { useViewButtons } from "@web/views/view_button/view_button_hook";
|
||||||
|
|
||||||
|
export class HierarchyController extends Component {
|
||||||
|
static components = {
|
||||||
|
Layout,
|
||||||
|
CogMenu,
|
||||||
|
SearchBar,
|
||||||
|
};
|
||||||
|
static props = {
|
||||||
|
...standardViewProps,
|
||||||
|
Model: Function,
|
||||||
|
Renderer: Function,
|
||||||
|
buttonTemplate: String,
|
||||||
|
archInfo: Object,
|
||||||
|
};
|
||||||
|
static template = "web_hierarchy.HierarchyView";
|
||||||
|
|
||||||
|
setup() {
|
||||||
|
this.rootRef = useRef("root");
|
||||||
|
const { parentFieldName, childFieldName } = this.props.archInfo;
|
||||||
|
const { activeFields, fields } = extractFieldsFromArchInfo(this.props.archInfo, this.props.fields);
|
||||||
|
addFieldDependencies(activeFields, fields, [{ name: parentFieldName }]);
|
||||||
|
this.model = useModel(this.props.Model, {
|
||||||
|
resModel: this.props.resModel,
|
||||||
|
activeFields,
|
||||||
|
fields,
|
||||||
|
parentFieldName,
|
||||||
|
childFieldName,
|
||||||
|
});
|
||||||
|
useBus(
|
||||||
|
this.model.bus,
|
||||||
|
"update",
|
||||||
|
() => {
|
||||||
|
this.render(true);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
useViewButtons(this.model, this.rootRef, {
|
||||||
|
beforeExecuteAction: this.beforeExecuteActionButton.bind(this),
|
||||||
|
afterExecuteAction: this.afterExecuteActionButton.bind(this),
|
||||||
|
});
|
||||||
|
this.searchBarToggler = useSearchBarToggler();
|
||||||
|
}
|
||||||
|
|
||||||
|
async openRecord(node, mode) {
|
||||||
|
const activeIds = this.model.root.resIds;
|
||||||
|
this.props.selectRecord(node.resId, { activeIds, mode });
|
||||||
|
}
|
||||||
|
|
||||||
|
async beforeExecuteActionButton(clickParams) {}
|
||||||
|
|
||||||
|
async afterExecuteActionButton(clickParams) {}
|
||||||
|
}
|
45
static/src/hierarchy_controller.xml
Normal file
45
static/src/hierarchy_controller.xml
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<templates>
|
||||||
|
<t t-name="web_hierarchy.HierarchyButtons">
|
||||||
|
<div class="d-flex o_grid_buttons">
|
||||||
|
<div class="me-2" t-if="props.archInfo.activeActions.create and (!props.archInfo.createInline or displayNoContent)">
|
||||||
|
<button class="btn btn-primary o_hierarchy_button_add"
|
||||||
|
type="button"
|
||||||
|
t-on-click="props.createRecord">
|
||||||
|
New
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
<t t-name="web_hierarchy.HierarchyView">
|
||||||
|
<div t-attf-class="o_hierarchy_view {{ isMobile ? 'o_action_delegate_scroll' : '' }} {{ props.className }}" t-ref="root">
|
||||||
|
<Layout className="(model.useSampleModel ? 'o_view_sample_data' : '') + ' d-flex'" display="props.display">
|
||||||
|
<t t-set-slot="control-panel-additional-actions">
|
||||||
|
<CogMenu/>
|
||||||
|
</t>
|
||||||
|
<t t-set-slot="layout-buttons">
|
||||||
|
<t t-call="{{ props.buttonTemplate }}"/>
|
||||||
|
</t>
|
||||||
|
<t t-set-slot="layout-actions">
|
||||||
|
<SearchBar t-if="searchBarToggler.state.showSearchBar"/>
|
||||||
|
</t>
|
||||||
|
<t t-set-slot="control-panel-navigation-additional">
|
||||||
|
<t t-component="searchBarToggler.component" t-props="searchBarToggler.props"/>
|
||||||
|
</t>
|
||||||
|
<t t-set-slot="default" t-slot-scope="layout">
|
||||||
|
<t t-if="displayNoContent">
|
||||||
|
<t t-call="web.ActionHelper">
|
||||||
|
<t t-set="noContentHelp" t-value="props.info.noContentHelp"/>
|
||||||
|
</t>
|
||||||
|
</t>
|
||||||
|
<t t-component="props.Renderer"
|
||||||
|
model="model"
|
||||||
|
openRecord.bind="openRecord"
|
||||||
|
archInfo="props.archInfo"
|
||||||
|
templates="props.archInfo.templateDocs"
|
||||||
|
/>
|
||||||
|
</t>
|
||||||
|
</Layout>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
</templates>
|
977
static/src/hierarchy_model.js
Normal file
977
static/src/hierarchy_model.js
Normal file
@ -0,0 +1,977 @@
|
|||||||
|
/** @odoo-module */
|
||||||
|
|
||||||
|
import { Domain } from "@web/core/domain";
|
||||||
|
import { _t } from "@web/core/l10n/translation";
|
||||||
|
import { KeepLast, Mutex } from "@web/core/utils/concurrency";
|
||||||
|
import { pick } from "@web/core/utils/objects";
|
||||||
|
import { Model } from "@web/model/model";
|
||||||
|
|
||||||
|
let nodeId = 0;
|
||||||
|
let forestId = 0;
|
||||||
|
let treeId = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the id of the given many2one field value
|
||||||
|
*
|
||||||
|
* @param {false | [Number, string]} value many2one value
|
||||||
|
* @returns {false | Number} id of the many2one
|
||||||
|
*/
|
||||||
|
function getIdOfMany2oneField(value) {
|
||||||
|
return value && value[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
export class HierarchyNode {
|
||||||
|
/**
|
||||||
|
* Constructor of hierarchy node stored in hierarchy tree
|
||||||
|
*
|
||||||
|
* @param {HierarchyModel} model
|
||||||
|
* @param {Object} config
|
||||||
|
* @param {Object} data
|
||||||
|
* @param {HierarchyTree} tree
|
||||||
|
* @param {HierarchyNode} parentNode
|
||||||
|
* @param {Boolean} populateChildNodes
|
||||||
|
*/
|
||||||
|
constructor(model, config, data, tree, parentNode = null, populateChildNodes = true) {
|
||||||
|
this.id = nodeId++;
|
||||||
|
this.data = data;
|
||||||
|
this.parentNode = parentNode;
|
||||||
|
this.tree = tree;
|
||||||
|
this.model = model;
|
||||||
|
this._config = config;
|
||||||
|
tree.addNode(this);
|
||||||
|
if (populateChildNodes) {
|
||||||
|
this.populateChildNodes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get ancestor node
|
||||||
|
*
|
||||||
|
* @returns {HierarchyNode} ancestor node
|
||||||
|
*/
|
||||||
|
get ancestorNode() {
|
||||||
|
return this.parentNode ? this.ancestorNode : this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is leaf?
|
||||||
|
*
|
||||||
|
* @returns {Boolean} False if the current node has node as child nodes, otherwise True.
|
||||||
|
*/
|
||||||
|
get isLeaf() {
|
||||||
|
return !this.nodes.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get forest of the current node
|
||||||
|
*
|
||||||
|
* @returns {HierarchyForest}
|
||||||
|
*/
|
||||||
|
get forest() {
|
||||||
|
return this.tree.forest;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the resId of current node
|
||||||
|
*
|
||||||
|
* @returns {Number}
|
||||||
|
*/
|
||||||
|
get resId() {
|
||||||
|
return this.data.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get parent field name
|
||||||
|
*
|
||||||
|
* @returns {String}
|
||||||
|
*/
|
||||||
|
get parentFieldName() {
|
||||||
|
return this.model.parentFieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get parent res id
|
||||||
|
*
|
||||||
|
* @returns {Number}
|
||||||
|
*/
|
||||||
|
get parentResId() {
|
||||||
|
return this.parentNode?.resId || getIdOfMany2oneField(this.data[this.parentFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get child node res ids
|
||||||
|
*
|
||||||
|
* @returns {Number[]}
|
||||||
|
*/
|
||||||
|
get childResIds() {
|
||||||
|
return this.nodes.length ? this.nodes.map((node) => node.resId) : this.data[this.childFieldName]?.map((d) => typeof d === "number" ? d : d.id) || [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get child field name
|
||||||
|
*
|
||||||
|
* @returns {String}
|
||||||
|
*/
|
||||||
|
get childFieldName() {
|
||||||
|
return this.model.childFieldName || this.model.defaultChildFieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Has child nodes?
|
||||||
|
*
|
||||||
|
* @returns {Boolean}
|
||||||
|
*/
|
||||||
|
get hasChildren() {
|
||||||
|
return this.nodes.length > 0 || this.data[this.childFieldName]?.length > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can show parent node
|
||||||
|
*
|
||||||
|
* Knows if the parent node can be fetched and displayed inside the view
|
||||||
|
*
|
||||||
|
* @returns {Boolean} True if the current node has a parent node but it is not yet displayed and the data of the
|
||||||
|
* current node is not already displayed in another node.
|
||||||
|
*/
|
||||||
|
get canShowParentNode() {
|
||||||
|
return Boolean(this.parentResId)
|
||||||
|
&& !this.parentNode
|
||||||
|
&& this.tree.forest.resIds.filter((resId) => resId === this.resId).length === 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can show child nodes
|
||||||
|
*
|
||||||
|
* Knows if the child nodes can be fetched and displayed inside the view
|
||||||
|
*
|
||||||
|
* @returns {Boolean} True if the current node has child nodes but they are not yet displayed and the data of the
|
||||||
|
* current node is not already displayed in another node.
|
||||||
|
*/
|
||||||
|
get canShowChildNodes() {
|
||||||
|
return this.hasChildren
|
||||||
|
&& this.nodes.length === 0
|
||||||
|
&& this.tree.forest.resIds.filter((resId) => resId === this.resId).length === 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
get descendantNodes() {
|
||||||
|
const subNodes = [];
|
||||||
|
if (!this.isLeaf) {
|
||||||
|
subNodes.push(...this.nodes);
|
||||||
|
for (const node of this.nodes) {
|
||||||
|
if (node.descendantNodes.length) {
|
||||||
|
subNodes.push(...node.descendantNodes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return subNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all descendants nodes parent resIds. If the current node has
|
||||||
|
* descendants, the result also contains its resId.
|
||||||
|
*/
|
||||||
|
get descendantsParentIds() {
|
||||||
|
const descendantsParentIds = [];
|
||||||
|
if (!this.isLeaf) {
|
||||||
|
descendantsParentIds.push(this.resId);
|
||||||
|
this.nodes.reduce((parentIds, node) => {
|
||||||
|
if (!node.isLeaf) {
|
||||||
|
parentIds.push(...node.descendantsParentIds);
|
||||||
|
}
|
||||||
|
return parentIds;
|
||||||
|
}, descendantsParentIds);
|
||||||
|
}
|
||||||
|
return descendantsParentIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all descendants nodes resIds
|
||||||
|
*
|
||||||
|
* @returns {Number[]}
|
||||||
|
*/
|
||||||
|
get allSubsidiaryResIds() {
|
||||||
|
return this.descendantNodes.map((n) => n.resId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Populate child nodes
|
||||||
|
*
|
||||||
|
* Uses to create child nodes of the current one according to its data.
|
||||||
|
*/
|
||||||
|
populateChildNodes() {
|
||||||
|
this.nodes = [];
|
||||||
|
const children = this.data[this.childFieldName] || [];
|
||||||
|
if (
|
||||||
|
children.length
|
||||||
|
&& children[0] instanceof Object
|
||||||
|
&& this.tree.forest.resIds.filter((resId) => resId === this.resId).length === 1
|
||||||
|
) {
|
||||||
|
this.createChildNodes(children);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create child nodes
|
||||||
|
*
|
||||||
|
* @param {Object[]} childNodesData data of child nodes to generate
|
||||||
|
*/
|
||||||
|
createChildNodes(childNodesData) {
|
||||||
|
this.nodes = (childNodesData || this.data[this.childFieldName]).map(
|
||||||
|
(childData) =>
|
||||||
|
new HierarchyNode(
|
||||||
|
this.model,
|
||||||
|
this._config,
|
||||||
|
childData,
|
||||||
|
this.tree,
|
||||||
|
this
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeParentNode() {
|
||||||
|
this.parentNode?.removeChildNode(this);
|
||||||
|
this.parentNode = null;
|
||||||
|
this.data[this.parentFieldName] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch parent node
|
||||||
|
*/
|
||||||
|
async fetchParentNode() {
|
||||||
|
await this.model.fetchManager(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch child nodes
|
||||||
|
*/
|
||||||
|
async showChildNodes() {
|
||||||
|
await this.model.fetchSubordinates(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Collapse child nodes
|
||||||
|
*
|
||||||
|
* Removes the descendant nodes of the current one and stores
|
||||||
|
* the resIds of the child nodes in the data of the current one
|
||||||
|
* to know it has child nodes to be able to show them again
|
||||||
|
* when it is needed.
|
||||||
|
*/
|
||||||
|
collapseChildNodes() {
|
||||||
|
const childrenData = [];
|
||||||
|
for (const childNode of this.nodes) {
|
||||||
|
childNode.data[this.childFieldName] = childNode.childResIds;
|
||||||
|
childrenData.push(childNode.data);
|
||||||
|
}
|
||||||
|
this.data[this.childFieldName] = childrenData;
|
||||||
|
this.removeChildNodes();
|
||||||
|
this.model.notify();
|
||||||
|
}
|
||||||
|
|
||||||
|
removeChildNode(node) {
|
||||||
|
node.removeChildNodes();
|
||||||
|
this.tree.removeNodes([node]);
|
||||||
|
this.nodes = this.nodes.filter((n) => n.id !== node.id);
|
||||||
|
this.data[this.childFieldName] = this.nodes.map((n) => n.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove descendant nodes of the current one
|
||||||
|
*/
|
||||||
|
removeChildNodes() {
|
||||||
|
for (const childNode of this.nodes) {
|
||||||
|
if (!childNode.isLeaf) {
|
||||||
|
childNode.removeChildNodes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.tree.removeNodes(this.nodes);
|
||||||
|
this.nodes = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set parent node to the current node
|
||||||
|
*
|
||||||
|
* @param {HierarchyNode} node parent node to set
|
||||||
|
*/
|
||||||
|
setParentNode(node) {
|
||||||
|
this.parentNode = node;
|
||||||
|
node.addChildNode(this);
|
||||||
|
const tree = node.tree;
|
||||||
|
if (tree.root === this) {
|
||||||
|
tree.root = node;
|
||||||
|
} else if (this.tree.root === this) {
|
||||||
|
this.tree.removeRoot();
|
||||||
|
this.setTree(node.tree);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setTree(tree) {
|
||||||
|
this.tree = tree;
|
||||||
|
for (const childNode of this.nodes) {
|
||||||
|
childNode.setTree(tree);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds child node to the current node
|
||||||
|
*
|
||||||
|
* @param {HierarchyNode} node child node to add
|
||||||
|
*/
|
||||||
|
addChildNode(node) {
|
||||||
|
this.nodes.push(node);
|
||||||
|
this.data[this.childFieldName].push(node.data);
|
||||||
|
this.tree.addNode(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class HierarchyTree {
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param {HierarchyModel} model
|
||||||
|
* @param {Object} config config of the model
|
||||||
|
* @param {Object} data root node data of the tree to create
|
||||||
|
* @param {HierarchyForest} forest hierarchy forest containing the tree to create
|
||||||
|
*/
|
||||||
|
constructor(model, config, data, forest) {
|
||||||
|
this.id = treeId++;
|
||||||
|
this.nodePerNodeId = {};
|
||||||
|
this.forest = forest;
|
||||||
|
if (data) {
|
||||||
|
this.root = new HierarchyNode(model, config, data, this);
|
||||||
|
this.forest.nodePerNodeId = {
|
||||||
|
...this.forest.nodePerNodeId,
|
||||||
|
...this.nodePerNodeId,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
this.model = model;
|
||||||
|
this._config = config;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get node res ids inside the current tree
|
||||||
|
*
|
||||||
|
* @returns {Number}
|
||||||
|
*/
|
||||||
|
get resIds() {
|
||||||
|
return Object.values(this.nodePerNodeId).map((node) => node.resId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add node inside the current tree
|
||||||
|
*
|
||||||
|
* @param {HierarchyNode} node node to add inside the current tree
|
||||||
|
*/
|
||||||
|
addNode(node) {
|
||||||
|
this.nodePerNodeId[node.id] = node;
|
||||||
|
this.forest.addNode(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove nodes inside the current tree
|
||||||
|
*
|
||||||
|
* @param {HierarchyNode} nodes nodes to remove
|
||||||
|
*/
|
||||||
|
removeNodes(nodes) {
|
||||||
|
const nodeIds = nodes.map((node) => node.id);
|
||||||
|
this.nodePerNodeId = Object.fromEntries(
|
||||||
|
Object.entries(this.nodePerNodeId)
|
||||||
|
.filter(
|
||||||
|
([nodeId,]) => !nodeIds.includes(Number(nodeId))
|
||||||
|
)
|
||||||
|
);
|
||||||
|
this.forest.removeNodes(nodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeRoot() {
|
||||||
|
this.forest.removeTree(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class HierarchyForest {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {HierarchyModel} model
|
||||||
|
* @param {Object} config model config
|
||||||
|
* @param {Object[]} data list of tree root nodes data
|
||||||
|
*/
|
||||||
|
constructor(model, config, data) {
|
||||||
|
this.id = forestId++;
|
||||||
|
this.nodePerNodeId = {};
|
||||||
|
this.trees = data.map((d) => new HierarchyTree(model, config, d, this));
|
||||||
|
this.model = model;
|
||||||
|
this._config = config;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get node res ids containing inside the current forest
|
||||||
|
*
|
||||||
|
* @returns {Number}
|
||||||
|
*/
|
||||||
|
get resIds() {
|
||||||
|
return Object.values(this.nodePerNodeId).map((node) => node.resId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get root node of all trees inside the current forest
|
||||||
|
*
|
||||||
|
* @returns {HierarchyNode[]} root nodes
|
||||||
|
*/
|
||||||
|
get rootNodes() {
|
||||||
|
return this.trees.map((t) => t.root);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a node inside the current forest
|
||||||
|
*
|
||||||
|
* @param {HierarchyNode} node node to add inside the current forest
|
||||||
|
*/
|
||||||
|
addNode(node) {
|
||||||
|
this.nodePerNodeId[node.id] = node;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes nodes inside the current forest
|
||||||
|
*
|
||||||
|
* @param {HierarchyNode} nodes nodes to remove inside the current forest
|
||||||
|
*/
|
||||||
|
removeNodes(nodes) {
|
||||||
|
const nodeIds = nodes.map((node) => node.id);
|
||||||
|
this.nodePerNodeId = Object.fromEntries(
|
||||||
|
Object.entries(this.nodePerNodeId)
|
||||||
|
.filter(
|
||||||
|
([nodeId,]) => !nodeIds.includes(Number(nodeId))
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
addNewRootNode(node) {
|
||||||
|
const tree = new HierarchyTree(this.model, this._config, null, this);
|
||||||
|
tree.root = node;
|
||||||
|
node.tree = tree;
|
||||||
|
tree.addNode(node);
|
||||||
|
for (const subNode of node.descendantNodes) {
|
||||||
|
tree.addNode(subNode);
|
||||||
|
}
|
||||||
|
this.trees.push(tree);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeTree(tree) {
|
||||||
|
this.nodePerNodeId = Object.fromEntries(
|
||||||
|
Object.entries(this.nodePerNodeId)
|
||||||
|
.filter(
|
||||||
|
([nodeId, ]) => !(nodeId in tree.nodePerNodeId)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
this.trees = this.trees.filter((t) => t.id !== tree.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class HierarchyModel extends Model {
|
||||||
|
static services = ["notification"];
|
||||||
|
|
||||||
|
setup(params, { notification }) {
|
||||||
|
this.keepLast = new KeepLast();
|
||||||
|
this.mutex = new Mutex();
|
||||||
|
this.resModel = params.resModel;
|
||||||
|
this.fields = params.fields;
|
||||||
|
this.parentFieldName = params.parentFieldName;
|
||||||
|
this.childFieldName = params.childFieldName;
|
||||||
|
this.activeFields = params.activeFields;
|
||||||
|
this.notification = notification;
|
||||||
|
this.config = {
|
||||||
|
domain: this.defaultDomain,
|
||||||
|
isRoot: true,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get parent field info
|
||||||
|
*
|
||||||
|
* @returns {Object} parent field info
|
||||||
|
*/
|
||||||
|
get parentField() {
|
||||||
|
return this.fields[this.parentFieldName];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get res ids of all nodes displayed in the view
|
||||||
|
*
|
||||||
|
* @returns {Number[]} resIds of all nodes displayed in the view
|
||||||
|
*/
|
||||||
|
get resIds() {
|
||||||
|
return this.root?.resIds || [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get default child field name when no child field name is given to the view
|
||||||
|
*
|
||||||
|
* @returns {String} default child field name to use
|
||||||
|
*/
|
||||||
|
get defaultChildFieldName() {
|
||||||
|
return "__child_ids__";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get active fields name
|
||||||
|
*
|
||||||
|
* @returns {String[]} active fields name
|
||||||
|
*/
|
||||||
|
get activeFieldNames() {
|
||||||
|
return Object.keys(this.activeFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get default domain to use, when no domain is given in the config
|
||||||
|
*
|
||||||
|
* @returns {import("@web/src/core/domain").DomainListRepr} default domain
|
||||||
|
*/
|
||||||
|
get defaultDomain() {
|
||||||
|
return [[this.parentFieldName, '=', false]];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get fields to fetch
|
||||||
|
* @returns {String[]} fields to fetch
|
||||||
|
*/
|
||||||
|
get fieldsToFetch() {
|
||||||
|
const fieldsToFetch = [
|
||||||
|
...this.activeFieldNames,
|
||||||
|
];
|
||||||
|
if (this.childFieldName) {
|
||||||
|
fieldsToFetch.push(this.childFieldName);
|
||||||
|
}
|
||||||
|
return fieldsToFetch;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the config and data for hierarchy view
|
||||||
|
*
|
||||||
|
* @param {Object} params params to use to load data of hierarchy view
|
||||||
|
*/
|
||||||
|
async load(params = {}) {
|
||||||
|
nodeId = forestId = treeId = 0;
|
||||||
|
const config = this._getNextConfig(this.config, params);
|
||||||
|
const data = await this.keepLast.add(this._loadData(config));
|
||||||
|
this.root = this._createRoot(config, data);
|
||||||
|
this.config = config;
|
||||||
|
this.notify();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @override
|
||||||
|
* Each notify should specify a scroll target (default is to scroll to the
|
||||||
|
* bottom).
|
||||||
|
*/
|
||||||
|
notify(payload = { scrollTarget: "bottom" }) {
|
||||||
|
super.notify();
|
||||||
|
this.bus.trigger("hierarchyScrollTarget", payload);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch parent node of given node
|
||||||
|
* @param {HierarchyNode} node node to fetch its parent node
|
||||||
|
*/
|
||||||
|
async fetchManager(node) {
|
||||||
|
if (this.root.trees.length > 1) { // reset the hierarchy
|
||||||
|
const treeExpanded = this._findTreeExpanded();
|
||||||
|
const resIdsToFetch = [node.parentResId, node.resId, ...node.allSubsidiaryResIds];
|
||||||
|
if (treeExpanded && treeExpanded.root.id !== node.id && treeExpanded.root.parentResId === node.parentResId) {
|
||||||
|
resIdsToFetch.push(...treeExpanded.root.allSubsidiaryResIds);
|
||||||
|
}
|
||||||
|
const config = {
|
||||||
|
...this.config,
|
||||||
|
domain: ["|", [this.parentFieldName, "=", node.parentResId], ["id", "in", resIdsToFetch]],
|
||||||
|
}
|
||||||
|
const data = await this._loadData(config);
|
||||||
|
this.root = this._createRoot(config, data);
|
||||||
|
this.notify();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const managerData = await this.keepLast.add(this._fetchManager(node));
|
||||||
|
if (managerData) {
|
||||||
|
const parentNode = new HierarchyNode(this, this.config, managerData, node.tree, null, false);
|
||||||
|
parentNode.createChildNodes();
|
||||||
|
node.setParentNode(parentNode);
|
||||||
|
this.notify();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch child nodes of given node
|
||||||
|
*
|
||||||
|
* @param {HierarchyNode} node node to fetch its child nodes
|
||||||
|
*/
|
||||||
|
async fetchSubordinates(node) {
|
||||||
|
const childFieldName = this.childFieldName || this.defaultChildFieldName;
|
||||||
|
const children = node.data[childFieldName];
|
||||||
|
if (children.length) {
|
||||||
|
const nodesToUpdate = [];
|
||||||
|
if (!(children[0] instanceof Object)) {
|
||||||
|
const allNodeResIds = this.root.resIds;
|
||||||
|
const existingChildResIds = children.filter((childResId) => allNodeResIds.includes(childResId))
|
||||||
|
if (existingChildResIds.length) { // special case with result found with the search view
|
||||||
|
for (const tree of this.root.trees) {
|
||||||
|
if (existingChildResIds.includes(tree.root.resId)) {
|
||||||
|
nodesToUpdate.push(tree.root);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const data = await this.keepLast.add(this._fetchSubordinates(node, existingChildResIds));
|
||||||
|
if (data && data.length) {
|
||||||
|
node.data[childFieldName] = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const nodeToCollapse = this._searchNodeToCollapse(node);
|
||||||
|
if (nodeToCollapse && !nodesToUpdate.includes(nodeToCollapse)) {
|
||||||
|
nodeToCollapse.collapseChildNodes();
|
||||||
|
}
|
||||||
|
node.populateChildNodes();
|
||||||
|
for (const n of nodesToUpdate) {
|
||||||
|
n.setParentNode(node);
|
||||||
|
}
|
||||||
|
this.notify();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Search node to collapse to be able to show the child nodes of node given in parameter
|
||||||
|
*
|
||||||
|
* @param {HierarchyNode} node node to show its child nodes.
|
||||||
|
* @returns {HierarchyNode | null} node found to collapse
|
||||||
|
*/
|
||||||
|
_searchNodeToCollapse(node) {
|
||||||
|
const parentNode = node.parentNode;
|
||||||
|
let nodeToCollapse = null;
|
||||||
|
if (parentNode) {
|
||||||
|
nodeToCollapse = parentNode.nodes.find((n) => n.nodes.length);
|
||||||
|
} else {
|
||||||
|
const treeExpanded = this._findTreeExpanded();
|
||||||
|
if (treeExpanded) {
|
||||||
|
nodeToCollapse = treeExpanded.root;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nodeToCollapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
_findTreeExpanded() {
|
||||||
|
return this.root.trees.find((t) => t.root.nodes.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the next model config to use
|
||||||
|
*
|
||||||
|
* @param {Object} currentConfig current model config used
|
||||||
|
* @param {Object} params new params
|
||||||
|
* @returns {Object} new model config to use
|
||||||
|
*/
|
||||||
|
_getNextConfig(currentConfig, params) {
|
||||||
|
const config = Object.assign({}, currentConfig);
|
||||||
|
config.context = "context" in params ? params.context : config.context;
|
||||||
|
if ("domain" in params) {
|
||||||
|
config.domain = params.domain;
|
||||||
|
if (!params.domain.length) {
|
||||||
|
if (config.context.hierarchy_res_id) {
|
||||||
|
config.domain = [["id", "=", config.context.hierarchy_res_id]];
|
||||||
|
delete config.context.hierarchy_res_id; // just needed for the first load.
|
||||||
|
} else {
|
||||||
|
config.domain = this.defaultDomain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load data for hierarchy view
|
||||||
|
*
|
||||||
|
* @param {Object} config model config
|
||||||
|
* @returns {Object[]} main data for hierarchy view
|
||||||
|
*/
|
||||||
|
async _loadData(config) {
|
||||||
|
const result = await this.orm.call(
|
||||||
|
this.resModel,
|
||||||
|
"hierarchy_read",
|
||||||
|
[config.domain, this.fieldsToFetch, this.parentFieldName, this.childFieldName],
|
||||||
|
{
|
||||||
|
context: config.context,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const resultStringified = JSON.stringify(result);
|
||||||
|
const recordsPerParentId = {};
|
||||||
|
const recordPerId = {};
|
||||||
|
for (const record of result) {
|
||||||
|
recordPerId[record.id] = record;
|
||||||
|
const parentId = getIdOfMany2oneField(record[this.parentFieldName]);
|
||||||
|
if (!(parentId.toString() in recordsPerParentId)) {
|
||||||
|
recordsPerParentId[parentId] = [];
|
||||||
|
}
|
||||||
|
recordsPerParentId[parentId].push(record);
|
||||||
|
}
|
||||||
|
const data = [];
|
||||||
|
const recordIds = []; // to check if we have only one arborescence to display otherwise we display the result as the kanban view
|
||||||
|
for (const [parentId, records] of Object.entries(recordsPerParentId)) {
|
||||||
|
if (!parentId || !(parentId in recordPerId)) {
|
||||||
|
data.push(...records);
|
||||||
|
} else {
|
||||||
|
const parentRecord = recordPerId[parentId];
|
||||||
|
if (recordIds.includes(parentRecord.id)) {
|
||||||
|
return JSON.parse(resultStringified);
|
||||||
|
}
|
||||||
|
const ancestorId = getIdOfMany2oneField(parentRecord[this.parentFieldName]);
|
||||||
|
if (ancestorId in recordsPerParentId) {
|
||||||
|
recordIds.push(...recordsPerParentId[ancestorId].map((r) => r.id));
|
||||||
|
}
|
||||||
|
parentRecord[this.childFieldName || this.defaultChildFieldName] = records;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!data.length && result?.length) {
|
||||||
|
data.push(recordPerId[Object.keys(recordsPerParentId)[0]]);
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create forest
|
||||||
|
*
|
||||||
|
* @param {Object} config model config to use
|
||||||
|
* @param {Object[]} data root data
|
||||||
|
* @returns {HierarchyForest} forest hierarchy
|
||||||
|
*/
|
||||||
|
_createRoot(config, data) {
|
||||||
|
return new HierarchyForest(this, config, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch parent node and its children nodes data
|
||||||
|
*
|
||||||
|
* @param {HierarchyNode} node node to fetch its parent node
|
||||||
|
* @returns {Object} the parent node data with children data inside childFieldName
|
||||||
|
*/
|
||||||
|
async _fetchManager(node, exclude_node=true) {
|
||||||
|
let domain = new Domain([
|
||||||
|
"|",
|
||||||
|
["id", "=", node.parentResId],
|
||||||
|
[this.parentFieldName, "=", node.parentResId],
|
||||||
|
]);
|
||||||
|
if (exclude_node) {
|
||||||
|
domain = Domain.and([
|
||||||
|
domain,
|
||||||
|
[["id", "!=", node.resId]],
|
||||||
|
])
|
||||||
|
}
|
||||||
|
const result = await this.orm.searchRead(
|
||||||
|
this.resModel,
|
||||||
|
domain.toList({}),
|
||||||
|
this.fieldsToFetch,
|
||||||
|
{ context: this.config.context },
|
||||||
|
);
|
||||||
|
let managerData = {};
|
||||||
|
const children = [];
|
||||||
|
for (const data of result) {
|
||||||
|
if (data.id === node.parentResId) {
|
||||||
|
managerData = data;
|
||||||
|
} else {
|
||||||
|
children.push(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!this.childFieldName) {
|
||||||
|
if (children.length) {
|
||||||
|
await this._fetchDescendants(children);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
managerData[this.childFieldName || this.defaultChildFieldName] = children;
|
||||||
|
return managerData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch children nodes data for a given node
|
||||||
|
*
|
||||||
|
* @param {HierarchyNode} node node to fetch its children nodes
|
||||||
|
* @param {Array<number> | null} excludeResIds list of ids to exclude (because the nodes already exist)
|
||||||
|
* @returns {Object[]} list of child node data
|
||||||
|
*/
|
||||||
|
async _fetchSubordinates(node, excludeResIds = null) {
|
||||||
|
let childrenResIds = node.data[this.childFieldName || this.defaultChildFieldName];
|
||||||
|
if (excludeResIds) {
|
||||||
|
childrenResIds = childrenResIds.filter((childResId) => !excludeResIds.includes(childResId));
|
||||||
|
}
|
||||||
|
const data = await this.orm.read(
|
||||||
|
this.resModel,
|
||||||
|
childrenResIds,
|
||||||
|
this.fieldsToFetch,
|
||||||
|
{ context: this.config.context },
|
||||||
|
)
|
||||||
|
if (!this.childFieldName) {
|
||||||
|
await this._fetchDescendants(data);
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fetch descendants nodes resIds to know if the child nodes have descendants
|
||||||
|
*
|
||||||
|
* @param {Object[]} childrenData child nodes data to fetch its descendants
|
||||||
|
*/
|
||||||
|
async _fetchDescendants(childrenData) {
|
||||||
|
const resIds = childrenData.map((d) => d.id);
|
||||||
|
if (resIds.length) {
|
||||||
|
const fetchChildren = await this.orm.readGroup(
|
||||||
|
this.resModel,
|
||||||
|
[[this.parentFieldName, "in", resIds]],
|
||||||
|
['id:array_agg'],
|
||||||
|
[this.parentFieldName],
|
||||||
|
{ context: this.config.context || {} },
|
||||||
|
);
|
||||||
|
const childIdsPerId = Object.fromEntries(
|
||||||
|
fetchChildren.map((r) => [r[this.parentFieldName][0], r.id])
|
||||||
|
);
|
||||||
|
for (const d of childrenData) {
|
||||||
|
if (d.id.toString() in childIdsPerId) {
|
||||||
|
d[this.defaultChildFieldName] = childIdsPerId[d.id.toString()];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async updateParentNode(nodeId, { parentNodeId, parentResId }) {
|
||||||
|
const node = this.root.nodePerNodeId[nodeId];
|
||||||
|
const parentNode = parentNodeId ? this.root.nodePerNodeId[parentNodeId] : null;
|
||||||
|
if (node) {
|
||||||
|
const oldParentNode = node.parentNode;
|
||||||
|
let fetchParentChildren = false;
|
||||||
|
const descendantsParentIds = node.descendantsParentIds;
|
||||||
|
let domain = new Domain([["id", "=", node.resId]]);
|
||||||
|
if (oldParentNode) {
|
||||||
|
domain = Domain.or([domain, [["id", "=", oldParentNode.resId]]]);
|
||||||
|
}
|
||||||
|
if (parentNode) {
|
||||||
|
if (parentNode.resId === node.resId) {
|
||||||
|
this.notification.add(
|
||||||
|
_t("The parent record cannot be the record dragged."),
|
||||||
|
{
|
||||||
|
type: "danger",
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
} else if (node.allSubsidiaryResIds.includes(parentNode.resId)) {
|
||||||
|
this.notification.add(
|
||||||
|
_t("Cannot change the parent because it will cause a cyclic."),
|
||||||
|
{
|
||||||
|
type: "danger",
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
domain = Domain.or([
|
||||||
|
domain,
|
||||||
|
[["id", "in", [parentNode.resId, node.resId]]],
|
||||||
|
]);
|
||||||
|
if (parentNode.nodes.length === 0 && parentNode.childResIds.length > 0) {
|
||||||
|
fetchParentChildren = true;
|
||||||
|
domain = Domain.or([domain, [[this.parentFieldName, "=", parentNode.resId]]]);
|
||||||
|
}
|
||||||
|
if (node.id === node.tree.root.id) {
|
||||||
|
this.root.removeTree(node.tree);
|
||||||
|
node.tree = parentNode.tree;
|
||||||
|
} else {
|
||||||
|
node.removeParentNode();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
node.removeParentNode();
|
||||||
|
this.root.addNewRootNode(node);
|
||||||
|
}
|
||||||
|
this.notify({ scrollTarget: "none" });
|
||||||
|
await this.mutex.exec(async () => {
|
||||||
|
await this.orm.write(
|
||||||
|
this.resModel,
|
||||||
|
[node.resId],
|
||||||
|
{ [this.parentFieldName]: parentResId || parentNode?.resId || false },
|
||||||
|
{ context: this.config.context }
|
||||||
|
);
|
||||||
|
});
|
||||||
|
if (descendantsParentIds.length) {
|
||||||
|
domain = Domain.or([domain, [[this.parentFieldName, "in", descendantsParentIds]]]);
|
||||||
|
}
|
||||||
|
domain = domain.toList({});
|
||||||
|
const descendants = {};
|
||||||
|
if (domain.length) {
|
||||||
|
const data = await this.orm.searchRead(
|
||||||
|
this.resModel,
|
||||||
|
domain,
|
||||||
|
this.fieldsToFetch,
|
||||||
|
{ context: this.config.context },
|
||||||
|
);
|
||||||
|
const children = [];
|
||||||
|
for (const d of data) {
|
||||||
|
const parentId = getIdOfMany2oneField(d[this.parentFieldName]);
|
||||||
|
if (d.id === node.resId) {
|
||||||
|
node.data = d;
|
||||||
|
} else if (d.id === oldParentNode?.resId) {
|
||||||
|
oldParentNode.data = d;
|
||||||
|
} else if (parentNode?.resId === d.id) {
|
||||||
|
const parentData = fetchParentChildren
|
||||||
|
? {}
|
||||||
|
: pick(
|
||||||
|
parentNode.data,
|
||||||
|
this.childFieldName || this.defaultChildFieldName
|
||||||
|
);
|
||||||
|
parentNode.data = {
|
||||||
|
...d,
|
||||||
|
...parentData,
|
||||||
|
};
|
||||||
|
} else if (fetchParentChildren && parentId === parentNode.resId) {
|
||||||
|
children.push(d);
|
||||||
|
} else {
|
||||||
|
if (!(parentId in descendants)) {
|
||||||
|
descendants[parentId] = [];
|
||||||
|
}
|
||||||
|
descendants[parentId].push(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (children.length) {
|
||||||
|
parentNode.data[this.childFieldName || this.defaultChildFieldName] = children;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const treeExpanded = this._findTreeExpanded();
|
||||||
|
if (parentNode) {
|
||||||
|
if (treeExpanded && treeExpanded.id !== parentNode.tree.id) {
|
||||||
|
treeExpanded.root.collapseChildNodes();
|
||||||
|
} else if (treeExpanded) {
|
||||||
|
const nodeToCollapse = this._searchNodeToCollapse(
|
||||||
|
parentNode.nodes.length ? parentNode.nodes[0] : parentNode
|
||||||
|
);
|
||||||
|
if (
|
||||||
|
nodeToCollapse &&
|
||||||
|
(descendants[node.resId]?.length || !parentNode.nodes.length)
|
||||||
|
) {
|
||||||
|
nodeToCollapse.collapseChildNodes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (fetchParentChildren) {
|
||||||
|
parentNode.populateChildNodes();
|
||||||
|
}
|
||||||
|
node.setParentNode(parentNode);
|
||||||
|
} else if (treeExpanded && descendants[node.resId]?.length) {
|
||||||
|
treeExpanded.root.collapseChildNodes();
|
||||||
|
}
|
||||||
|
let descendantsParent = node;
|
||||||
|
const handledParents = new Set([node.resId]);
|
||||||
|
while (descendantsParent) {
|
||||||
|
const parentId = descendantsParent.resId;
|
||||||
|
const childNodesData = descendants[parentId];
|
||||||
|
if (!childNodesData) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
descendantsParent.data[this.childFieldName || this.defaultChildFieldName] =
|
||||||
|
childNodesData;
|
||||||
|
descendantsParent.populateChildNodes();
|
||||||
|
handledParents.add(descendantsParent.resId);
|
||||||
|
descendantsParent = descendantsParent.nodes.find((n) => {
|
||||||
|
return !handledParents.has(n.resId) && n.resId in descendants;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.notify({ scrollTarget: nodeId });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
103
static/src/hierarchy_node_draggable.js
Normal file
103
static/src/hierarchy_node_draggable.js
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
/** @odoo-module */
|
||||||
|
|
||||||
|
import { onWillUnmount, reactive, useEffect, useExternalListener } from "@odoo/owl";
|
||||||
|
import { useThrottleForAnimation } from "@web/core/utils/timing";
|
||||||
|
import { pick } from "@web/core/utils/objects";
|
||||||
|
import { makeDraggableHook } from "@web/core/utils/draggable_hook_builder";
|
||||||
|
|
||||||
|
const hookParams = {
|
||||||
|
name: "useHierarchyNodeDraggable",
|
||||||
|
acceptedParams: {
|
||||||
|
rows: [String],
|
||||||
|
},
|
||||||
|
defaultParams: {
|
||||||
|
edgeScrolling: { speed: 20, threshold: 60 },
|
||||||
|
rows: null,
|
||||||
|
},
|
||||||
|
onComputeParams({ ctx, params }) {
|
||||||
|
// Row selector
|
||||||
|
ctx.rowSelector = params.rows || null;
|
||||||
|
if (ctx.rowSelector) {
|
||||||
|
ctx.fullSelector = `${ctx.rowSelector} ${ctx.fullSelector}`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onDragStart(params) {
|
||||||
|
const { ctx, addListener, callHandler } = params;
|
||||||
|
|
||||||
|
const onElementPointerEnter = (ev) => {
|
||||||
|
const element = ev.currentTarget;
|
||||||
|
current.hierarchyElement = element;
|
||||||
|
callHandler("onElementEnter", { element });
|
||||||
|
};
|
||||||
|
|
||||||
|
const onElementPointerLeave = (ev) => {
|
||||||
|
const element = ev.currentTarget;
|
||||||
|
current.hierarchyElement = null;
|
||||||
|
callHandler("onElementLeave", { element });
|
||||||
|
};
|
||||||
|
|
||||||
|
const onRowPointerEnter = (ev) => {
|
||||||
|
const row = ev.currentTarget;
|
||||||
|
current.hierarchyRow = row;
|
||||||
|
callHandler("onRowEnter", { row });
|
||||||
|
};
|
||||||
|
|
||||||
|
const onRowPointerLeave = (ev) => {
|
||||||
|
const row = ev.currentTarget;
|
||||||
|
current.hierarchyRow = null;
|
||||||
|
callHandler("onRowLeave", { row });
|
||||||
|
};
|
||||||
|
|
||||||
|
const { ref, current, elementSelector, rowSelector } = ctx;
|
||||||
|
|
||||||
|
for (const rowEl of ref.el.querySelectorAll(rowSelector)) {
|
||||||
|
addListener(rowEl, "pointerenter", onRowPointerEnter);
|
||||||
|
addListener(rowEl, "pointerleave", onRowPointerLeave);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const siblingEl of ref.el.querySelectorAll(elementSelector)) {
|
||||||
|
if (siblingEl !== current.element) {
|
||||||
|
addListener(siblingEl, "pointerenter", onElementPointerEnter);
|
||||||
|
addListener(siblingEl, "pointerleave", onElementPointerLeave);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pick(current, "element", "row");
|
||||||
|
},
|
||||||
|
onDragEnd({ ctx }) {
|
||||||
|
return pick(ctx.current, "element", "row", "hierarchyRow");
|
||||||
|
},
|
||||||
|
onDrop({ ctx }) {
|
||||||
|
const { current } = ctx;
|
||||||
|
const rowElement = current.hierarchyRow;
|
||||||
|
const element = current.hierarchyElement;
|
||||||
|
if ((rowElement && rowElement !== current.row) || element) {
|
||||||
|
return {
|
||||||
|
element: current.element,
|
||||||
|
row: current.row,
|
||||||
|
nextRow: rowElement && current.row !== rowElement ? rowElement : null,
|
||||||
|
newParentNode: element,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onWillStartDrag({ ctx }) {
|
||||||
|
const { current, rowSelector } = ctx;
|
||||||
|
|
||||||
|
if (rowSelector) {
|
||||||
|
current.row = current.element.closest(rowSelector);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pick(current, "element", "row");
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export function useHierarchyNodeDraggable(params) {
|
||||||
|
const setupHooks = {
|
||||||
|
addListener: useExternalListener,
|
||||||
|
setup: useEffect,
|
||||||
|
teardown: onWillUnmount,
|
||||||
|
throttle: useThrottleForAnimation,
|
||||||
|
wrapState: reactive,
|
||||||
|
}
|
||||||
|
return makeDraggableHook({ ...hookParams, setupHooks })(params);
|
||||||
|
}
|
145
static/src/hierarchy_renderer.js
Normal file
145
static/src/hierarchy_renderer.js
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
/** @odoo-module */
|
||||||
|
|
||||||
|
import { Component, useRef, onPatched } from "@odoo/owl";
|
||||||
|
|
||||||
|
import { _t } from "@web/core/l10n/translation";
|
||||||
|
import { useBus, useService } from "@web/core/utils/hooks";
|
||||||
|
import { scrollTo } from "@web/core/utils/scrolling";
|
||||||
|
|
||||||
|
import { HierarchyCard } from "./hierarchy_card";
|
||||||
|
import { useHierarchyNodeDraggable } from "./hierarchy_node_draggable";
|
||||||
|
|
||||||
|
export class HierarchyRenderer extends Component {
|
||||||
|
static components = {
|
||||||
|
HierarchyCard,
|
||||||
|
};
|
||||||
|
static props = {
|
||||||
|
model: Object,
|
||||||
|
openRecord: Function,
|
||||||
|
archInfo: Object,
|
||||||
|
templates: Object,
|
||||||
|
};
|
||||||
|
static template = "web_hierarchy.HierarchyRenderer";
|
||||||
|
|
||||||
|
setup() {
|
||||||
|
this.rendererRef = useRef("renderer");
|
||||||
|
this.notification = useService("notification");
|
||||||
|
if (this.canDragAndDropRecord) {
|
||||||
|
useHierarchyNodeDraggable({
|
||||||
|
ref: this.rendererRef,
|
||||||
|
enable: this.draggable,
|
||||||
|
elements: ".o_hierarchy_node_container",
|
||||||
|
handle: ".o_hierarchy_node",
|
||||||
|
rows: ".o_hierarchy_row",
|
||||||
|
ignore: "button",
|
||||||
|
onDragStart: ({ addClass, element }) => {
|
||||||
|
addClass(element, "o_hierarchy_dragged");
|
||||||
|
addClass(element.querySelector(".o_hierarchy_node"), "shadow");
|
||||||
|
},
|
||||||
|
onDragEnd: ({ removeClass, element, row, hierarchyRow }) => {
|
||||||
|
removeClass(element, "o_hierarchy_dragged");
|
||||||
|
if (row) {
|
||||||
|
removeClass(row, "o_hierarchy_hover");
|
||||||
|
}
|
||||||
|
if (hierarchyRow) {
|
||||||
|
removeClass(hierarchyRow, "o_hierarchy_hover");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onDrop: (params) => {
|
||||||
|
this.nodeDrop(params);
|
||||||
|
},
|
||||||
|
onElementEnter: ({ addClass, element }) => {
|
||||||
|
addClass(element, "o_hierarchy_hover");
|
||||||
|
},
|
||||||
|
onElementLeave: ({ removeClass, element }) => {
|
||||||
|
removeClass(element, "o_hierarchy_hover");
|
||||||
|
},
|
||||||
|
onRowEnter: ({ addClass, row }) => {
|
||||||
|
addClass(row, "o_hierarchy_hover");
|
||||||
|
},
|
||||||
|
onRowLeave: ({ removeClass, row }) => {
|
||||||
|
removeClass(row, "o_hierarchy_hover");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.scrollTarget = "none";
|
||||||
|
useBus(this.props.model.bus, "hierarchyScrollTarget", (ev) => {
|
||||||
|
this.scrollTarget = ev.detail?.scrollTarget || "none";
|
||||||
|
});
|
||||||
|
onPatched(this.onPatched);
|
||||||
|
}
|
||||||
|
|
||||||
|
onPatched() {
|
||||||
|
if (this.scrollTarget === "none") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const row =
|
||||||
|
this.scrollTarget === "bottom"
|
||||||
|
? this.rendererRef.el.querySelector(":scope .o_hierarchy_row:last-child")
|
||||||
|
: this.rendererRef.el
|
||||||
|
.querySelector(
|
||||||
|
`:scope .o_hierarchy_node[data-node-id="${this.scrollTarget}"]`
|
||||||
|
)
|
||||||
|
?.closest(".o_hierarchy_row");
|
||||||
|
this.scrollTarget = "none";
|
||||||
|
if (!row) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
scrollTo(row, { behavior: "smooth" });
|
||||||
|
}
|
||||||
|
|
||||||
|
get canDragAndDropRecord() {
|
||||||
|
return this.draggable && !this.env.isSmall;
|
||||||
|
}
|
||||||
|
|
||||||
|
get draggable() {
|
||||||
|
return this.props.archInfo.draggable;
|
||||||
|
}
|
||||||
|
|
||||||
|
get rows() {
|
||||||
|
const rootNodes = this.props.model.root.rootNodes;
|
||||||
|
const rows = [{ nodes: rootNodes }];
|
||||||
|
const processNode = (node) => {
|
||||||
|
if (!node.isLeaf) {
|
||||||
|
rows.push({ parentNode: node, nodes: node.nodes});
|
||||||
|
for (const subNode of node.nodes) {
|
||||||
|
processNode(subNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const node of this.props.model.root.rootNodes) {
|
||||||
|
processNode(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
async nodeDrop({ element, row, nextRow, newParentNode }) {
|
||||||
|
let parentNodeId, parentResId;
|
||||||
|
if (newParentNode) {
|
||||||
|
parentNodeId = newParentNode.dataset.nodeId;
|
||||||
|
} else if (nextRow?.dataset.rowId !== row.dataset.rowId) {
|
||||||
|
parentNodeId = nextRow.dataset.parentNodeId;
|
||||||
|
if (!parentNodeId) {
|
||||||
|
const nodes = this.rows[nextRow.dataset.rowId].nodes || [];
|
||||||
|
if (nodes) {
|
||||||
|
parentNodeId = nodes[0].parentNode?.id;
|
||||||
|
if (!parentNodeId) {
|
||||||
|
parentResId = nodes[0].parentResId;
|
||||||
|
if (!nodes.every((node) => node.parentResId === parentResId)) {
|
||||||
|
this.notification.add(
|
||||||
|
_t("Impossible to update the parent node of the dragged node because no parent has been found."),
|
||||||
|
{
|
||||||
|
type: "danger",
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await this.props.model.updateParentNode(element.dataset.nodeId, { parentResId, parentNodeId });
|
||||||
|
}
|
||||||
|
}
|
74
static/src/hierarchy_renderer.scss
Normal file
74
static/src/hierarchy_renderer.scss
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
$o-chart-line-color: #ababb1;
|
||||||
|
|
||||||
|
.o_hierarchy_renderer {
|
||||||
|
.o_hierarchy_container {
|
||||||
|
gap: 25px;
|
||||||
|
|
||||||
|
.o_hierarchy_row {
|
||||||
|
&.o_hierarchy_hover {
|
||||||
|
background-color: $hierarchy_element_hover-background;
|
||||||
|
box-shadow: -1px -1px 0px 0px $hierarchy_element_hover-border inset,
|
||||||
|
1px 1px 0px 0px $hierarchy_element_hover-border inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:has(.o_hierarchy_node_unfolded) .o_hierarchy_node_container:not(.o_hierarchy_node_unfolded) {
|
||||||
|
opacity: 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_hierarchy_separator {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.o_hierarchy_line_left {
|
||||||
|
&:before {
|
||||||
|
border-top: 2px solid $o-chart-line-color;
|
||||||
|
border-left: 2px solid $o-chart-line-color;
|
||||||
|
border-top-left-radius: 8px;
|
||||||
|
margin-left: -10%;
|
||||||
|
margin-top: -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
border-bottom: 2px solid $o-chart-line-color;
|
||||||
|
border-right: 2px solid $o-chart-line-color;
|
||||||
|
border-bottom-right-radius: 6px;
|
||||||
|
margin-left: 30%;
|
||||||
|
margin-top: -12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_hierarchy_line_right {
|
||||||
|
&:before {
|
||||||
|
border-bottom: 2px solid $o-chart-line-color;
|
||||||
|
border-left: 2px solid $o-chart-line-color;
|
||||||
|
border-bottom-left-radius: 6px;
|
||||||
|
margin-left: calc(-10% - 1px);
|
||||||
|
margin-top: -12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
border-top: 2px solid $o-chart-line-color;
|
||||||
|
border-right: 2px solid $o-chart-line-color;
|
||||||
|
border-top-right-radius: 8px;
|
||||||
|
margin-left: 30%;
|
||||||
|
margin-top: -2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_hierarchy_line_part {
|
||||||
|
border-top: 2px solid $o-chart-line-color;
|
||||||
|
margin: 0 10%;
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_hierarchy_line_part:before, .o_hierarchy_line_part:after {
|
||||||
|
content: "";
|
||||||
|
width: calc(10% + 1px);
|
||||||
|
height: 12px;
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
38
static/src/hierarchy_renderer.xml
Normal file
38
static/src/hierarchy_renderer.xml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<templates>
|
||||||
|
|
||||||
|
<t t-name="web_hierarchy.HierarchyRenderer">
|
||||||
|
<div class="o_hierarchy_renderer w-100 d-flex justify-content-center" t-ref="renderer">
|
||||||
|
<div class="o_hierarchy_container d-flex flex-column px-3 pt-4 mw-xl-75">
|
||||||
|
<t t-foreach="rows" t-as="row" t-key="row_index">
|
||||||
|
<t t-set="previousRow" t-value="!row_first ? rows[row_index - 1] : null"/>
|
||||||
|
<t t-if="!row_first">
|
||||||
|
<div t-if="row.parentNode and previousRow.nodes.length > 1"
|
||||||
|
class="o_hierarchy_parent_node_container d-flex justify-content-center"
|
||||||
|
>
|
||||||
|
<span t-esc="row.parentNode.data.name" />
|
||||||
|
</div>
|
||||||
|
<div class="o_hierarchy_separator d-flex">
|
||||||
|
<div class="o_hierarchy_line_part o_hierarchy_line_left"></div>
|
||||||
|
<div class="o_hierarchy_line_part o_hierarchy_line_right"></div>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
<div class="o_hierarchy_row row justify-content-center flex-wrap row-cols-2 row-cols-lg-5 g-2 g-lg-3"
|
||||||
|
t-att-class="{ 'pb-4': row_last }" t-att-data-parent-node-id="row.parentNode?.id"
|
||||||
|
t-att-data-row-id="row_index"
|
||||||
|
>
|
||||||
|
<t t-foreach="row.nodes" t-as="node" t-key="node.id">
|
||||||
|
<HierarchyCard
|
||||||
|
node="node"
|
||||||
|
openRecord="props.openRecord"
|
||||||
|
archInfo="props.archInfo"
|
||||||
|
templates="props.templates"
|
||||||
|
/>
|
||||||
|
</t>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
</templates>
|
36
static/src/hierarchy_view.js
Normal file
36
static/src/hierarchy_view.js
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/** @odoo-module */
|
||||||
|
|
||||||
|
import { _t } from "@web/core/l10n/translation";
|
||||||
|
import { registry } from "@web/core/registry";
|
||||||
|
import { HierarchyArchParser } from "./hierarchy_arch_parser";
|
||||||
|
import { HierarchyController } from "./hierarchy_controller";
|
||||||
|
import { HierarchyModel } from "./hierarchy_model";
|
||||||
|
import { HierarchyRenderer } from "./hierarchy_renderer";
|
||||||
|
|
||||||
|
export const hierarchyView = {
|
||||||
|
type: "hierarchy",
|
||||||
|
display_name: _t("Hierarchy"),
|
||||||
|
icon: "fa fa-share-alt o_hierarchy_icon",
|
||||||
|
isMobileFriendly: false,
|
||||||
|
multiRecord: true,
|
||||||
|
ArchParser: HierarchyArchParser,
|
||||||
|
Controller: HierarchyController,
|
||||||
|
Model: HierarchyModel,
|
||||||
|
Renderer: HierarchyRenderer,
|
||||||
|
buttonTemplate: "web_hierarchy.HierarchyButtons",
|
||||||
|
searchMenuTypes: [],
|
||||||
|
|
||||||
|
props: (genericProps, view) => {
|
||||||
|
const { ArchParser, Model, Renderer, buttonTemplate: viewButtonTemplate } = view;
|
||||||
|
const { arch, relatedModels, resModel, buttonTemplate } = genericProps;
|
||||||
|
return {
|
||||||
|
...genericProps,
|
||||||
|
archInfo: new ArchParser().parse(arch, relatedModels, resModel),
|
||||||
|
buttonTemplate: buttonTemplate || viewButtonTemplate,
|
||||||
|
Model,
|
||||||
|
Renderer,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
registry.category("views").add("hierarchy", hierarchyView);
|
3
static/src/hierarchy_view.scss
Normal file
3
static/src/hierarchy_view.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.o_hierarchy_icon { // hierarchy icon
|
||||||
|
rotate: 90deg;
|
||||||
|
}
|
1104
static/tests/hierarchy_view_tests.js
Normal file
1104
static/tests/hierarchy_view_tests.js
Normal file
File diff suppressed because it is too large
Load Diff
78
static/tests/mock_server.js
Normal file
78
static/tests/mock_server.js
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/** @odoo-module **/
|
||||||
|
|
||||||
|
import { patch } from "@web/core/utils/patch";
|
||||||
|
import { MockServer } from "@web/../tests/helpers/mock_server";
|
||||||
|
|
||||||
|
patch(MockServer.prototype, {
|
||||||
|
async _performRPC(route, args) {
|
||||||
|
if (args.method === "hierarchy_read") {
|
||||||
|
return this.mockHierarchyRead(args.model, args.args, args.kwargs);
|
||||||
|
}
|
||||||
|
return super._performRPC(route, args);
|
||||||
|
},
|
||||||
|
|
||||||
|
mockHierarchyRead(modelName, args, kwargs) {
|
||||||
|
const [domain, fields, parentFieldName, childFieldName] = args;
|
||||||
|
if (!(parentFieldName in fields)) {
|
||||||
|
fields.push(parentFieldName);
|
||||||
|
}
|
||||||
|
let records = this.mockSearchRead(modelName, [domain, fields], kwargs);
|
||||||
|
let focusedRecordId = false;
|
||||||
|
let fetchChildIdsForAllRecords = false;
|
||||||
|
if (records.length === 1) {
|
||||||
|
const record = records[0];
|
||||||
|
let domain = [[parentFieldName, "=", record.id], ["id", "!=", record.id]];
|
||||||
|
if (record[parentFieldName]) {
|
||||||
|
focusedRecordId = record.id;
|
||||||
|
const parentResId = record[parentFieldName][0];
|
||||||
|
domain = [
|
||||||
|
["id", "!=", record.id],
|
||||||
|
"|",
|
||||||
|
["id", "=", parentResId],
|
||||||
|
[parentFieldName, "in", [parentResId, record.id]],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
records.push(...this.mockSearchRead(modelName, [domain, fields], kwargs));
|
||||||
|
} else if (!records.length) {
|
||||||
|
records = this.mockSearchRead(
|
||||||
|
modelName,
|
||||||
|
[
|
||||||
|
[[parentFieldName, "=", false]],
|
||||||
|
fields,
|
||||||
|
],
|
||||||
|
kwargs,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
fetchChildIdsForAllRecords = true
|
||||||
|
}
|
||||||
|
const childrenIdsPerRecordId = {};
|
||||||
|
if (!childFieldName) {
|
||||||
|
const parentResIds = [];
|
||||||
|
for (const rec of records) {
|
||||||
|
if (rec[parentFieldName]) {
|
||||||
|
parentResIds.push(rec[parentFieldName][0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const recordIds = records.map((rec) => rec.id);
|
||||||
|
const data = this.mockReadGroup(modelName, {
|
||||||
|
domain: [[parentFieldName, "in", fetchChildIdsForAllRecords ? recordIds : recordIds.filter((id) => !parentResIds.includes(id))]],
|
||||||
|
groupby: [parentFieldName],
|
||||||
|
fields: ["id:array_agg"],
|
||||||
|
});
|
||||||
|
for (const d of data) {
|
||||||
|
childrenIdsPerRecordId[d[parentFieldName][0]] = d.id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (focusedRecordId || Object.keys(childrenIdsPerRecordId).length) {
|
||||||
|
for (const record of records) {
|
||||||
|
if (record.id in childrenIdsPerRecordId) {
|
||||||
|
record.__child_ids__ = childrenIdsPerRecordId[record.id];
|
||||||
|
}
|
||||||
|
if (record.id === focusedRecordId) {
|
||||||
|
record.__focus__ = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return records;
|
||||||
|
},
|
||||||
|
})
|
Loading…
x
Reference in New Issue
Block a user