Начальное наполнение

This commit is contained in:
parent f7c4b0c9ec
commit 8d16ff38b4
67 changed files with 9679 additions and 0 deletions

4
__init__.py Normal file
View File

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import controllers
from . import models

31
__manifest__.py Normal file
View File

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': "Sale Product Configurator",
'version': '1.0',
'category': 'Hidden',
'summary': "Configure your products",
'description': """
Technical module:
The main purpose is to override the sale_order view to allow configuring products in the SO form.
It also enables the "optional products" feature.
""",
'depends': ['sale'],
'data': [
'views/product_template_views.xml',
'views/sale_order_views.xml',
],
'demo': [
'data/sale_demo.xml',
],
'assets': {
'web.assets_backend': [
'sale_product_configurator/static/src/**/*',
],
},
'auto_install': True,
'license': 'LGPL-3',
}

3
controllers/__init__.py Normal file
View File

@ -0,0 +1,3 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import main

347
controllers/main.py Normal file
View File

@ -0,0 +1,347 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import datetime
from odoo.http import Controller, request, route
class ProductConfiguratorController(Controller):
@route('/sale_product_configurator/get_values', type='json', auth='user')
def get_product_configurator_values(
self,
product_template_id,
quantity,
currency_id,
so_date,
product_uom_id=None,
company_id=None,
pricelist_id=None,
ptav_ids=None,
only_main_product=False,
):
""" Return all product information needed for the product configurator.
:param int product_template_id: The product for which to seek information, as a
`product.template` id.
:param int quantity: The quantity of the product.
:param int currency_id: The currency of the transaction, as a `res.currency` id.
:param str so_date: The date of the `sale.order`, to compute the price at the right rate.
:param int|None product_uom_id: The unit of measure of the product, as a `uom.uom` id.
:param int|None company_id: The company to use, as a `res.company` id.
:param int|None pricelist_id: The pricelist to use, as a `product.pricelist` id.
:param recordset|None product_template_attribute_value_ids: The combination of the product,
as a `product.template.attribute
.value` recordset.
:param bool only_main_product: Whether the optional products should be included or not.
:rtype: dict
:return: A dict containing a list of products and a list of optional products information,
generated by :meth:`_get_product_information`.
"""
if company_id:
request.update_context(allowed_company_ids=[company_id])
product_template = request.env['product.template'].browse(product_template_id)
combination = request.env['product.template.attribute.value']
if ptav_ids:
combination = request.env['product.template.attribute.value'].browse(ptav_ids).filtered(
lambda ptav: ptav.product_tmpl_id.id == product_template_id
)
# Set missing attributes (unsaved no_variant attributes, or new attribute on existing product)
unconfigured_ptals = (
product_template.attribute_line_ids - combination.attribute_line_id).filtered(
lambda ptal: ptal.attribute_id.display_type != 'multi')
combination += unconfigured_ptals.mapped(
lambda ptal: ptal.product_template_value_ids._only_active()[:1]
)
if not combination:
combination = product_template._get_first_possible_combination()
return dict(
products=[
dict(
**self._get_product_information(
product_template,
combination,
currency_id,
so_date,
quantity=quantity,
product_uom_id=product_uom_id,
pricelist_id=pricelist_id,
),
parent_product_tmpl_ids=[],
)
],
optional_products=[
dict(
**self._get_product_information(
optional_product_template,
optional_product_template._get_first_possible_combination(
parent_combination=combination
),
currency_id,
so_date,
# giving all the ptav of the parent product to get all the exclusions
parent_combination=product_template.attribute_line_ids.\
product_template_value_ids,
pricelist_id=pricelist_id,
),
parent_product_tmpl_ids=[product_template.id],
) for optional_product_template in product_template.optional_product_ids
] if not only_main_product else []
)
@route('/sale_product_configurator/create_product', type='json', auth='user')
def sale_product_configurator_create_product(self, product_template_id, combination):
""" Create the product when there is a dynamic attribute in the combination.
:param int product_template_id: The product for which to seek information, as a
`product.template` id.
:param recordset combination: The combination of the product, as a
`product.template.attribute.value` recordset.
:rtype: int
:return: The product created, as a `product.product` id.
"""
product_template = request.env['product.template'].browse(product_template_id)
combination = request.env['product.template.attribute.value'].browse(combination)
product = product_template._create_product_variant(combination)
return product.id
@route('/sale_product_configurator/update_combination', type='json', auth='user')
def sale_product_configurator_update_combination(
self,
product_template_id,
combination,
currency_id,
so_date,
quantity,
product_uom_id=None,
company_id=None,
pricelist_id=None,
):
""" Return the updated combination information.
:param int product_template_id: The product for which to seek information, as a
`product.template` id.
:param recordset combination: The combination of the product, as a
`product.template.attribute.value` recordset.
:param int currency_id: The currency of the transaction, as a `res.currency` id.
:param str so_date: The date of the `sale.order`, to compute the price at the right rate.
:param int quantity: The quantity of the product.
:param int|None product_uom_id: The unit of measure of the product, as a `uom.uom` id.
:param int|None company_id: The company to use, as a `res.company` id.
:param int|None pricelist_id: The pricelist to use, as a `product.pricelist` id.
:rtype: dict
:return: Basic informations about a product, generated by
:meth:`_get_basic_product_information`.
"""
if company_id:
request.update_context(allowed_company_ids=[company_id])
product_template = request.env['product.template'].browse(product_template_id)
pricelist = request.env['product.pricelist'].browse(pricelist_id)
product_uom = request.env['uom.uom'].browse(product_uom_id)
currency = request.env['res.currency'].browse(currency_id)
combination = request.env['product.template.attribute.value'].browse(combination)
product = product_template._get_variant_for_combination(combination)
return self._get_basic_product_information(
product or product_template,
pricelist,
combination,
quantity=quantity or 0.0,
uom=product_uom,
currency=currency,
date=datetime.fromisoformat(so_date),
)
@route('/sale_product_configurator/get_optional_products', type='json', auth='user')
def sale_product_configurator_get_optional_products(
self,
product_template_id,
combination,
parent_combination,
currency_id,
so_date,
company_id=None,
pricelist_id=None,
):
""" Return information about optional products for the given `product.template`.
:param int product_template_id: The product for which to seek information, as a
`product.template` id.
:param recordset combination: The combination of the product, as a
`product.template.attribute.value` recordset.
:param recordset parent_combination: The combination of the parent product, as a
`product.template.attribute.value` recordset.
:param int currency_id: The currency of the transaction, as a `res.currency` id.
:param str so_date: The date of the `sale.order`, to compute the price at the right rate.
:param int|None company_id: The company to use, as a `res.company` id.
:param int|None pricelist_id: The pricelist to use, as a `product.pricelist` id.
:rtype: [dict]
:return: A list of optional products information, generated by
:meth:`_get_product_information`.
"""
if company_id:
request.update_context(allowed_company_ids=[company_id])
product_template = request.env['product.template'].browse(product_template_id)
parent_combination = request.env['product.template.attribute.value'].browse(
parent_combination + combination
)
return [
dict(
**self._get_product_information(
optional_product_template,
optional_product_template._get_first_possible_combination(
parent_combination=parent_combination
),
currency_id,
so_date,
parent_combination=parent_combination,
pricelist_id=pricelist_id,
),
parent_product_tmpl_ids=[product_template.id],
) for optional_product_template in product_template.optional_product_ids
]
def _get_product_information(
self,
product_template,
combination,
currency_id,
so_date,
quantity=1,
product_uom_id=None,
pricelist_id=None,
parent_combination=None,
):
""" Return complete information about a product.
:param recordset product_template: The product for which to seek information, as a
`product.template` record.
:param recordset combination: The combination of the product, as a
`product.template.attribute.value` recordset.
:param int currency_id: The currency of the transaction, as a `res.currency` id.
:param str so_date: The date of the `sale.order`, to compute the price at the right rate.
:param int quantity: The quantity of the product.
:param int|None product_uom_id: The unit of measure of the product, as a `uom.uom` id.
:param int|None pricelist_id: The pricelist to use, as a `product.pricelist` id.
:param recordset|None parent_combination: The combination of the parent product, as a
`product.template.attribute.value` recordset.
:rtype: dict
:return: A dict with the following structure:
{
'product_tmpl_id': int,
'id': int,
'description_sale': str|False,
'display_name': str,
'price': float,
'quantity': int
'attribute_line': [{
'id': int
'attribute': {
'id': int
'name': str
'display_type': str
},
'attribute_value': [{
'id': int,
'name': str,
'price_extra': float,
'html_color': str|False,
'image': str|False,
'is_custom': bool
}],
'selected_attribute_id': int,
}],
'exclusions': dict,
'archived_combination': dict,
'parent_exclusions': dict,
}
"""
pricelist = request.env['product.pricelist'].browse(pricelist_id)
product_uom = request.env['uom.uom'].browse(product_uom_id)
currency = request.env['res.currency'].browse(currency_id)
product = product_template._get_variant_for_combination(combination)
attribute_exclusions = product_template._get_attribute_exclusions(
parent_combination=parent_combination,
combination_ids=combination.ids,
)
return dict(
product_tmpl_id=product_template.id,
**self._get_basic_product_information(
product or product_template,
pricelist,
combination,
quantity=quantity,
uom=product_uom,
currency=currency,
date=datetime.fromisoformat(so_date),
),
quantity=quantity,
attribute_lines=[dict(
id=ptal.id,
attribute=dict(**ptal.attribute_id.read(['id', 'name', 'display_type'])[0]),
attribute_values=[
dict(
**ptav.read(['name', 'html_color', 'image', 'is_custom'])[0],
price_extra=ptav.currency_id._convert(
ptav.price_extra,
currency,
request.env.company,
datetime.fromisoformat(so_date).date(),
),
) for ptav in ptal.product_template_value_ids
if ptav.ptav_active or combination and ptav.id in combination.ids
],
selected_attribute_value_ids=combination.filtered(
lambda c: ptal in c.attribute_line_id
).ids,
create_variant=ptal.attribute_id.create_variant,
) for ptal in product_template.attribute_line_ids],
exclusions=attribute_exclusions['exclusions'],
archived_combinations=attribute_exclusions['archived_combinations'],
parent_exclusions=attribute_exclusions['parent_exclusions'],
)
def _get_basic_product_information(self, product_or_template, pricelist, combination, **kwargs):
""" Return basic information about a product
:param recordset product_or_template: The product for which to seek information, as a
`product.product` or `product.template` record.
:param recordset|None pricelist: The pricelist to use, as a `product.pricelist` record.
:param recordset combination: The combination of the product, as a
`product.template.attribute.value` recordset.
:param dict kwargs: Locally unused data passed to `_get_product_price`
:rtype: dict
:return: A dict with the following structure::
{
'id': int, # if product_or_template is a record of `product.product`.
'description_sale': str|False,
'display_name': str,
'price': float,
'quantity': int,
}
"""
basic_information = dict(
**product_or_template.read(['description_sale', 'display_name'])[0]
)
# If the product is a template, check the combination to compute the name to take dynamic
# and no_variant attributes into account. Also, drop the id which was auto-included by the
# search but isn't relevant since it is supposed to be the id of a `product.product` record.
if not product_or_template.is_product_variant:
basic_information['id'] = False
combination_name = combination._get_combination_name()
if combination_name:
basic_information.update(
display_name=f"{basic_information['display_name']} ({combination_name})"
)
return dict(
**basic_information,
price=pricelist._get_product_price(
product_or_template.with_context(
**product_or_template._get_product_price_context(combination)
),
**kwargs,
),
)

25
data/sale_demo.xml Normal file
View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<record id="product_product_1_product_template" model="product.template">
<field name="name">Chair floor protection</field>
<field name="categ_id" ref="product.product_category_5"/>
<field name="list_price">12.0</field>
<field name="weight">0.01</field>
<field name="uom_id" ref="uom.product_uom_unit"/>
<field name="uom_po_id" ref="uom.product_uom_unit"/>
<field name="description_sale">Office chairs can harm your floor: protect it.</field>
<field name="image_1920" type="base64" file="sale/static/img/floor_protection-image.jpg"/>
</record>
<record id="product.product_product_4_product_template" model="product.template">
<field name="optional_product_ids" eval="[(6,0,[ref('product.product_product_11_product_template')])]"/>
</record>
<record id="product.product_product_11_product_template" model="product.template">
<field name="optional_product_ids" eval="[(6,0,[ref('product_product_1_product_template')])]"/>
</record>
<record id="product.product_product_13_product_template" model="product.template">
<field name="optional_product_ids" eval="[(6,0,[ref('product.product_product_11_product_template')])]"/>
</record>
</odoo>

180
i18n/ar.po Normal file
View File

@ -0,0 +1,180 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Malaz Abuidris <msea@odoo.com>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Malaz Abuidris <msea@odoo.com>, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "إضافة"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "إضافة واحدة"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "أضف منتجات اختيارية "
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "قيم الخاصية"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "إلغاء"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "واقي الأرضية للكرسي "
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "قم بتهيئة منتجك "
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "تأكيد"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "أضف قيمة مخصصة "
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "هل المنتج قابل للتهيئة؟ "
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "يمكن أن تتضرر أرضيتك بسبب كراسي المكتب: قم بحمايتها. "
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "منتجات اختيارية"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"بعض المنتجات الاختيارية يتم اقتراحها كلما قام العميل بالضغط على *إضافة إلى "
"عربة التسوق* (استراتيجية البيع العابر، مثال: لأجهزة الحاسوب: الضمان، "
"والبرامج، إلخ). "
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "السعر"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "المنتج"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "صورة المنتج"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "متغير المنتج "
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "الكمية"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "اقتراح عند 'الإضافة إلى عربة التسوق' أو عرض السعر "
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "إزالة واحد "
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "قم بإزالة المنتج "
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "بند أمر المبيعات"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "هذا الخيار أو تركيبة الخيارات هذه غير متاحة "
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "الإجمالي:"

185
i18n/bg.po Normal file
View File

@ -0,0 +1,185 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Ивайло Малинов <iv.malinov@gmail.com>, 2023
# Igor Sheludko <igor.sheludko@gmail.com>, 2023
# Rosen Vladimirov <vladimirov.rosen@gmail.com>, 2023
# Martin Trigaux, 2023
# Maria Boyadjieva <marabo2000@gmail.com>, 2023
# Albena Mincheva <albena_vicheva@abv.bg>, 2023
# KeyVillage, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: KeyVillage, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Добави"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Атрибутивни стойности"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Отказ"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Потвърждение"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr ""
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Опционални продукти"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Незадължителни продукти се предлагат всеки път, когато клиентът натисне * "
"Добавете в количката * (стратегия за кръстосани продажби, например за "
"компютри: гаранция, софтуер и т.н.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Цена"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Продукт"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Изображение на продукта"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Продуктов вариант"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Количество"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Ред на поръчка за продажби"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Общо:"

188
i18n/ca.po Normal file
View File

@ -0,0 +1,188 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2023
# Carles Antoli <carlesantoli@hotmail.com>, 2023
# Óscar Fonseca <tecnico@pyming.com>, 2023
# Sandra Franch <sandra.franch@upc.edu>, 2023
# marcescu, 2023
# Arnau Ros, 2023
# Manel Fernandez Ramirez <manelfera@outlook.com>, 2023
# Quim - eccit <quim@eccit.com>, 2023
# Josep Anton Belchi, 2023
# Albert Parera, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Albert Parera, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Afegir"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Afegir-ne un"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Valors de atribut"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Cancel·la"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Protecció del terra de la cadira"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Confirmar"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "¿És el producte configurable?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Les cadires d'oficina poden danyar el seu terra: protegeixi-ho."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Productes opcionals"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Els productes opcionals se suggereixen cada vegada que el client prem *Add "
"to Cart* (estratègia de venda creuada, per exemple, per a ordinadors: "
"garantia, programari, etc.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Preu"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Producte"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Imatge de Producte"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Variant de producte"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Quantitat"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Recomanar en Afegir \" a la cistella\" o al pressupost"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Eliminar un"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Línia comanda de venda"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Total:"

181
i18n/cs.po Normal file
View File

@ -0,0 +1,181 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Jakub Smolka, 2023
# Ivana Bartonkova, 2023
# Wil Odoo, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Wil Odoo, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Přidat"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Přidat jeden"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Hodnoty atributů"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Zrušit"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Ochrana podlahy židle"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Potvrdit"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Je produkt konfigurovatelný?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Kancelářské židle mohou poškodit podlahu: chraňte ji."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Volitelné produkty"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Volitelné produkty jsou navrhovány vždy, když zákazník stiskne *Přidat do "
"košíku* (strategie křížového prodeje, např. Pro počítače: záruka, software "
"atd.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Cena"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produkt"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Produktový obrázek"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Produktová varianta"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Množství"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Odebrat jeden"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Položka prodejní objednávky"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Celkem:"

179
i18n/da.po Normal file
View File

@ -0,0 +1,179 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Mads Søndergaard, 2023
# Martin Trigaux, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Martin Trigaux, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Tilføj"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Tilføj en"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Tilføj valgfrie produkter"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Egenskabs værdier"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Annullér"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Stol gulvbeskyttelse"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Bekræft"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Kan produktet konfigureres?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Kontorstole kan beskadige dit gulv: beskyt det."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Valgfrie produkter"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Valgfrie produkter foreslås, når kunden trykker på *Tilføj til kurv* "
"(krydssalgs-strategi, f.eks. til computere: garanti, software osv.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Pris"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produkt"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Produktbillede"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Varevariant"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Antal"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Fjern én"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Salgsordrelinje"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Total:"

181
i18n/de.po Normal file
View File

@ -0,0 +1,181 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Michael Hofer, 2023
# Larissa Manderfeld, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Larissa Manderfeld, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Hinzufügen"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Hinzufügen"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Optionale Produkte hinzufügen"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Attributwerte"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Stornieren"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Stuhlbodenschutz"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "Ihr Produkt konfigurieren"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Bestätigen"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "Einen benutzerdefinierten Wert eingeben"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Ist das Produkt konfigurierbar?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Bürostühle können Ihren Boden beschädigen: Schützen Sie ihn."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Optionale Produkte"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Optionale Produkte werden vorgeschlagen, wenn der Kunde auf „In den "
"Warenkorb“ klickt (Cross-Selling-Strategie, z. B. für Computer: Garantie, "
"Software usw.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Preis"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produkt"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Produktbild"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Produktvariante"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Menge"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Empfohlen bei „In den Warenkorb“ oder Angebot"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Entfernen"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "Produkt entfernen"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Verkaufsauftragszeile"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "Diese Option oder Kombination von Optionen ist nicht verfügbar"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Gesamt:"

181
i18n/es.po Normal file
View File

@ -0,0 +1,181 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Lucia Pacheco, 2023
# Wil Odoo, 2023
# Larissa Manderfeld, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Añadir"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Agregue uno"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Agregar productos opcionales"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Valores de atributo"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Protección del piso de la silla"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "Configurar su producto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Confirmar"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "Escribir un valor personalizado"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "¿El producto es configurable?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Las sillas de oficina pueden dañar su piso: protéjalo."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Productos opcionales"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Los productos opcionales aparecen como sugerencias cada vez que el cliente "
"pulsa en \"Añadir al carro\" (estrategia de venta cruzada; p. ej., en el "
"caso de los ordenadores: garantía, software, etc.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Precio"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Producto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Imagen del producto"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Variante de producto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Cantidad"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Recomendar al \"Añadir al carrito\" o al presupuesto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Quitar uno"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "Eliminar producto"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Línea de orden de venta"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "Esta opción o esta combinación de opciones no está disponible"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Total:"

181
i18n/es_419.po Normal file
View File

@ -0,0 +1,181 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Lucia Pacheco, 2023
# Iran Villalobos López, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Iran Villalobos López, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Agregar"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Agregar uno"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Agregar productos opcionales"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Valores de atributo"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Protector de piso para silla"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "Configurar su producto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Confirmar"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "Escribir un valor personalizado"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "¿El producto es configurable?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Las sillas de oficina pueden dañar su piso: protéjalo."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Productos opcionales"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Los productos opcionales se recomiendan cada vez que el cliente hace clic en"
" *Agregar al carrito* (estrategia de venta cruzada. Por ejemplo, para "
"computadoras: garantía, software, etc)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Precio"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Producto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Imagen del producto"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Variante del producto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Cantidad"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Recomendar al \"Añadir al carrito\" o a la cotización"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Eliminar uno"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "Eliminar producto"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Línea de la orden de venta"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "Esta opción o esta combinación de opciones no está disponible"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Total:"

187
i18n/et.po Normal file
View File

@ -0,0 +1,187 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Rivo Zängov <eraser@eraser.ee>, 2023
# Algo Kärp <algokarp@gmail.com>, 2023
# Piia Paurson <piia@avalah.ee>, 2023
# Martin Trigaux, 2023
# Triine Aavik <triine@avalah.ee>, 2023
# Leaanika Randmets, 2023
# Patrick-Jordan Kiudorv, 2023
# Egon Raamat <egon@avalah.ee>, 2023
# Eneli Õigus <enelioigus@gmail.com>, 2023
# Anna, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Anna, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Lisa"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Lisage üks"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Lisa valikulised tooted"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Atribuudi väärtused"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Tühista"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Tooli põrandakaitse"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "Seadista oma toode"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Kinnitage"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "Sisesta kohandatud väärtus"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Kas see toode on konfigureeritav?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Kontoritoolid võivad teie põrandat kahjustada: kaitske seda."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Valikulised tooted"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Valikulisi tooteid soovitatakse alati, kui klient vajutab *Lisa ostukorvi* "
"(ristmüügistrateegia, nt arvutite jaoks: garantii, tarkvara jne)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Hind"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Toode"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Toote pilt"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Toote variatsioon"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Kogus"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Soovitage ostukorvi lisamisel või hinnapakkumisel"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Eemaldage üks"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "Eemalda toode"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Müügitellimuse rida"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "Antud võimalus või valikute kombinatsioon pole saadaval."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Kokku:"

181
i18n/fa.po Normal file
View File

@ -0,0 +1,181 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Mohsen Mohammadi <iammohsen.123@gmail.com>, 2023
# Hamed Mohammadi <hamed@dehongi.com>, 2023
# Hamid Darabi, 2023
# Hanna Kheradroosta, 2023
# Mohammad Tahmasebi <hit.tah75@gmail.com>, 2023
# Martin Trigaux, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Martin Trigaux, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "افزودن"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "افزودن یکی"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "مقادیر مشخصه"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "لغو"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "محافظ کف برای صندلی"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "تایید کردن"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "آیا محصول قابل پیکربندی است؟"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "صندلی دفتر می‌تواند به کف صدمه بزند: مراقبت کنید."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "محصولات اختیاری"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "قیمت"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "محصول"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "تصویر محصول"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "گونه محصول"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "تعداد"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "هنگام «افزودن به سبد خرید» یا پیش فاکتور توصیه کنید"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "حذف یکی"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "سطر سفارش‌فروش"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "مجموع:"

185
i18n/fi.po Normal file
View File

@ -0,0 +1,185 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>, 2023
# Timo Koukkari <ti.ko@netikka.fi>, 2023
# Ossi Mantylahti <ossi.mantylahti@obs-solutions.fi>, 2023
# Tuomo Aura <tuomo.aura@web-veistamo.fi>, 2023
# Kari Lindgren <kari.lindgren@emsystems.fi>, 2023
# Tuomas Lyyra <tuomas.lyyra@legenda.fi>, 2023
# Martin Trigaux, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Martin Trigaux, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Lisää"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Lisää yksi"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Attribuuttien arvot"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Peruuta"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Tuolin lattian suoja"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Vahvista"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Onko tuote konfiguroitavissa?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Työtuolit voivat vahingoittaa lattiaasi: suojaa se."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Lisätuotteet"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Valinnaisia tuotteita suositellaan aina, kun asiakas osuu * Lisää "
"ostoskoriin * (ristiinmyyntistrategia, esimerkiksi tietokoneille: takuu, "
"ohjelmistot jne.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Hinta"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Tuote"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Tuotekuva"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Tuotevariaatio"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Määrä"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Suositellaan 'Lisää ostoskoriin' tai tarjouksen yhteydessä"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Poista yksi"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Myyntitilausrivi"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Summa:"

180
i18n/fr.po Normal file
View File

@ -0,0 +1,180 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Jolien De Paepe, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Jolien De Paepe, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Ajouter"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Ajouter"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Ajouter des produits optionnels"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Valeurs d'attribut"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Annuler"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Protection de sol pour chaise"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "Configurez votre produit"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Confirmer"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "Saisissez une valeur personnalisée"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Ce produit est-il configurable ?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Les chaises de bureau peuvent endommager votre sol : protégez-le."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Produits optionnels"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Les produits optionnels sont suggérés quand le client clique sur *Ajouter au"
" Panier* (stratégie de vente croisée, par ex. pour des ordinateurs : "
"garantie, software, etc.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Prix"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produit"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Image du produit"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Variante de produit"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Quantité"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "À recommander lors de l'ajout au panier ou d'un devis"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Supprimer"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "Supprimer le produit"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Ligne de commande"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "Cette option ou cette combinaison d'options n'est pas disponible"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Total :"

183
i18n/he.po Normal file
View File

@ -0,0 +1,183 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Martin Trigaux, 2023
# שהאב חוסיין <shhab89@gmail.com>, 2023
# Lilach Gilliam <lilach.gilliam@gmail.com>, 2023
# Ofir Blum <ofir.blum@gmail.com>, 2023
# ZVI BLONDER <ZVIBLONDER@gmail.com>, 2023
# Yihya Hugirat <hugirat@gmail.com>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Yihya Hugirat <hugirat@gmail.com>, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "הוסף"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "הוסף אחד"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "ערכי תכונות"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "בטל"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "מדבקות לרגלי כסא"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "אשר"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "האם ניתן להגדיר את המוצר?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "כסאות משרדיים יכולים להזיק לרצפה שלך: הגן עליה."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "מוצרים אופציונליים"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"מוצרים אופציונליים מוצעים בכל פעם שהלקוח לוחץ על *הוסף לעגלה* (אסטרטגיית "
"קרוס-סל, למשל למחשבים: אחריות, תוכנה וכו ')."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "מחיר"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "מוצר"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "תמונת מוצר"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "וריאנט מוצר"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "כמות"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "המלץ בעת 'הוספת לעגלת הקניות' או הצעת מחיר"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "הסר אחד"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "שורת הזמנת לקוח"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "סה\"כ:"

170
i18n/hr.po Normal file
View File

@ -0,0 +1,170 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Karolina Tonković <karolina.tonkovic@storm.hr>, 2022
# Tina Milas, 2022
# Martin Trigaux, 2022
# Vladimir Vrgoč, 2022
# Bole <bole@dajmi5.com>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0beta\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-16 13:49+0000\n"
"PO-Revision-Date: 2022-09-22 05:55+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>, 2022\n"
"Language-Team: Croatian (https://app.transifex.com/odoo/teams/41243/hr/)\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Dodaj jedan"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add to cart"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Vrijednosti značajki"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Available Options:"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Back"
msgstr "Natrag"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure"
msgstr "Postavke"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Potvrdi"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Da li je proizvod konfigurabilan?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Option not available"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Mogući proizvodi"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products are suggested whenever the customer hits *Add to Cart* (cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr "Opcionalni proizvodi su predloženi kad god kupac klikne \"Dodaj u košaricu\" (strategija križne prodaje, npr. za računala: jamstvo, programi itd.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Cijena"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Proizvod"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Slika proizvoda"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Varijanta proizvoda"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Količina"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Ukloni jedan"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Stavka prodajnog naloga"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "custom"
msgstr ""

185
i18n/hu.po Normal file
View File

@ -0,0 +1,185 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# krnkris, 2023
# Szabolcs Rádi, 2023
# Ákos Nagy <akos.nagy@oregional.hu>, 2023
# Gergő Kertész <gergo.kertesz@maxflow.hu>, 2023
# Martin Trigaux, 2023
# gezza <geza.nagy@oregional.hu>, 2023
# Tamás Németh <ntomasz81@gmail.com>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Tamás Németh <ntomasz81@gmail.com>, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Hozzáadás"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Hozzáadás"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Tulajdonság értékek"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Töröl"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Padlóvédő szék alá"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Megerősítés"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "A termék konfigurálható?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Az irodai székek árthatnak a padlónak: védje meg."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Választható termékek"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"A választható termékek felkínálásra kerülnek amikor a vásárló leüti a "
"*Kosárhoz adás* gombot (kereszt-értékesítés stratégia, pl. számítógépekhez: "
"garancia, szoftver, stb.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Ár"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Termék"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Termék képe"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Termékváltozat"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Mennyiség"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Ajánlás a „Kosárba helyezés” vagy ajánlatadáshoz"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Eltávolítás"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Vevői megrendelés sor"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Összesen:"

180
i18n/id.po Normal file
View File

@ -0,0 +1,180 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Abe Manyo, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Abe Manyo, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Tambahkan"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Tambahkan satu"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Tambahkan produk-produk opsional"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Nilai-nilai Atribut"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Batal"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Perlindungan lantai kursi"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "Konfigurasikan produk Anda"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Konfirmasi"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "Masukkan value yang dikustomisasi"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Apakah produk dapat dikonfigurasi?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Kursi kantor dapat melukai lantai Anda: lindungi mereka."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Pilihan produk"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Produk Opsional akan disarankan kapanpun pelanggan memencet *Tambahkan ke "
"Keranjang* (strategi cross-sell, contoh untuk komputer: garansi, software, "
"dsb.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Harga"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produk"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Gambar Produk"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Varian Produk"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Kuantitas"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Sarankan saat 'Tambahkan ke Keranjang' atau quotation"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Hapus satu"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "Hapus produk"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Baris Pesanan Penjualan"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "Opsi ini atau kombinasi opsi-opsi tidak tersedia"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Total:"

180
i18n/it.po Normal file
View File

@ -0,0 +1,180 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Marianna Ciofani, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Marianna Ciofani, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Aggiungi"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Aggiungi unità"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Aggiungi prodotti opzionali"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Valori attributo"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Annulla"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Proteggi pavimento per sedia"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "Configura il tuo prodotto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Conferma"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "Inserisci un valore personalizzato"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Il prodotto è configurabile?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Le sedie da ufficio possono danneggiare il pavimento: proteggilo."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Prodotti opzionali"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"I prodotti opzionali vengono suggeriti ogni volta che il cliente fa clic su "
"*Aggiungi al carrello* (strategia di vendita incrociata, es. per i computer:"
" garanzia, software ecc...)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Prezzo"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Prodotto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Immagine prodotto"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Variante prodotto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Quantità"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Raccomanda quando si aggiunge al carrello o si fa un'offerta"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Rimuovi unità"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "Elimina prodotto"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Riga ordine di vendita"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "Questa opzione o combinazione di opzioni non è disponibile"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Totale:"

179
i18n/ja.po Normal file
View File

@ -0,0 +1,179 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Junko Augias, 2023
# Ryoko Tsuda <ryoko@quartile.co>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Ryoko Tsuda <ryoko@quartile.co>, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "追加"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "一つを追加"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "オプションプロダクトを追加"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "属性値"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "キャンセル"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "チェアマット"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "プロダクトを設定"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "確認"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "カスタマイズ値を入力"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "プロダクトは設定可能か?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "オフィスチェアは床を傷つける可能性があります:保護しましょう!"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "オプションプロダクト"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"オプションプロダクトは、*カートに入れる*(クロスセル戦略、たとえばコンピュータの場合:保証、ソフトウェアなど)をクリックするたびに表示されます。"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "価格"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "プロダクト"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "プロダクト画像"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "プロダクトバリアント"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "数量"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "「カートに入れる」、又は見積の際に推奨"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "一つを削除"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "プロダクトを削除"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "販売オーダ明細"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "このオプションまたはオプションの組合わせを利用できません"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "合計:"

180
i18n/ko.po Normal file
View File

@ -0,0 +1,180 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Daye Jeong, 2023
# Sarah Park, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Sarah Park, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "추가"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "하나 추가하기"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "선택 품목 추가"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "속성 값"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "취소"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "바닥 보호용 의자 덮개"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "품목 구성"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "승인"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "사용자 지정 값 입력"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "품목이 구성한가요?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "사무용 의자는 바닥을 손상시킬 수 있습니다 : 그것으로 보호합니다."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "추가 선택 품목"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"고객이 '장바구니에 담기*를 클릭할 때마다 추가 선택 품목을 추천합니다. (교차 판매 전략: 예를 들어 컴퓨터를 판매할 경우, 고객에게 "
"보증 서비스나 관련 소프트웨어 등을 함께 추천합니다)"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "가격"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "품목"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "품목 이미지"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "품목 세부선택"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "수량"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "'장바구니에 담기' 또는 견적 시 추천됩니다"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "하나만 제거하기"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "품목 삭제"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "판매 주문 내역"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "해당 선택 항목이나 선택 조합은 사용할 수 없습니다."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "합계 :"

162
i18n/lb.po Normal file
View File

@ -0,0 +1,162 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server saas~12.5\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-16 13:49+0000\n"
"PO-Revision-Date: 2019-08-26 09:14+0000\n"
"Language-Team: Luxembourgish (https://www.transifex.com/odoo/teams/41243/lb/)\n"
"Language: lb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add to cart"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Available Options:"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Back"
msgstr ""
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr ""
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Option not available"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products are suggested whenever the customer hits *Add to Cart* (cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr ""
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr ""
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "custom"
msgstr ""

180
i18n/lt.po Normal file
View File

@ -0,0 +1,180 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Linas Versada <linaskrisiukenas@gmail.com>, 2023
# Martin Trigaux, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Martin Trigaux, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Pridėti"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Pridėti vieną"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Atributų reikšmės"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Atšaukti"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Kėdės grindų apsauga"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Patvirtinti"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr ""
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Biuro kėdės gali pažeisti jūsų grindis, apsaugokite jas."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Papildomi produktai"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Papildomi produktai siūlomi, kai vartotojas paspaudžia \"Pridėti į "
"krepšelį\" (kryžminio pardavimo strategija, pvz., kompiuteriams tai gali "
"būti garantija, programinė įranga ir t.t.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Kaina"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produktas"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Produkto paveikslėlis"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Produkto variantas"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Kiekis"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Pašalinti vieną"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Pardavimo užsakymo eilutė"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Viso:"

181
i18n/lv.po Normal file
View File

@ -0,0 +1,181 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# ievaputnina <ievai.putninai@gmail.com>, 2023
# Will Sensors, 2023
# Anzelika Adejanova, 2023
# Arnis Putniņš <arnis@allegro.lv>, 2023
# Armīns Jeltajevs <armins.jeltajevs@gmail.com>, 2023
# Martin Trigaux, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Martin Trigaux, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Pievienot"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Atribūtu vērtības"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Atcelt"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Krēslu grīdas aizsardzība"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Apstiprināt"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr ""
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Papildus produkti"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Cena"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produkts"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Produkta attēls"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Produkta variants"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Daudzums"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Pārdošanas pasūtījuma rinda"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Summa:"

169
i18n/mn.po Normal file
View File

@ -0,0 +1,169 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Minj P <pminj322@gmail.com>, 2022
# Martin Trigaux, 2022
# Baskhuu Lodoikhuu <baskhuujacara@gmail.com>, 2022
# Batmunkh Ganbat <batmunkh.g@bumanit.mn>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0beta\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-16 13:49+0000\n"
"PO-Revision-Date: 2022-09-22 05:55+0000\n"
"Last-Translator: Batmunkh Ganbat <batmunkh.g@bumanit.mn>, 2022\n"
"Language-Team: Mongolian (https://app.transifex.com/odoo/teams/41243/mn/)\n"
"Language: mn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Нэгийг нэмэх"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add to cart"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Шинж чанарын утгууд"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Available Options:"
msgstr "Боломжит сонголтууд:"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Back"
msgstr "Буцах"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure"
msgstr "Тохируулга"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Батлах"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Энэ барааны мэдээллийг өөрчлөх боломжтой юу?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Оффисын сандал таны шалыг гэмтээж болно: сэргийлнэ үү."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Option not available"
msgstr "Одоогоор сонголт алга"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Нэмж санал болгох бараа"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products are suggested whenever the customer hits *Add to Cart* (cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr "Захиалагч барааг \"Сагсанд нэмэх\" үед нэмэлт бараануудыг санал болгоно (энэ бол дагалдуулж зарах стратеги юм, ж.нь. компьютерийн хувьд: баталгаат хугацаа, програм хангамж, г.м)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Үнэ"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Бараа"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Барааны зураг"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Барааны хувилбар"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Тоо хэмжээ"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Нэгийг хасах"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Борлуулалтын захиалгын мөр"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "custom"
msgstr ""

169
i18n/nb.po Normal file
View File

@ -0,0 +1,169 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Fredrik Ahlsen <fredrik@gdx.no>, 2022
# Jorunn D. Newth, 2022
# Martin Trigaux, 2022
# Marius Stedjan <marius@stedjan.com>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0beta\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-16 13:49+0000\n"
"PO-Revision-Date: 2022-09-22 05:55+0000\n"
"Last-Translator: Marius Stedjan <marius@stedjan.com>, 2022\n"
"Language-Team: Norwegian Bokmål (https://app.transifex.com/odoo/teams/41243/nb/)\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Legg til én"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add to cart"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Attributtverdier"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Available Options:"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Back"
msgstr "Tilbake"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure"
msgstr "Konfigurer"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Bekreft"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr ""
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Option not available"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Foreslåtte produkter"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products are suggested whenever the customer hits *Add to Cart* (cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr "Foreslåtte produkter blir vist når kunden legger til produkter i handlevognen (cross-sell-strategi. F.eks kan det for datamaskiner være ekstra garantitid, programvare, osv.)"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Pris"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produkt"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Produktbilde"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Produktvariant"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Antall"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Fjern én"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Salgsordrelinje"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "custom"
msgstr ""

180
i18n/nl.po Normal file
View File

@ -0,0 +1,180 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Jolien De Paepe, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Jolien De Paepe, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Toevoegen"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Voeg één toe"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Voeg optionele producten toe"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Kenmerkwaardes"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Annuleren"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Stoel vloerbescherming"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "Configureer je product"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Bevestigen"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "Geef een gepersonaliseerde waarde op"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Is het product configureerbaar?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Kantoorstoelen kunnen je vloer beschadigingen: bescherm je vloer."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Optionele producten"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Optionele producten worden voorgesteld wanneer de klant op de knop "
"\"Toevoegen aan winkelmandje\" klikt (cross-selling strategie, bijv. "
"garantie, software, etc.)"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Prijs"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Product"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Productafbeelding"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Productvariant"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Hoeveelheid"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Aanbevelen bij 'Toevoegen aan winkelmandje' of offerte"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Verwijder één"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "Verwijder product"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Verkooporderregel"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "Deze optie of combinatie van opties is niet beschikbaar"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Totaal:"

179
i18n/pl.po Normal file
View File

@ -0,0 +1,179 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Wil Odoo, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Dodaj"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Dodaj jeden"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Wartość atrybutu"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Anuluj"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Ochrona podłogi na krzesło"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Potwierdź"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Czy produkt jest konfigurowalny?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Krzesła biurowe mogą uszkodzić podłogę: chroń ją."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Produkty opcjonalne"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Produkty opcjonalne są sugerowane za każdym razem, gdy klient kliknie *Dodaj"
" do koszyka* (strategia sprzedaży krzyżowej, np. dla komputerów: gwarancja, "
"oprogramowanie itp.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Kwota"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produkt"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Obraz produktu"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Wariant produktu"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Ilość"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Rekomendowane podczas dodawania do koszyka lub oferty"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Usuń jeden"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Pozycja zamówienia sprzedaży"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Suma:"

176
i18n/pt.po Normal file
View File

@ -0,0 +1,176 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Wil Odoo, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Adicionar"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Adicionar um"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Valores de Atributo"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Confirmar"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr ""
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Produtos Opcionais"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Preço"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Imagem do Artigo"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Variante de Artigo"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Quantidade"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Remover um"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Linhas da Ordem de Vendas"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Total:"

180
i18n/pt_BR.po Normal file
View File

@ -0,0 +1,180 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Maitê Dietze, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Maitê Dietze, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Adicionar"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Adicionar um"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Adicionar produtos opcionais"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Valores de atributo"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Proteção de piso para cadeiras"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "Configure seus produtos"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Confirmar"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "Insira um valor personalizado"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Este é um produto configurável?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Cadeiras de escritório podem prejudicar seu piso: proteja-o."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Produtos opcionais"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Produtos opcionais são sugeridos sempre que o cliente clica em *Adicionar ao"
" Carrinho* (estratégia de venda cruzada, por exemplo, para computadores: "
"garantia, software etc.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Preço"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Imagem do produto"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Variante do produto"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Quantidade"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Recomendar ao adicionar produto ao carrinho ou cotação"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Remover um"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "Remover produto"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Linha do pedido de venda"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "Esta opção ou combinação de opções não está disponível"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Total:"

170
i18n/ro.po Normal file
View File

@ -0,0 +1,170 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Cozmin Candea <office@terrabit.ro>, 2022
# Martin Trigaux, 2022
# Fekete Mihai <mihai.fekete@forestandbiomass.ro>, 2022
# Hongu Cosmin <cosmin513@gmail.com>, 2022
# Dorin Hongu <dhongu@gmail.com>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0beta\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-16 13:49+0000\n"
"PO-Revision-Date: 2022-09-22 05:55+0000\n"
"Last-Translator: Dorin Hongu <dhongu@gmail.com>, 2022\n"
"Language-Team: Romanian (https://app.transifex.com/odoo/teams/41243/ro/)\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Adaugă"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add to cart"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Valori atribute"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Available Options:"
msgstr "Opțiuni disponibile:"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Back"
msgstr "Înapoi"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Protecție podea scaun"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure"
msgstr "Configurare"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Confirmă"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Produsul poate fi configurat?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Option not available"
msgstr "Opțiune indisponibilă"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Produse opționale"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products are suggested whenever the customer hits *Add to Cart* (cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produs"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Imagine produs"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Variantă produs"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr ""
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Eliminați unu"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Linie comandă vânzare"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "custom"
msgstr ""

182
i18n/ru.po Normal file
View File

@ -0,0 +1,182 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Ivan Kropotkin <yelizariev@itpp.dev>, 2023
# Сергей Шебанин <sergey@shebanin.ru>, 2023
# Martin Trigaux, 2023
# Wil Odoo, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Добавить"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Добавить один"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "Добавьте дополнительные продукты"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Значения атрибута"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Отменить"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Защита пола"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "Настройте свой продукт"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Подтвердить"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "Введите настроенное значение"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Можно ли настроить продукт?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Офисные кресла могут повредить ваш пол: защитите его."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Дополнительные продукты"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Дополнительные продукты предлагаются всякий раз, когда клиент попадает "
"*Добавить в корзину * (кросс продажи стратегии, например, для компьютеров: "
"гарантия, программное обеспечение и т.д.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Цена"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Товар"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Изображение товара"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Вариант продукта"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Количество"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Рекомендуем при \"добавлении в корзину\" или предложении"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Удалить один"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "Удалить товар"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Позиция заказа на продажу"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "Эта опция или комбинация опций недоступна"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Итого:"

View File

@ -0,0 +1,172 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 21:55+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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr ""
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr ""
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr ""
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr ""
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr ""

178
i18n/sk.po Normal file
View File

@ -0,0 +1,178 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Wil Odoo, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Pridať"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Pridaj jeden"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Hodnoty atribútu"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Zrušené"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Ochrana podlahy pre stoličky"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Potvrdiť"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Je produkt konfigurovateľný?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Kancelárske stoličky môžu poškodiť vašu podlahu: chráňte ju."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Voliteľné produkty"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Doplnkové produkty sú ponúkané akonáhle zákazník zvolí *Vlož do košíka* "
"(stratégia cross-sell, napr. pre počítače: záruka, software apod.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Cena"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produkt"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Obrázok produktu"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Varianta produktu"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Množstvo"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Odstráň jednu"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Položka objednávok"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Celkom:"

184
i18n/sl.po Normal file
View File

@ -0,0 +1,184 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Jasmina Macur <jasmina@hbs.si>, 2023
# Tadej Lupšina <tadej@hbs.si>, 2023
# Tomaž Jug <tomaz@editor.si>, 2023
# Martin Trigaux, 2023
# matjaz k <matjaz@mentis.si>, 2023
# Vida Potočnik <vida.potocnik@mentis.si>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Vida Potočnik <vida.potocnik@mentis.si>, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Dodaj"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Dodajte ga"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Vrednosti lastnosti"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Prekliči"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Zaščita tal za stole"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Potrdi"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Ali je izdelek nastavljiv?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Pisarniški stoli lahko poškodujejo tla: zaščitite jih."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Opcijski izdelki"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Opcijski izdelki so predlagani vsakič, ko kupec pritisne *Dodaj v košarico* "
"(strategija navzkrižne prodaje, npr. za računalnike: garancija, programska "
"oprema itd.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Cena"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Izdelek"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Slika izdelka"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Različica izdelka"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Količina"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Priporoči pri 'dodajanju v košarico' ali ponudbi"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Odstrani ga"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Postavka naročila"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Skupaj:"

181
i18n/sr.po Normal file
View File

@ -0,0 +1,181 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Martin Trigaux, 2023
# Dragan Vukosavljevic <dragan.vukosavljevic@gmail.com>, 2023
# Milan Bojovic <mbojovic@outlook.com>, 2023
# コフスタジオ, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Dodaj"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Dodaj jedan"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Vrednost atributa"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Otkaži"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Chair floor protection"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Potvrdi"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Da li se proizvod može konfigurisati?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Office chairs can harm your floor: protect it."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Opcioni proizvodi"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Cena"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Proizvod"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Slika proizvoda"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Varijanta proizvoda"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Količina"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Preporuči tokom 'Dodavanje u korpu' ili ponudu"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Ukloni jedan"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Linija porudžbenice"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Ukupno:"

185
i18n/sv.po Normal file
View File

@ -0,0 +1,185 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Chrille Hedberg <hedberg.chrille@gmail.com>, 2023
# Kristoffer Grundström <lovaren@gmail.com>, 2023
# Kim Asplund <kim.asplund@gmail.com>, 2023
# Simon S, 2023
# Anders Wallenquist <anders.wallenquist@vertel.se>, 2023
# Lasse L, 2023
# Martin Trigaux, 2023
# Haojun Zou <apollo_zhj@msn.com>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Haojun Zou <apollo_zhj@msn.com>, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Lägg till"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Lägg till en"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Attributvärden"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Avbryt"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Golvskydd för stol"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Bekräfta"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Är produkten konfigurerbar?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Kontorsstolar kan skada ditt golv. Se till att skydda det!"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Alternativa produkter"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Alternativa produkter föreslås när kunden klickar *Lägg i varukorgen* "
"(strategi för korsförsäljning, t.ex. garanti, mjukvara, etc)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Pris"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Produkt"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Produkt Bild"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Produktvariant"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Antal"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Ta bort en"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Orderrad"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Total:"

179
i18n/th.po Normal file
View File

@ -0,0 +1,179 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Rasareeyar Lappiam, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "เพิ่ม"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "เพิ่มหนึ่งรายการ"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "เพิ่มผลิตภัณฑ์เสริม"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "ค่าคุณลักษณะ"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "ยกเลิก"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "เก้าอี้ป้องกันพื้น"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "กำหนดค่าผลิตภัณฑ์ของคุณ"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "ยืนยัน"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "ป้อนค่าที่กำหนดเอง"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "สินค้าสามารถกำหนดค่าได้หรือไม่?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "เก้าอี้สำนักงานสามารถทำร้ายพื้นของคุณได้: ปกป้องมัน"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "สินค้าตัวเลือก"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"แนะนำสินค้าเสริมทุกครั้งที่ลูกค้ากด *เพิ่มในตะกร้า* (กลยุทธ์การขายต่อเนื่อง "
"เช่น สำหรับคอมพิวเตอร์: การรับประกันซอฟต์แวร์และอื่น ๆ )"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "ราคา"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "สินค้า"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "รูปภาพสินค้า"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "ตัวแปรสินค้า"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "ปริมาณ"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "แนะนำเมื่อ 'เพิ่มในตะกร้า' หรือใบเสนอราคา"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "นำออกหนึ่งรายการ"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "ลบผลิตภัณฑ์"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "รายการคำสั่งขาย"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "ไม่มีตัวเลือกนี้หรือตัวเลือกรวมกัน"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "ทั้งหมด:"

189
i18n/tr.po Normal file
View File

@ -0,0 +1,189 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Ugur Yilmaz <ugurlu2001@hotmail.com>, 2023
# Murat Durmuş <muratd@projetgrup.com>, 2023
# Tugay Hatıl <tugayh@projetgrup.com>, 2023
# Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2023
# Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2023
# Ramiz Deniz Öner <deniz@denizoner.com>, 2023
# Murat Kaplan <muratk@projetgrup.com>, 2023
# Ediz Duman <neps1192@gmail.com>, 2023
# Martin Trigaux, 2023
# abc Def <hdogan1974@gmail.com>, 2023
# Levent Karakaş <levent@mektup.at>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Levent Karakaş <levent@mektup.at>, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Ekle"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Ekle"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Nitelik Değerleri"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "İptal"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Sandalye zemini koruması"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Onayla"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Ürün yapılandırılabilir mi?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Ofis koltukları zemine zarar verebilir: koruyun."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Tamamlayıcı Ürünler"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Tamamlayıcı Ürünler, müşteriye her \"Sepete Ekle\" butonuna tıkladığında "
"önerilir (Çapraz satış stratejisi, örn. Bilgisayarlar için: garanti, "
"yazılım, vb.)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Fiyat"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Ürün"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Ürün Görseli"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Ürün Varyantı"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Miktar"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "'Sepete Eklerken' veya teklif verirken tavsiye edin"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Birini kaldır"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Satış Sipariş Satırı"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Toplam:"

179
i18n/uk.po Normal file
View File

@ -0,0 +1,179 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Wil Odoo, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Додати"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Додати один"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Значення атрибутів"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Скасувати"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Захист підлоги від стільця"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Підтвердити"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Чи є цей товар налаштовуваним?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Офісні стільці можуть зашкодити вашій підлозі: захистіть її."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Додаткові товари"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Необов'язкові товари пропонуються кожного разу, коли клієнт натискає "
"\"Додати в кошик\" (стратегія крос-продажів, наприклад, для комп'ютерів: "
"гарантія, програмне забезпечення тощо)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Ціна"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Товар"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Зображення товару"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Варіант товару"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Кількість"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Рекомендувати під час \"Додавання в кошик\" або пропозиції"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Вилучити один"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Рядок замовлення"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Разом:"

179
i18n/vi.po Normal file
View File

@ -0,0 +1,179 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Wil Odoo, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "Thêm"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "Thêm một "
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "Giá trị thuộc tính"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "Hủy"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "Bọc chân ghế"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "Xác nhận"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "Sản phẩm có thể cấu hình được không?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "Ghế văn phòng có thể làm hỏng sàn. Hãy bảo vệ sàn nhà."
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "Sản phẩm tuỳ chọn"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr ""
"Sản phẩm tùy chọn được đề xuất bất cứ khi nào khách hàng nhấn *Thêm vào giỏ "
"hàng* (chiến lược bán chéo, ví dụ: đối với máy tính: bảo hành, phần "
"mềm,...)."
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "Giá"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "Sản phẩm"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "Hình ảnh sản phẩm"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "Biến thể sản phẩm"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "Số lượng"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "Đề xuất khi 'Thêm vào giỏ hàng' hoặc báo giá"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "Xóa một"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr ""
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "Dòng đơn bán hàng"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr ""
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "Tổng:"

177
i18n/zh_CN.po Normal file
View File

@ -0,0 +1,177 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2023\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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "添加"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "添加一行"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "添加可选产品"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "属性值"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "取消"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "椅子地板保护"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "配置您的产品"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "确认"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "输入自定义值"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "产品是否可配置?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "办公椅会伤害您的地板:保护它。"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "可选产品"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr "每当客户点击 * 加入购物车 *,就会出现建议的可选产品(交叉销售策略,例如,就电脑而言:保修、配套软件等)。"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "价格"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "产品"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "产品图像"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "产品变体"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "数量"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "在“添加到购物车”或报价时推荐"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "移除一行"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "删除产品"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "销售订单行"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "此选项或选项组合不可用"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "总计:"

177
i18n/zh_TW.po Normal file
View File

@ -0,0 +1,177 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_product_configurator
#
# Translators:
# Wil Odoo, 2023
# Tony Ng, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-26 21:55+0000\n"
"PO-Revision-Date: 2023-10-26 23:09+0000\n"
"Last-Translator: Tony Ng, 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: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add"
msgstr "加入"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Add one"
msgstr "添加一行"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Add optional products"
msgstr "加入可選產品"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__product_template_attribute_value_ids
msgid "Attribute Values"
msgstr "屬性值"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Cancel"
msgstr "取消"
#. module: sale_product_configurator
#: model:product.template,name:sale_product_configurator.product_product_1_product_template
msgid "Chair floor protection"
msgstr "椅子地板保護"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.js:0
#, python-format
msgid "Configure your product"
msgstr "配置你的產品"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_configurator_dialog/product_configurator_dialog.xml:0
#, python-format
msgid "Confirm"
msgstr "確認"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_template_attribute_line/product_template_attribute_line.xml:0
#, python-format
msgid "Enter a customized value"
msgstr "輸入自訂值"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_sale_order_line__is_configurable_product
msgid "Is the product configurable?"
msgstr "產品是否可配置?"
#. module: sale_product_configurator
#: model:product.template,description_sale:sale_product_configurator.product_product_1_product_template
msgid "Office chairs can harm your floor: protect it."
msgstr "辦公椅可能會損害你的地板。"
#. module: sale_product_configurator
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,field_description:sale_product_configurator.field_product_template__optional_product_ids
msgid "Optional Products"
msgstr "選配產品"
#. module: sale_product_configurator
#: model:ir.model.fields,help:sale_product_configurator.field_product_product__optional_product_ids
#: model:ir.model.fields,help:sale_product_configurator.field_product_template__optional_product_ids
msgid ""
"Optional Products are suggested whenever the customer hits *Add to Cart* "
"(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
msgstr "每當客戶點選 * 加入購物車 *,就會出現建議的選配產品(交叉銷售策略,例如,就電腦而言:保修、軟體等)。"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Price"
msgstr "價格"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#: model:ir.model,name:sale_product_configurator.model_product_template
#, python-format
msgid "Product"
msgstr "商品"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Product Image"
msgstr "產品圖片"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.sale_order_view_form
msgid "Product Variant"
msgstr "產品款式"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Quantity"
msgstr "數量"
#. module: sale_product_configurator
#: model_terms:ir.ui.view,arch_db:sale_product_configurator.product_template_view_form
msgid "Recommend when 'Adding to Cart' or quotation"
msgstr "在“添加到購物車”或報價時推薦"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove one"
msgstr "刪除一行"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "Remove product"
msgstr "刪除產品"
#. module: sale_product_configurator
#: model:ir.model,name:sale_product_configurator.model_sale_order_line
msgid "Sales Order Line"
msgstr "銷售訂單明細"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product/product.xml:0
#, python-format
msgid "This option or combination of options is not available"
msgstr "此選項或選項組合不可用"
#. module: sale_product_configurator
#. odoo-javascript
#: code:addons/sale_product_configurator/static/src/js/product_list/product_list.xml:0
#, python-format
msgid "Total:"
msgstr "總計:"

4
models/__init__.py Normal file
View File

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import product_template
from . import sale_order_line

View File

@ -0,0 +1,51 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class ProductTemplate(models.Model):
_inherit = 'product.template'
_check_company_auto = True
optional_product_ids = fields.Many2many(
comodel_name='product.template',
relation='product_optional_rel',
column1='src_id',
column2='dest_id',
string="Optional Products",
help="Optional Products are suggested "
"whenever the customer hits *Add to Cart* (cross-sell strategy, "
"e.g. for computers: warranty, software, etc.).",
check_company=True)
@api.depends('attribute_line_ids.value_ids.is_custom', 'attribute_line_ids.attribute_id.create_variant')
def _compute_has_configurable_attributes(self):
""" A product is considered configurable if:
- It has dynamic attributes
- It has any attribute line with at least 2 attribute values configured
- It has at least one custom attribute value """
for product in self:
product.has_configurable_attributes = (
any(attribute.create_variant == 'dynamic' for attribute in product.attribute_line_ids.attribute_id)
or any(len(attribute_line_id.value_ids) >= 2 for attribute_line_id in product.attribute_line_ids)
or any(attribute_value.is_custom for attribute_value in product.attribute_line_ids.value_ids)
)
def get_single_product_variant(self):
""" Method used by the product configurator to check if the product is configurable or not.
We need to open the product configurator if the product:
- is configurable (see has_configurable_attributes)
- has optional products """
res = super().get_single_product_variant()
if res.get('product_id', False):
has_optional_products = False
for optional_product in self.product_variant_id.optional_product_ids:
if optional_product.has_dynamic_attributes() or optional_product._get_possible_variants(
self.product_variant_id.product_template_attribute_value_ids
):
has_optional_products = True
break
res.update({'has_optional_products': has_optional_products})
return res

16
models/sale_order_line.py Normal file
View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class SaleOrderLine(models.Model):
_inherit = 'sale.order.line'
is_configurable_product = fields.Boolean(
string="Is the product configurable?",
related='product_template_id.has_configurable_attributes',
depends=['product_id'])
product_template_attribute_value_ids = fields.Many2many(
related='product_id.product_template_attribute_value_ids',
depends=['product_id'])

View File

@ -0,0 +1,21 @@
/** @odoo-module **/
import { Component } from "@odoo/owl";
import { formatCurrency } from "@web/core/currency";
export class BadgeExtraPrice extends Component {
static template = "product.badge_extra_price";
static props = {
price: Number,
currencyId: Number,
};
/**
* Return the price, in the format of the given currency.
*
* @return {String} - The price, in the format of the given currency.
*/
getFormattedPrice() {
return formatCurrency( Math.abs(this.props.price), this.props.currencyId);
}
}

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates xml:space="preserve">
<t t-name="product.badge_extra_price">
<span class="badge ms-1 ps-1 text-bg-info rounded-pill">
<span t-out="this.props.price > 0 ? '+' : '-'" class="me-1"/>
<i t-out="getFormattedPrice()"/>
</span>
</t>
</templates>

View File

@ -0,0 +1,67 @@
/** @odoo-module */
import { Component } from "@odoo/owl";
import { formatCurrency } from "@web/core/currency";
import {
ProductTemplateAttributeLine as PTAL
} from "../product_template_attribute_line/product_template_attribute_line";
export class Product extends Component {
static components = { PTAL };
static template = "sale_product_configurator.product";
static props = {
id: { type: [Number, {value: false}], optional: true },
product_tmpl_id: Number,
display_name: String,
description_sale: [Boolean, String], // backend sends 'false' when there is no description
price: Number,
quantity: Number,
attribute_lines: Object,
optional: Boolean,
imageURL: { type: String, optional: true },
archived_combinations: Array,
exclusions: Object,
parent_exclusions: Object,
parent_product_tmpl_ids: { type: Array, element: Number, optional: true },
};
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* Increase the quantity of the product in the state.
*/
increaseQuantity() {
this.env.setQuantity(this.props.product_tmpl_id, this.props.quantity+1);
}
/**
* Set the quantity of the product in the state.
*
* @param {Event} event
*/
setQuantity(event) {
this.env.setQuantity(this.props.product_tmpl_id, parseFloat(event.target.value));
}
/**
* Decrease the quantity of the product in the state.
*/
decreaseQuantity() {
this.env.setQuantity(this.props.product_tmpl_id, this.props.quantity-1);
}
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
/**
* Return the price, in the format of the given currency.
*
* @return {String} - The price, in the format of the given currency.
*/
getFormattedPrice() {
return formatCurrency(this.props.price, this.env.currencyId);
}
}

View File

@ -0,0 +1,36 @@
.table.o_sale_product_configurator_table {
& tr:first-child > td {
padding-top: 0 !important;
}
&.o_sale_product_configurator_table_optional > :not(caption) > *:last-child > * {
border-bottom: 0;
}
}
.o_sale_product_configurator_img {
width: 120px;
max-height: 240px;
}
.o_sale_product_configurator_qty {
width: 160px;
input {
max-width: 4rem;
//removing input field=number arrows as their size might
//change depending on browser default styling and shift input's position
&::-webkit-outer-spin-button,
&::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
&[type=number] {
-moz-appearance: textfield;
}
}
}
.o_sale_product_configurator_price {
width: 160px;
}

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates xml:space="preserve">
<t t-name="sale_product_configurator.product">
<td class="o_sale_product_configurator_img py-3 px-0">
<img
t-if="this.props.id"
class="w-100"
t-att-src="'/web/image/product.product/'+this.props.id+'/image_128'"
alt="Product Image"/>
<img
t-else=""
class="w-100"
t-att-src="'/web/image/product.template/'+this.props.product_tmpl_id+'/image_128'"
alt="Product Image"/>
</td>
<td class="p-3" t-att-colspan="this.props.optional ? 2:false">
<div class="mb-4 text-break" name="o_sale_product_configurator_name">
<h5 t-out="this.props.display_name"/>
<div
t-if="this.props.description_sale"
t-out="this.props.description_sale"
class="text-muted small"/>
<div t-if="!this.env.isPossibleCombination(this.props)" class="alert alert-warning mt-3">
<span>This option or combination of options is not available</span>
</div>
</div>
<t t-foreach="this.props.attribute_lines" t-as="ptal" t-key="ptal.id">
<PTAL t-props="ptal" productTmplId="this.props.product_tmpl_id"/>
</t>
</td>
<td class="o_sale_product_configurator_qty py-3 px-0 text-end">
<div t-if="!this.props.optional" class="input-group justify-content-end">
<button
class="btn btn-secondary d-none d-md-inline-block"
aria-label="Remove one"
t-on-click="decreaseQuantity">
<i class="fa fa-minus"/>
</button>
<input
class="form-control quantity border-bottom border-top text-center"
name="product_quantity"
type="number"
t-att-value="this.props.quantity"
t-on-change="setQuantity"/>
<button
class="btn btn-secondary d-none d-md-inline-block"
aria-label="Add one"
t-on-click="increaseQuantity">
<i class="fa fa-plus"/>
</button>
</div>
<div t-else="">
<h5 class="text-nowrap" t-out="getFormattedPrice()"/>
</div>
<a
class="d-block mt-2"
role="button"
t-if="!this.props.optional &amp;&amp; this.env.mainProductTmplId !== this.props.product_tmpl_id"
t-on-click="() => this.env.removeProduct(this.props.product_tmpl_id)">
Remove product
</a>
</td>
<td class="o_sale_product_configurator_price py-3 px-0 text-end" name="price">
<div t-if="!this.props.optional" class="input-group justify-content-end">
<h5 class="text-nowrap" t-out="getFormattedPrice()"/>
</div>
<div t-else="">
<button
t-if="this.props.optional"
class="btn btn-secondary"
t-att-class="{'disabled': !this.env.isPossibleCombination(this.props)}"
t-on-click="() => this.env.addProduct(this.props.product_tmpl_id)">
<i class="fa fa-plus"/> Add
</button>
</div>
</td>
</t>
</templates>

View File

@ -0,0 +1,436 @@
/** @odoo-module **/
import { _t } from "@web/core/l10n/translation";
import { Component, onWillStart, useState, useSubEnv } from "@odoo/owl";
import { Dialog } from '@web/core/dialog/dialog';
import { ProductList } from "../product_list/product_list";
import { useService } from "@web/core/utils/hooks";
export class ProductConfiguratorDialog extends Component {
static components = { Dialog, ProductList};
static template = 'sale_product_configurator.dialog';
static props = {
productTemplateId: Number,
ptavIds: { type: Array, element: Number },
customAttributeValues: {
type: Array,
element: Object,
shape: {
ptavId: Number,
value: String,
}
},
quantity: Number,
productUOMId: { type: Number, optional: true },
companyId: { type: Number, optional: true },
pricelistId: { type: Number, optional: true },
currencyId: Number,
soDate: String,
edit: { type: Boolean, optional: true },
save: Function,
discard: Function,
close: Function, // This is the close from the env of the Dialog Component
};
static defaultProps = {
edit: false,
}
setup() {
this.title = _t("Configure your product");
this.rpc = useService("rpc");
this.state = useState({
products: [],
optionalProducts: [],
});
useSubEnv({
mainProductTmplId: this.props.productTemplateId,
currencyId: this.props.currencyId,
addProduct: this._addProduct.bind(this),
removeProduct: this._removeProduct.bind(this),
setQuantity: this._setQuantity.bind(this),
updateProductTemplateSelectedPTAV: this._updateProductTemplateSelectedPTAV.bind(this),
updatePTAVCustomValue: this._updatePTAVCustomValue.bind(this),
isPossibleCombination: this._isPossibleCombination,
});
onWillStart(async () => {
const { products, optional_products } = await this._loadData(this.props.edit);
this.state.products = products;
this.state.optionalProducts = optional_products;
for (const customValue of this.props.customAttributeValues) {
this._updatePTAVCustomValue(
this.env.mainProductTmplId,
customValue.ptavId,
customValue.value
);
}
this._checkExclusions(this.state.products[0]);
});
}
//--------------------------------------------------------------------------
// Data Exchanges
//--------------------------------------------------------------------------
async _loadData(onlyMainProduct) {
return this.rpc('/sale_product_configurator/get_values', {
product_template_id: this.props.productTemplateId,
quantity: this.props.quantity,
currency_id: this.props.currencyId,
so_date: this.props.soDate,
product_uom_id: this.props.productUOMId,
company_id: this.props.companyId,
pricelist_id: this.props.pricelistId,
ptav_ids: this.props.ptavIds,
only_main_product: onlyMainProduct,
});
}
async _createProduct(product) {
return this.rpc('/sale_product_configurator/create_product', {
product_template_id: product.product_tmpl_id,
combination: this._getCombination(product),
});
}
async _updateCombination(product, quantity) {
return this.rpc('/sale_product_configurator/update_combination', {
product_template_id: product.product_tmpl_id,
combination: this._getCombination(product),
currency_id: this.props.currencyId,
so_date: this.props.soDate,
quantity: quantity,
product_uom_id: this.props.productUOMId,
company_id: this.props.companyId,
pricelist_id: this.props.pricelistId,
});
}
async _getOptionalProducts(product) {
return this.rpc('/sale_product_configurator/get_optional_products', {
product_template_id: product.product_tmpl_id,
combination: this._getCombination(product),
parent_combination: this._getParentsCombination(product),
currency_id: this.props.currencyId,
so_date: this.props.soDate,
company_id: this.props.companyId,
pricelist_id: this.props.pricelistId,
});
}
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* Add the product to the list of products and fetch his optional products.
*
* @param {Number} productTmplId - The product template id, as a `product.template` id.
*/
async _addProduct(productTmplId) {
const index = this.state.optionalProducts.findIndex(
p => p.product_tmpl_id === productTmplId
);
if (index >= 0) {
this.state.products.push(...this.state.optionalProducts.splice(index, 1));
// Fetch optional product from the server with the parent combination.
const product = this._findProduct(productTmplId);
let newOptionalProducts = await this._getOptionalProducts(product);
for(const newOptionalProductDict of newOptionalProducts) {
// If the optional product is already in the list, add the id of the parent product
// template in his list of `parent_product_tmpl_ids` instead of adding a second time
// the product.
const newProduct = this._findProduct(newOptionalProductDict.product_tmpl_id);
if (newProduct) {
newOptionalProducts = newOptionalProducts.filter(
(p) => p.product_tmpl_id != newOptionalProductDict.product_tmpl_id
);
newProduct.parent_product_tmpl_ids.push(productTmplId);
}
}
if (newOptionalProducts) this.state.optionalProducts.push(...newOptionalProducts);
}
}
/**
* Remove the product and his optional products from the list of products.
*
* @param {Number} productTmplId - The product template id, as a `product.template` id.
*/
_removeProduct(productTmplId) {
const index = this.state.products.findIndex(p => p.product_tmpl_id === productTmplId);
if (index >= 0) {
this.state.optionalProducts.push(...this.state.products.splice(index, 1));
for (const childProduct of this._getChildProducts(productTmplId)) {
// Optional products might have multiple parents so we don't want to remove them if
// any of their parents are still on the list of products.
childProduct.parent_product_tmpl_ids = childProduct.parent_product_tmpl_ids.filter(
id => id !== productTmplId
);
if (!childProduct.parent_product_tmpl_ids.length) {
this._removeProduct(childProduct.product_tmpl_id);
this.state.optionalProducts.splice(
this.state.optionalProducts.findIndex(
p => p.product_tmpl_id === childProduct.product_tmpl_id
), 1
);
}
}
}
}
/**
* Set the quantity of the product to a given value.
*
* If the value is less than or equal to zero, the product is removed from the product list
* instead, unless it is the main product, in which case the changes are ignored.
*
* @param {Number} productTmplId - The product template id, as a `product.template` id.
* @param {Number} quantity - The new quantity of the product.
*/
async _setQuantity(productTmplId, quantity) {
if (quantity <= 0) {
if (productTmplId === this.env.mainProductTmplId) {
const product = this._findProduct(productTmplId);
const { price } = await this._updateCombination(product, 1);
product.quantity = 1;
product.price = parseFloat(price);
return;
};
this._removeProduct(productTmplId);
} else {
const product = this._findProduct(productTmplId);
const { price } = await this._updateCombination(product, quantity);
product.quantity = quantity;
product.price = parseFloat(price);
}
}
/**
* Change the value of `selected_attribute_value_ids` on the given PTAL in the product.
*
* @param {Number} productTmplId - The product template id, as a `product.template` id.
* @param {Number} ptalId - The PTAL id, as a `product.template.attribute.line` id.
* @param {Number} ptavId - The PTAV id, as a `product.template.attribute.value` id.
* @param {Boolean} multiIdsAllowed - Whether multiple `product.template.attribute.value` can be selected.
*/
async _updateProductTemplateSelectedPTAV(productTmplId, ptalId, ptavId, multiIdsAllowed) {
const product = this._findProduct(productTmplId);
let selectedIds = product.attribute_lines.find(ptal => ptal.id === ptalId).selected_attribute_value_ids;
if (multiIdsAllowed) {
const ptavID = parseInt(ptavId);
if (!selectedIds.includes(ptavID)){
selectedIds.push(ptavID);
} else {
selectedIds = selectedIds.filter(ptav => ptav !== ptavID);
}
} else {
selectedIds = [parseInt(ptavId)];
}
product.attribute_lines.find(ptal => ptal.id === ptalId).selected_attribute_value_ids = selectedIds;
this._checkExclusions(product);
if (this._isPossibleCombination(product)) {
const updatedValues = await this._updateCombination(product, product.quantity);
Object.assign(product, updatedValues);
// When a combination should exist but was deleted from the database, it should not be
// selectable and considered as an exclusion.
if (!product.id && product.attribute_lines.every(ptal => ptal.create_variant === "always")) {
const combination = this._getCombination(product);
product.archived_combinations = product.archived_combinations.concat([combination]);
this._checkExclusions(product);
}
}
}
/**
* Set the custom value for a given custom PTAV.
*
* @param {Number} productTmplId - The product template id, as a `product.template` id.
* @param {Number} ptavId - The PTAV id, as a `product.template.attribute.value` id.
* @param {String} customValue - The custom value.
*/
_updatePTAVCustomValue(productTmplId, ptavId, customValue) {
const product = this._findProduct(productTmplId);
product.attribute_lines.find(
ptal => ptal.selected_attribute_value_ids.includes(ptavId)
).customValue = customValue;
}
/**
* Check the exclusions of a given product and his child.
*
* @param {Object} product - The product for which to check the exclusions.
* @param {undefined|Array} checked - The array of products checked for exclusions, used to
* avoid infinite check exclusions for recursive optional products.
*/
_checkExclusions(product, checked=undefined) {
const combination = this._getCombination(product);
const exclusions = product.exclusions;
const parentExclusions = product.parent_exclusions;
const archivedCombinations = product.archived_combinations;
const parentCombination = this._getParentsCombination(product);
const childProducts = this._getChildProducts(product.product_tmpl_id)
const ptavList = product.attribute_lines.flat().flatMap(ptal => ptal.attribute_values)
ptavList.map(ptav => ptav.excluded = false); // Reset all the values
if (exclusions) {
for(const ptavId of combination) {
for(const excludedPtavId of exclusions[ptavId]) {
ptavList.find(ptav => ptav.id === excludedPtavId).excluded = true;
}
}
}
if (parentCombination) {
for(const ptavId of parentCombination) {
for(const excludedPtavId of (parentExclusions[ptavId]||[])) {
ptavList.find(ptav => ptav.id === excludedPtavId).excluded = true;
}
}
}
if (archivedCombinations) {
for(const excludedCombination of archivedCombinations) {
const ptavCommon = excludedCombination.filter((ptav) => combination.includes(ptav));
if (ptavCommon.length === combination.length) {
for(const excludedPtavId of ptavCommon) {
ptavList.find(ptav => ptav.id === excludedPtavId).excluded = true;
}
} else if (ptavCommon.length === (combination.length - 1)) {
// In this case we only need to disable the remaining ptav
const disabledPtavId = excludedCombination.find(
(ptav) => !combination.includes(ptav)
);
const excludedPtav = ptavList.find(ptav => ptav.id === disabledPtavId)
if (excludedPtav) {
excludedPtav.excluded = true;
}
}
}
}
const checkedProducts = checked || [];
for(const optionalProductTmpl of childProducts) {
// if the product is not checked for exclusions
if (!checkedProducts.includes(optionalProductTmpl)) {
checkedProducts.push(optionalProductTmpl); // remember that this product is checked
this._checkExclusions(optionalProductTmpl, checkedProducts);
}
}
}
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
/**
* Return the product given his template id.
*
* @param {Number} productTmplId - The product template id, as a `product.template` id.
* @return {Object} - The product.
*/
_findProduct(productTmplId) {
// The product might be in either of the two lists `products` or `optional_products`.
return this.state.products.find(p => p.product_tmpl_id === productTmplId) ||
this.state.optionalProducts.find(p => p.product_tmpl_id === productTmplId);
}
/**
* Return the list of dependents products for a given product.
*
* @param {Number} productTmplId - The product template id for which to find his children, as a
* `product.template` id.
* @return {Array} - The list of dependents products.
*/
_getChildProducts(productTmplId) {
return [
...this.state.products.filter(p => p.parent_product_tmpl_ids?.includes(productTmplId)),
...this.state.optionalProducts.filter(p => p.parent_product_tmpl_ids?.includes(productTmplId))
]
}
/**
* Return the selected PTAV of the product, as a list of `product.template.attribute.value` id.
*
* @param {Object} product - The product for which to find the combination.
* @return {Array} - The combination of the product.
*/
_getCombination(product) {
return product.attribute_lines.flatMap(ptal => ptal.selected_attribute_value_ids);
}
/**
* Return the selected PTAV of all the product parents, as a list of
* `product.template.attribute.value` id.
*
* @param {Object} product - The product for which to find the combination.
* @return {Array} - The combination of the product.
*/
_getParentsCombination(product) {
let parentsCombination = [];
for(const parentProductTmplId of product.parent_product_tmpl_ids || []) {
parentsCombination.push(this._getCombination(this._findProduct(parentProductTmplId)));
}
return parentsCombination.flat();
}
/**
* Check if a product has a valid combination.
*
* @param {Object} product - The product for which to check the combination.
* @return {Boolean} - Whether the combination is valid or not.
*/
_isPossibleCombination(product) {
return product.attribute_lines.every(ptal => !ptal.attribute_values.find(
ptav => ptal.selected_attribute_value_ids.includes(ptav.id)
)?.excluded);
}
/**
* Check if all the products selected have a valid combination.
*
* @return {Boolean} - Whether all the products selected have a valid combination or not.
*/
isPossibleConfiguration() {
return [...this.state.products].every(
p => this._isPossibleCombination(p)
);
}
/**
* Confirm the current combination(s).
*
* @return {undefined}
*/
async onConfirm() {
if (!this.isPossibleConfiguration()) return;
// Create the products with dynamic attributes
for (const product of this.state.products) {
if (
!product.id &&
product.attribute_lines.some(ptal => ptal.create_variant === "dynamic")
) {
const productId = await this._createProduct(product);
product.id = parseInt(productId);
}
}
await this.props.save(
this.state.products.find(
p => p.product_tmpl_id === this.env.mainProductTmplId
),
this.state.products.filter(
p => p.product_tmpl_id !== this.env.mainProductTmplId
),
);
this.props.close();
}
/**
* Discard the modal.
*/
onDiscard() {
if (!this.props.edit) {
this.props.discard(); // clear the line
}
this.props.close();
}
}

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates xml:space="preserve">
<t t-name="sale_product_configurator.dialog">
<Dialog size="size" title="title" contentClass="this.state.optionalProducts.length ? 'h-75' : ''">
<ProductList t-if="this.state.products.length" products="this.state.products"/>
<ProductList
t-if="this.state.optionalProducts.length"
products="this.state.optionalProducts"
areProductsOptional="true"/>
<t t-set-slot="footer">
<button
class="btn btn-primary"
t-on-click="onConfirm"
t-att-disabled="!isPossibleConfiguration()">
Confirm
</button>
<button class="btn btn-secondary" t-on-click="onDiscard">
Cancel
</button>
</t>
</Dialog>
</t>
</templates>

View File

@ -0,0 +1,31 @@
/** @odoo-module */
import { Component } from "@odoo/owl";
import { formatCurrency } from "@web/core/currency";
import { Product } from "../product/product";
export class ProductList extends Component {
static components = { Product };
static template = "saleProductConfigurator.productList";
static props = {
products: Array,
areProductsOptional: { type: Boolean, optional: true },
};
static defaultProps = {
areProductsOptional: false,
};
/**
* Return the total of the product in the list, in the currency of the `sale.order`.
*
* @return {String} - The sum of all items in the list, in the currency of the `sale.order`.
*/
getFormattedTotal() {
return formatCurrency(
this.props.products.reduce(
(totalPrice, product) => totalPrice + product.price * product.quantity, 0
),
this.env.currencyId,
)
}
}

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates xml:space="preserve">
<t t-name="saleProductConfigurator.productList">
<h4 class="mt-4 mb-3" t-if="this.props.areProductsOptional">Add optional products</h4>
<table class="o_sale_product_configurator_table table table-sm position-relative mb-0" t-att-class="{'o_sale_product_configurator_table_optional': this.props.areProductsOptional}">
<thead t-if="!this.props.areProductsOptional">
<tr>
<th class="px-0 border-bottom-0" colspan="2">Product</th>
<th class="px-0 text-end border-bottom-0">Quantity</th>
<th class="px-0 text-end border-bottom-0">Price</th>
</tr>
</thead>
<tbody class="border-top-0">
<tr t-foreach="this.props.products" t-as="product" t-key="product.product_tmpl_id">
<Product t-props="product" optional="this.props.areProductsOptional"/>
</tr>
<tr t-if="!this.props.areProductsOptional">
<td colspan="4" class="border-bottom-0 text-end">
<h4>Total: <span t-out="getFormattedTotal()"/></h4>
</td>
</tr>
</tbody>
</table>
</t>
</templates>

View File

@ -0,0 +1,147 @@
/** @odoo-module */
import { Component } from "@odoo/owl";
import { formatCurrency } from "@web/core/currency";
import { BadgeExtraPrice } from "../badge_extra_price/badge_extra_price";
export class ProductTemplateAttributeLine extends Component {
static components = { BadgeExtraPrice };
static template = "saleProductConfigurator.ptal";
static props = {
productTmplId: Number,
id: Number,
attribute: {
type: Object,
shape: {
id: Number,
name: String,
display_type: {
type: String,
validate: type => ["color", "multi", "pills", "radio", "select"].includes(type),
},
},
},
attribute_values: {
type: Array,
element: {
type: Object,
shape: {
id: Number,
name: String,
html_color: [Boolean, String], // backend sends 'false' when there is no color
image: [Boolean, String], // backend sends 'false' when there is no image set
is_custom: Boolean,
price_extra: Number,
excluded: { type: Boolean, optional: true },
},
},
},
selected_attribute_value_ids: { type: Array, element: Number },
create_variant: {
type: String,
validate: type => ["always", "dynamic", "no_variant"].includes(type),
},
customValue: {type: [{value: false}, String], optional: true},
};
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* Update the selected PTAV in the state.
*
* @param {Event} event
*/
updateSelectedPTAV(event) {
this.env.updateProductTemplateSelectedPTAV(
this.props.productTmplId, this.props.id, event.target.value, this.props.attribute.display_type == 'multi'
);
}
/**
* Update in the state the custom value of the selected PTAV.
*
* @param {Event} event
*/
updateCustomValue(event) {
this.env.updatePTAVCustomValue(
this.props.productTmplId, this.props.selected_attribute_value_ids[0], event.target.value
);
}
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
/**
* Return template name to use by checking the display type in the props.
*
* Each attribute line can have one of this five display types:
* - 'Color' : Display each attribute as a circle filled with said color.
* - 'Pills' : Display each attribute as a rectangle-shaped element.
* - 'Radio' : Display each attribute as a radio element.
* - 'Select' : Display each attribute in a selection tag.
* - 'Multi' : Display each attribute in a multi-checkbox tag.
*
* @return {String} - The template name to use.
*/
getPTAVTemplate() {
switch(this.props.attribute.display_type) {
case 'color':
return 'saleProductConfigurator.ptav-color';
case 'multi':
return 'saleProductConfigurator.ptav-multi';
case 'pills':
return 'saleProductConfigurator.ptav-pills';
case 'radio':
return 'saleProductConfigurator.ptav-radio';
case 'select':
return 'saleProductConfigurator.ptav-select';
}
}
/**
* Return the name of the PTAV
*
* In the selection HTML tag, it is impossible to show the component `BadgeExtraPrice`. Append
* the extra price to the name to ensure that the extra price will be shown.
* Note: used in `saleProductConfigurator.ptav-select`.
*
* @param {Object} ptav - The attribute, as a `product.template.attribute.value` summary dict.
* @return {String} - The name of the PTAV.
*/
getPTAVSelectName(ptav) {
if (ptav.price_extra) {
const sign = ptav.price_extra > 0 ? '+' : '-';
const price = formatCurrency(
Math.abs(ptav.price_extra), this.env.currencyId
);
return ptav.name +" ("+ sign + " " + price + ")";
} else {
return ptav.name;
}
}
/**
* Check if the selected ptav is custom or not.
*
* @return {Boolean} - Whether the selected ptav is custom or not.
*/
isSelectedPTAVCustom() {
return this.props.attribute_values.find(
ptav => this.props.selected_attribute_value_ids.includes(ptav.id)
)?.is_custom;
}
/**
* Check if the line has a custom ptav or not.
*
* @return {Boolean} - Whether the line has a custom ptav or not.
*/
hasPTAVCustom() {
return this.props.attribute_values.some(
ptav => ptav.is_custom
);
}
}

View File

@ -0,0 +1,65 @@
.o_sale_product_configurator_ptav_color {
border: 5px solid $border-color;
transition: $input-transition;
@include o-field-pointer();
&:before {
content: "";
display: block;
@include o-position-absolute(-3px, -3px, -3px, -3px);
border: 4px solid $o-view-background-color;
border-radius: 50%;
box-shadow: inset 0 0 3px rgba(black, 0.3);
}
input {
margin: 8px;
height: 13px;
width: 13px;
opacity: 0;
}
&.active {
border: 5px solid map-get($theme-colors, 'primary');
}
&.custom_value {
background-image: linear-gradient(to bottom right, #FF0000, #FFF200, #1E9600);
}
&.transparent {
background-image: url(/web/static/img/transparent.png);
}
&.css_not_available {
opacity: 1;
&:after {
content: "";
@include o-position-absolute(-5px, -5px, -5px, -5px);
border: 2px solid map-get($theme-colors, 'danger');
border-radius: 50%;
background: str-replace(url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='39' height='39'><line y2='0' x2='39' y1='39' x1='0' style='stroke:#{map-get($theme-colors, 'danger')};stroke-width:2'/><line y2='1' x2='40' y1='40' x1='1' style='stroke:rgb(255,255,255);stroke-width:1'/></svg>"), "#", "%23") ;
background-position: center;
background-repeat: no-repeat;
}
}
}
.o_sale_product_configurator_ptav_pills.active label {
$-btn-secondary-design: map-get($o-btns-bs-override, "secondary");
background-color: map-get($-btn-secondary-design, active-background);
border-color: map-get($-btn-secondary-design, active-border);
color: map-get($-btn-secondary-design, active-color);
}
.css_not_available {
opacity: 0.6;
}
option.css_not_available {
opacity: 1;
color: #ccc;
}

View File

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates xml:space="preserve">
<!-- Attributes line template -->
<t t-name="saleProductConfigurator.ptal">
<div name="ptal" t-attf-class="#{this.props.attribute_values.length === 1 &amp;&amp; hasPTAVCustom() ? 'd-flex' : ''}">
<!-- If the attribute line contains only one attribute value, we don't show the attribute
value template or the attribute line title unless the single attribute value is custom,
whereas in this case, only the title of the attribute line and the custom value
template are rendered. -->
<div class="d-flex flex-column flex-lg-row gap-2 mb-2">
<label
t-if="this.props.attribute_values.length === 1 &amp;&amp; isSelectedPTAVCustom() || this.props.attribute_values.length &gt; 1"
t-out="this.props.attribute.name"
t-attf-class="fw-bold text-break #{this.props.attribute_values.length === 1 &amp;&amp; hasPTAVCustom() ? '' : 'w-lg-25'}"/>
<t t-if="this.props.attribute_values.length > 1" t-call="{{getPTAVTemplate()}}"/>
</div>
<input
class="o_input w-75 mb-4 ms-lg-auto"
type="text"
placeholder="Enter a customized value"
t-if="hasPTAVCustom &amp;&amp; isSelectedPTAVCustom()"
t-att-value="this.props.customValue"
t-on-change="updateCustomValue"
/>
</div>
</t>
<!-- Attributes value templates -->
<t t-name="saleProductConfigurator.ptav-select">
<select class="o_input w-50 flex-grow-1"
t-on-change="updateSelectedPTAV"
t-att-name="'ptal-' + this.props.id">
<option
t-foreach="this.props.attribute_values"
t-as="ptav"
t-key="ptav.id"
t-att-value="ptav.id"
t-att-selected="this.props.selected_attribute_value_ids.includes(ptav.id)"
t-out="getPTAVSelectName(ptav)"
t-att-class="{ 'css_not_available': ptav.excluded }"/>
</select>
</t>
<t t-name="saleProductConfigurator.ptav-radio">
<ul class="list-unstyled flex-grow-1 m-0">
<li t-foreach="this.props.attribute_values" t-as="ptav" t-key="ptav.id"
class="mb-2">
<div class="form-check">
<label
class="form-check-label d-inline-flex align-items-center"
t-att-class="{ 'css_not_available': ptav.excluded }"
t-att-for="ptav.id">
<span t-out="ptav.name"/>
<BadgeExtraPrice
t-if="ptav.price_extra"
price="ptav.price_extra"
currencyId="this.env.currencyId"/>
</label>
<input
type="radio"
class="form-check-input"
t-att-id="ptav.id"
t-att-value="ptav.id"
t-att-checked="this.props.selected_attribute_value_ids.includes(ptav.id)"
t-att-name="'ptal-' + this.props.id"
t-on-change="updateSelectedPTAV"/>
</div>
</li>
</ul>
</t>
<t t-name="saleProductConfigurator.ptav-pills">
<ul class="list-inline list-unstyled flex-grow-1 mb-0">
<li t-foreach="this.props.attribute_values" t-as="ptav" t-key="ptav.id"
t-att-class="{'active': this.props.selected_attribute_value_ids.includes(ptav.id)}"
class="o_sale_product_configurator_ptav_pills list-inline-item">
<label
class="btn btn-outline-secondary"
t-att-class="{ 'css_not_available': ptav.excluded }"
t-att-for="ptav.id">
<span t-out="ptav.name"/>
<BadgeExtraPrice
t-if="ptav.price_extra"
price="ptav.price_extra"
currencyId="this.env.currencyId"/>
</label>
<input
class="btn-check"
type="radio"
t-att-id="ptav.id"
t-att-value="ptav.id"
t-att-name="'ptal-' + this.props.id"
t-att-checked="this.props.selected_attribute_value_ids.includes(ptav.id)"
t-on-change="updateSelectedPTAV"/>
</li>
</ul>
</t>
<t t-name="saleProductConfigurator.ptav-color">
<ul class="list-inline flex-grow-1 mb-0">
<li t-foreach="this.props.attribute_values" t-as="ptav" t-key="ptav.id"
class="list-inline-item me-2">
<t t-set="img_style" t-value="ptav.image ? 'background:url(/web/image/product.template.attribute.value/'+ptav.id+'/image); background-size:cover;' : ''"/>
<t t-set="color_style" t-value="ptav.is_custom ? '' : 'background-color:' + ptav.html_color"/>
<label
class="position-relative d-inline-block rounded-pill text-center"
t-att-title="ptav.name"
t-attf-style="#{img_style or color_style}"
t-att-class="{'o_sale_product_configurator_ptav_color': true,
'active': this.props.selected_attribute_value_ids.includes(ptav.id),
'custom_value': ptav.is_custom,
'transparent': !ptav.is_custom and !ptav.html_color,
'css_not_available': ptav.excluded }">
<input
type="radio"
t-att-id="ptav.id"
t-att-value="ptav.id"
t-att-name="'ptal-' + this.props.id"
t-att-checked="this.props.selected_attribute_value_ids.includes(ptav.id)"
t-on-change="updateSelectedPTAV"/>
</label>
</li>
</ul>
</t>
<t t-name="saleProductConfigurator.ptav-multi">
<ul class="list-unstyled flex-grow-1 m-0">
<li t-foreach="this.props.attribute_values" t-as="ptav" t-key="ptav.id"
class="mb-2">
<div class="form-check">
<input
type="checkbox"
class="form-check-input"
t-att-id="ptav.id"
t-att-value="ptav.id"
t-att-name="'ptal-' + this.props.id"
t-att-checked="this.props.selected_attribute_value_ids.includes(ptav.id)"
t-on-change="updateSelectedPTAV"/>
<label
class="form-check-label"
t-att-for="ptav.id">
<span t-out="ptav.name"/>
<BadgeExtraPrice
t-if="ptav.price_extra"
price="ptav.price_extra"
currencyId="this.env.currencyId"/>
</label>
</div>
</li>
</ul>
</t>
</templates>

View File

@ -0,0 +1,159 @@
/** @odoo-module */
import { SaleOrderLineProductField } from '@sale/js/sale_product_field';
import { serializeDateTime } from "@web/core/l10n/dates";
import { x2ManyCommands } from "@web/core/orm_service";
import { useService } from "@web/core/utils/hooks";
import { patch } from "@web/core/utils/patch";
import { ProductConfiguratorDialog } from "./product_configurator_dialog/product_configurator_dialog";
async function applyProduct(record, product) {
// handle custom values & no variants
const contextRecords = [];
for (const ptal of product.attribute_lines) {
const selectedCustomPTAV = ptal.attribute_values.find(
ptav => ptav.is_custom && ptal.selected_attribute_value_ids.includes(ptav.id)
);
if (selectedCustomPTAV) {
contextRecords.push({
default_custom_product_template_attribute_value_id: selectedCustomPTAV.id,
default_custom_value: ptal.customValue,
});
};
}
const proms = [];
proms.push(record.data.product_custom_attribute_value_ids.createAndReplace(contextRecords));
const noVariantPTAVIds = product.attribute_lines.filter(
ptal => ptal.create_variant === "no_variant" && ptal.attribute_values.length > 1
).flatMap(ptal => ptal.selected_attribute_value_ids);
await Promise.all(proms);
await record.update({
product_id: [product.id, product.display_name],
product_uom_qty: product.quantity,
product_no_variant_attribute_value_ids: [x2ManyCommands.set(noVariantPTAVIds)],
});
};
patch(SaleOrderLineProductField.prototype, {
setup() {
super.setup(...arguments);
this.dialog = useService("dialog");
this.orm = useService("orm");
},
async _onProductTemplateUpdate() {
super._onProductTemplateUpdate(...arguments);
const result = await this.orm.call(
'product.template',
'get_single_product_variant',
[this.props.record.data.product_template_id[0]],
{
context: this.context,
}
);
if(result && result.product_id) {
if (this.props.record.data.product_id != result.product_id.id) {
if (result.has_optional_products) {
this._openProductConfigurator();
} else {
await this.props.record.update({
product_id: [result.product_id, result.product_name],
});
this._onProductUpdate();
}
}
} else {
if (!result.mode || result.mode === 'configurator') {
this._openProductConfigurator();
} else {
// only triggered when sale_product_matrix is installed.
this._openGridConfigurator();
}
}
},
_editProductConfiguration() {
super._editProductConfiguration(...arguments);
if (this.props.record.data.is_configurable_product) {
this._openProductConfigurator(true);
}
},
get isConfigurableTemplate() {
return super.isConfigurableTemplate || this.props.record.data.is_configurable_product;
},
async _openProductConfigurator(edit=false) {
const saleOrderRecord = this.props.record.model.root;
let ptavIds = this.props.record.data.product_template_attribute_value_ids.records.map(
record => record.resId
);
let customAttributeValues = [];
if (edit) {
/**
* no_variant and custom attribute don't need to be given to the configurator for new
* products.
*/
ptavIds = ptavIds.concat(this.props.record.data.product_no_variant_attribute_value_ids.records.map(
record => record.resId
));
/**
* `product_custom_attribute_value_ids` records are not loaded in the view bc sub templates
* are not loaded in list views. Therefore, we fetch them from the server if the record is
* saved. Else we use the value stored on the line.
*/
customAttributeValues =
this.props.record.data.product_custom_attribute_value_ids.records[0]?.isNew ?
this.props.record.data.product_custom_attribute_value_ids.records.map(
record => record.data
) :
await this.orm.read(
'product.attribute.custom.value',
this.props.record.data.product_custom_attribute_value_ids.currentIds,
["custom_product_template_attribute_value_id", "custom_value"]
)
}
this.dialog.add(ProductConfiguratorDialog, {
productTemplateId: this.props.record.data.product_template_id[0],
ptavIds: ptavIds,
customAttributeValues: customAttributeValues.map(
data => {
return {
ptavId: data.custom_product_template_attribute_value_id[0],
value: data.custom_value,
}
}
),
quantity: this.props.record.data.product_uom_qty,
productUOMId: this.props.record.data.product_uom[0],
companyId: saleOrderRecord.data.company_id[0],
pricelistId: saleOrderRecord.data.pricelist_id[0],
currencyId: this.props.record.data.currency_id[0],
soDate: serializeDateTime(saleOrderRecord.data.date_order),
edit: edit,
save: async (mainProduct, optionalProducts) => {
await applyProduct(this.props.record, mainProduct);
this._onProductUpdate();
saleOrderRecord.data.order_line.leaveEditMode();
for (const optionalProduct of optionalProducts) {
const line = await saleOrderRecord.data.order_line.addNewRecord({
position: 'bottom',
mode: "readonly",
});
await applyProduct(line, optionalProduct);
}
},
discard: () => {
saleOrderRecord.data.order_line.delete(this.props.record);
},
});
},
});

1
tests/__init__.py Normal file
View File

@ -0,0 +1 @@
from . import test_product_configurator_data

129
tests/common.py Normal file
View File

@ -0,0 +1,129 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import base64
from odoo.tests.common import TransactionCase
from odoo.tools.misc import file_open
class TestProductConfiguratorCommon(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
# Setup attributes and attributes values
cls.product_attribute_1 = cls.env['product.attribute'].create({
'name': 'Legs',
'sequence': 10,
})
product_attribute_value_1 = cls.env['product.attribute.value'].create({
'name': 'Steel',
'attribute_id': cls.product_attribute_1.id,
'sequence': 1,
})
product_attribute_value_2 = cls.env['product.attribute.value'].create({
'name': 'Aluminium',
'attribute_id': cls.product_attribute_1.id,
'sequence': 2,
})
product_attribute_2 = cls.env['product.attribute'].create({
'name': 'Color',
'display_type': 'color',
'sequence': 20,
})
product_attribute_value_3 = cls.env['product.attribute.value'].create({
'name': 'White',
'attribute_id': product_attribute_2.id,
'html_color': '#FFFFFF',
'sequence': 1,
})
product_attribute_value_4 = cls.env['product.attribute.value'].create({
'name': 'Black',
'attribute_id': product_attribute_2.id,
'html_color': '#000000',
'sequence': 2,
})
# Create product template
cls.product_product_custo_desk = cls.env['product.template'].create({
'name': 'Customizable Desk (TEST)',
'standard_price': 500.0,
'list_price': 750.0,
})
# Generate variants
cls.env['product.template.attribute.line'].create([{
'product_tmpl_id': cls.product_product_custo_desk.id,
'attribute_id': cls.product_attribute_1.id,
'value_ids': [(4, product_attribute_value_1.id), (4, product_attribute_value_2.id)],
}, {
'product_tmpl_id': cls.product_product_custo_desk.id,
'attribute_id': product_attribute_2.id,
'value_ids': [(4, product_attribute_value_3.id), (4, product_attribute_value_4.id)],
}])
# Apply a price_extra for the attribute Aluminium
cls.product_product_custo_desk.attribute_line_ids[0].product_template_value_ids[1].price_extra = 50.40
# Add a Custom attribute
product_attribute_value_custom = cls.env['product.attribute.value'].create({
'name': 'Custom',
'attribute_id': cls.product_attribute_1.id,
'sequence': 3,
'is_custom': True
})
cls.product_product_custo_desk.attribute_line_ids[0].write({'value_ids': [(4, product_attribute_value_custom.id)]})
# Disable the aluminium + black product
cls.product_product_custo_desk.product_variant_ids[3].active = False
# Setup a first optional product
img_path = 'product/static/img/product_product_11-image.png'
img_content = base64.b64encode(file_open(img_path, "rb").read())
cls.product_product_conf_chair = cls.env['product.template'].create({
'name': 'Conference Chair (TEST)',
'image_1920': img_content,
'list_price': 16.50,
})
cls.env['product.template.attribute.line'].create({
'product_tmpl_id': cls.product_product_conf_chair.id,
'attribute_id': cls.product_attribute_1.id,
'value_ids': [(4, product_attribute_value_1.id), (4, product_attribute_value_2.id)],
})
cls.product_product_conf_chair.attribute_line_ids[0].product_template_value_ids[1].price_extra = 6.40
cls.product_product_custo_desk.optional_product_ids = [(4, cls.product_product_conf_chair.id)]
# Setup a second optional product
cls.product_product_conf_chair_floor_protect = cls.env['product.template'].create({
'name': 'Chair floor protection (TEST)',
'list_price': 12.0,
})
cls.product_product_conf_chair.optional_product_ids = [(4, cls.product_product_conf_chair_floor_protect.id)]
cls.custom_pricelist = cls.env['product.pricelist'].create({
'name': 'Custom pricelist (TEST)',
'sequence': 4,
'item_ids': [(0, 0, {
'base': 'list_price',
'applied_on': '1_product',
'product_tmpl_id': cls.product_product_custo_desk.id,
'price_discount': 20,
'min_quantity': 2,
'compute_price': 'formula'
})]
})
@classmethod
def _create_pricelist(cls, pricelists):
for pricelist in pricelists:
if not pricelist.item_ids.filtered(lambda i: i.product_tmpl_id == cls.product_product_custo_desk and i.price_discount == 20):
cls.env['product.pricelist.item'].create({
'base': 'list_price',
'applied_on': '1_product',
'pricelist_id': pricelist.id,
'product_tmpl_id': cls.product_product_custo_desk.id,
'price_discount': 20,
'min_quantity': 2,
'compute_price': 'formula',
})
pricelist.discount_policy = 'without_discount'

View File

@ -0,0 +1,418 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.fields import Command
from odoo.tests import tagged
from odoo.addons.base.tests.common import HttpCaseWithUserDemo
from odoo.addons.product.tests.common import ProductAttributesCommon, ProductVariantsCommon
from odoo.addons.sale.tests.common import SaleCommon
@tagged('post_install', '-at_install')
class TestProductConfiguratorData(HttpCaseWithUserDemo, ProductVariantsCommon, SaleCommon):
def request_get_values(self, product_template, ptav_ids=None):
base_url = product_template.get_base_url()
response = self.opener.post(
url=base_url + '/sale_product_configurator/get_values',
json={
'params': {
'product_template_id': product_template.id,
'quantity': 1.0,
'currency_id': 1,
'so_date': str(self.env.cr.now()),
'product_uom_id': None,
'company_id': None,
'pricelist_id': None,
'ptav_ids': ptav_ids,
'only_main_product': False,
},
}
)
return response.json()['result']
def create_product_template_with_2_attributes(self):
return self.env['product.template'].create({
'name': 'Shirt',
'categ_id': self.product_category.id,
'attribute_line_ids': [
Command.create({
'attribute_id': self.size_attribute.id,
'value_ids': [
Command.set([
self.size_attribute_l.id,
self.size_attribute_m.id,
]),
],
}),
Command.create({
'attribute_id': self.color_attribute.id,
'value_ids': [
Command.set([
self.color_attribute_red.id,
self.color_attribute_blue.id,
])
],
}),
],
})
def create_product_template_with_attribute_no_variant(self):
return self.env['product.template'].create({
'name': 'Chair',
'categ_id': self.product_category.id,
'attribute_line_ids': [
Command.create({
'attribute_id': self.no_variant_attribute.id,
'value_ids': [
Command.set([
self.no_variant_attribute_extra.id
]),
],
}),
Command.create({
'attribute_id': self.color_attribute.id,
'value_ids': [
Command.set([
self.color_attribute_red.id,
self.color_attribute_blue.id,
])
],
}),
],
})
def create_product_template_with_2_attribute_no_variant(self):
return self.env['product.template'].create({
'name': 'Chair',
'categ_id': self.product_category.id,
'attribute_line_ids': [
Command.create({
'attribute_id': self.no_variant_attribute.id,
'value_ids': [
Command.set([
self.no_variant_attribute_extra.id,
self.no_variant_attribute_second.id,
]),
],
}),
Command.create({
'attribute_id': self.color_attribute.id,
'value_ids': [
Command.set([
self.color_attribute_red.id,
self.color_attribute_blue.id,
])
],
}),
],
})
def test_dropped_value_isnt_shown(self):
self.assertEqual(len(self.product_template_sofa.product_variant_ids), 3)
# Use variants s.t. they are archived and not deleted when value is removed
self.empty_order.order_line = [
Command.create({
'product_id': product.id
})
for product in self.product_template_sofa.product_variant_ids
]
self.empty_order.action_confirm()
# Remove attribute value
self.product_template_sofa.attribute_line_ids.value_ids -= self.color_attribute_red
self.assertEqual(len(self.product_template_sofa.product_variant_ids.filtered('active')), 2)
self.authenticate('demo', 'demo')
result = self.request_get_values(self.product_template_sofa)
# Make sure the inactive ptav was removed from the loaded attributes
self.assertEqual(len(result['products'][0]['attribute_lines'][0]['attribute_values']), 2)
def test_dropped_attribute(self):
product_template = self.create_product_template_with_2_attributes()
self.assertEqual(len(product_template.product_variant_ids), 4)
# Use variants s.t. they are archived and not deleted when value is removed
self.empty_order.order_line = [
Command.create({
'product_id': product.id
})
for product in product_template.product_variant_ids
]
self.empty_order.action_confirm()
# Remove attribute
product_template.attribute_line_ids[0].unlink()
self.assertEqual(len(product_template.product_variant_ids), 2)
self.authenticate('demo', 'demo')
result = self.request_get_values(product_template)
# Make sure archived combinations with inactive ptav are not loaded as it's useless to
# exclude combinations that are not even available
self.assertFalse(result['products'][0]['archived_combinations'])
def test_dropped_attribute_value(self):
product_template = self.create_product_template_with_2_attributes()
self.assertEqual(len(product_template.product_variant_ids), 4)
# Use variants s.t. they are archived and not deleted when value is removed
self.empty_order.order_line = [
Command.create(
{
'product_id': product.id
}
)
for product in product_template.product_variant_ids
]
self.empty_order.action_confirm()
# Remove attribute value red
product_template.attribute_line_ids.filtered(
lambda ptal: ptal.attribute_id == self.color_attribute
).value_ids = [Command.unlink(self.color_attribute_red.id)]
self.assertEqual(len(product_template.product_variant_ids), 2)
archived_variants = product_template.with_context(
active_test=False
).product_variant_ids - product_template.product_variant_ids
self.assertEqual(len(archived_variants), 2)
archived_ptav = product_template.attribute_line_ids.product_template_value_ids.filtered(
lambda ptav: ptav.product_attribute_value_id == self.color_attribute_red
)
# Choose the variant (red, L)
variant_ptav_ids = [
archived_ptav.id,
product_template.attribute_line_ids.product_template_value_ids.filtered(
lambda ptav: ptav.product_attribute_value_id == self.size_attribute_l
).id,
]
self.authenticate('demo', 'demo')
result = self.request_get_values(product_template, variant_ptav_ids)
archived_ptav = archived_variants.product_template_attribute_value_ids.filtered(
lambda ptav: ptav.product_attribute_value_id == self.color_attribute_red
)
# When requested combination contains inactive ptav
# check that archived combinations are loaded
self.assertEqual(
len(result['products'][0]['archived_combinations']),
2
)
for combination in result['products'][0]['archived_combinations']:
self.assertIn(archived_ptav.id, combination)
# When requested combination contains inactive ptav check that exclusions contains it
self.assertIn(str(archived_ptav.id), result['products'][0]['exclusions'])
def test_excluded_inactive_ptav(self):
product_template = self.create_product_template_with_2_attributes()
self.assertEqual(len(product_template.product_variant_ids), 4)
ptav_with_exclusion = product_template.attribute_line_ids[0].product_template_value_ids[0]
ptav_excluded = product_template.attribute_line_ids[1].product_template_value_ids[0]
# Add an exclusion
ptav_with_exclusion.write({
'exclude_for': [
Command.create({
'product_tmpl_id': product_template.id,
'value_ids': [
Command.set([
ptav_excluded.id,
]),
],
}),
],
})
self.assertEqual(len(product_template.product_variant_ids), 3)
self.authenticate('demo', 'demo')
result = self.request_get_values(product_template)
# The PTAVs should be mutually excluded
self.assertEqual(result['products'][0]['exclusions']
[str(ptav_with_exclusion.id)], [ptav_excluded.id])
self.assertEqual(result['products'][0]['exclusions']
[str(ptav_excluded.id)], [ptav_with_exclusion.id])
ptav_with_exclusion.write({'ptav_active': False})
result = self.request_get_values(product_template)
# The inactive PTAV should not be in the product exclusions dict
self.assertFalse(str(ptav_with_exclusion.id) in result['products'][0]['exclusions'])
# The inactive PTAV should not be in the exclusions of the excluded PTAV
self.assertEqual(result['products'][0]['exclusions'][str(ptav_excluded.id)], [])
ptav_with_exclusion.write({'ptav_active': True})
ptav_excluded.write({'ptav_active': False})
result = self.request_get_values(product_template)
# The excluded inactive PTAV should not be in the exclusions of the first PTAV
self.assertEqual(result['products'][0]['exclusions'][str(ptav_with_exclusion.id)], [])
# The excluded inactive PTAV should not be in the product exclusions dict
self.assertFalse(str(ptav_excluded.id) in result['products'][0]['exclusions'])
ptav_with_exclusion.write({'ptav_active': False})
ptav_excluded.write({'ptav_active': False})
result = self.request_get_values(product_template)
# The inactive PTAVs should not be in the product exclusions dict
self.assertFalse(str(ptav_with_exclusion.id) in result['products'][0]['exclusions'])
self.assertFalse(str(ptav_excluded.id) in result['products'][0]['exclusions'])
def test_ptal_values_set_for_no_variant_atribute(self):
'''
Test that selected_attribute_value_id is set for attribute with only one variant and
`create_variant`: `no_variant`.
'''
product_template = self.create_product_template_with_attribute_no_variant()
self.authenticate('demo', 'demo')
ptav_red = product_template.attribute_line_ids.product_template_value_ids.filtered(
lambda ptav: ptav.product_attribute_value_id == self.color_attribute_red
)
result = self.request_get_values(product_template, [ptav_red.id])
self.assertTrue(result['products'][0]['attribute_lines'][1]['selected_attribute_value_ids'])
def test_dropped_attribute_value_custom_no_variant(self):
product_template = self.create_product_template_with_2_attribute_no_variant()
# Use variants s.t. they are archived and not deleted when value is removed
self.empty_order.order_line = [
Command.create({
'product_id': product.id,
'product_no_variant_attribute_value_ids': product.attribute_line_ids.product_template_value_ids.filtered(
lambda p: p.attribute_id.create_variant == 'no_variant'
),
})
for product in product_template.product_variant_ids]
self.empty_order.action_confirm()
# Remove attribute value extra
product_template.attribute_line_ids.filtered(
lambda ptal: ptal.attribute_id == self.no_variant_attribute
).value_ids = [Command.unlink(self.no_variant_attribute_extra.id)]
archived_ptav = product_template.attribute_line_ids.product_template_value_ids.filtered(
lambda ptav: ptav.product_attribute_value_id == self.no_variant_attribute_extra
)
self.assertFalse(archived_ptav.ptav_active)
self.assertEqual(
product_template.attribute_line_ids.filtered(
lambda ptal: ptal.attribute_id == self.no_variant_attribute
).product_template_value_ids[0],
archived_ptav,
)
# Choose the variant (red)
variant_ptav_ids = [
product_template.attribute_line_ids.product_template_value_ids.filtered(
lambda ptav: ptav.product_attribute_value_id == self.color_attribute_red
).id,
]
self.authenticate('demo', 'demo')
result = self.request_get_values(product_template, variant_ptav_ids)
selected_values = [
selected_value
for product in result['products'][0]['attribute_lines']
for selected_value in product['selected_attribute_value_ids']]
# Make sure that deleted value is not selected
self.assertNotIn(archived_ptav.id, selected_values)
@tagged('post_install', '-at_install')
class TestSaleProductVariants(ProductAttributesCommon, SaleCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.product_template_2lines_2attributes = cls.env['product.template'].create({
'name': '2 lines 2 attributes',
'uom_id': cls.uom_unit.id,
'uom_po_id': cls.uom_unit.id,
'categ_id': cls.product_category.id,
'attribute_line_ids': [
Command.create({
'attribute_id': cls.color_attribute.id,
'value_ids': [Command.set([
cls.color_attribute_red.id,
cls.color_attribute_blue.id,
])],
}),
Command.create({
'attribute_id': cls.size_attribute.id,
'value_ids': [Command.set([
cls.size_attribute_s.id,
cls.size_attribute_m.id,
])]
})
]
})
# Sell all variants
cls.empty_order.order_line = [
Command.create({
'product_id': product.id,
})
for product in cls.product_template_2lines_2attributes.product_variant_ids
]
def test_attribute_removal(self):
def _get_ptavs():
return self.product_template_2lines_2attributes.with_context(
active_test=False
).attribute_line_ids.product_template_value_ids
def _get_archived_variants():
return self.product_template_2lines_2attributes.with_context(
active_test=False
).product_variant_ids.filtered(lambda p: not p.active)
def _get_active_variants():
return self.product_template_2lines_2attributes.product_variant_ids
self.assertEqual(len(_get_ptavs()), 4)
self.product_template_2lines_2attributes.attribute_line_ids = [
Command.unlink(self.product_template_2lines_2attributes.attribute_line_ids.filtered(
lambda ptal: ptal.attribute_id.id == self.size_attribute.id
).id)
]
self.assertEqual(len(_get_ptavs()), 4)
# Use products s.t. they are archived and not deleted
self.empty_order.order_line = [
Command.create({
'product_id': product.id,
})
for product in self.product_template_2lines_2attributes.product_variant_ids
]
self.assertEqual(len(_get_archived_variants()), 4)
self.assertEqual(len(_get_active_variants()), 2)
self.product_template_2lines_2attributes.attribute_line_ids = [
Command.create({
'attribute_id': self.size_attribute.id,
'value_ids': [Command.set([
self.size_attribute_s.id,
])]
})
]
self.assertEqual(len(_get_ptavs()), 4)
self.assertEqual(len(_get_active_variants()), 2)
self.assertEqual(len(_get_archived_variants()), 4)
# When adding a single attribute line, the attribute will be added to all existing variants
# Instead of unarchiving existing archived variants with the same combination
# Leading to a state where the database holds two variants with the same combination
# We don't want this combination to be excluded from the product configurator as it is valid
# as long as there is one active variant with this configuration.
exclusions_data = self.product_template_2lines_2attributes._get_attribute_exclusions()
self.assertTrue(
all(
tuple(product.product_template_attribute_value_ids.ids) not in exclusions_data['archived_combinations']
for product in _get_active_variants()
)
)

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="product_template_view_form" model="ir.ui.view">
<field name="name">product.template.form.inherit.sale.product.configurator</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<group name="upsell" position="attributes">
<attribute name="invisible">0</attribute>
</group>
<group name="upsell" position="inside">
<field name="optional_product_ids"
widget="many2many_tags"
options="{'color_field': 'color'}"
domain="[('id', '!=', id), '|', ('company_id', '=', company_id), ('company_id', '=', False)]"
placeholder="Recommend when 'Adding to Cart' or quotation"/>
</group>
</field>
</record>
</odoo>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="sale_order_view_form" model="ir.ui.view">
<field name="name">sale.order.form.inherit.sale.product.configurator</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//tree/field[@name='product_template_id']" position="attributes">
<attribute name="column_invisible">0</attribute>
</xpath>
<xpath expr="//tree/field[@name='product_template_id']" position="after">
<field name="product_template_attribute_value_ids" column_invisible="1" />
<field name="product_custom_attribute_value_ids" column_invisible="1" >
<tree>
<field name="custom_product_template_attribute_value_id" />
<field name="custom_value" />
</tree>
</field>
<field name="product_no_variant_attribute_value_ids" column_invisible="1" />
<field name="is_configurable_product" column_invisible="1" />
</xpath>
<xpath expr="//tree/field[@name='product_id']" position="attributes">
<attribute name="optional">hide</attribute>
<attribute name="string">Product Variant</attribute>
</xpath>
</field>
</record>
</odoo>