Начальное наполнение
This commit is contained in:
parent
f7c4b0c9ec
commit
8d16ff38b4
4
__init__.py
Normal file
4
__init__.py
Normal file
@ -0,0 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import controllers
|
||||
from . import models
|
31
__manifest__.py
Normal file
31
__manifest__.py
Normal 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
3
controllers/__init__.py
Normal 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
347
controllers/main.py
Normal 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
25
data/sale_demo.xml
Normal 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
180
i18n/ar.po
Normal 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
185
i18n/bg.po
Normal 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
188
i18n/ca.po
Normal 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
181
i18n/cs.po
Normal 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
179
i18n/da.po
Normal 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
181
i18n/de.po
Normal 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
181
i18n/es.po
Normal 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
181
i18n/es_419.po
Normal 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
187
i18n/et.po
Normal 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
181
i18n/fa.po
Normal 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
185
i18n/fi.po
Normal 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
180
i18n/fr.po
Normal 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
183
i18n/he.po
Normal 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
170
i18n/hr.po
Normal 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
185
i18n/hu.po
Normal 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
180
i18n/id.po
Normal 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
180
i18n/it.po
Normal 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
179
i18n/ja.po
Normal 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
180
i18n/ko.po
Normal 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
162
i18n/lb.po
Normal 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
180
i18n/lt.po
Normal 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
181
i18n/lv.po
Normal 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
169
i18n/mn.po
Normal 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
169
i18n/nb.po
Normal 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
180
i18n/nl.po
Normal 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
179
i18n/pl.po
Normal 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
176
i18n/pt.po
Normal 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
180
i18n/pt_BR.po
Normal 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
170
i18n/ro.po
Normal 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
182
i18n/ru.po
Normal 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 "Итого:"
|
172
i18n/sale_product_configurator.pot
Normal file
172
i18n/sale_product_configurator.pot
Normal 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
178
i18n/sk.po
Normal 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
184
i18n/sl.po
Normal 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
181
i18n/sr.po
Normal 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
185
i18n/sv.po
Normal 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
179
i18n/th.po
Normal 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
189
i18n/tr.po
Normal 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
179
i18n/uk.po
Normal 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
179
i18n/vi.po
Normal 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
177
i18n/zh_CN.po
Normal 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
177
i18n/zh_TW.po
Normal 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
4
models/__init__.py
Normal file
@ -0,0 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import product_template
|
||||
from . import sale_order_line
|
51
models/product_template.py
Normal file
51
models/product_template.py
Normal 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
16
models/sale_order_line.py
Normal 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'])
|
21
static/src/js/badge_extra_price/badge_extra_price.js
Normal file
21
static/src/js/badge_extra_price/badge_extra_price.js
Normal 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);
|
||||
}
|
||||
}
|
9
static/src/js/badge_extra_price/badge_extra_price.xml
Normal file
9
static/src/js/badge_extra_price/badge_extra_price.xml
Normal 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>
|
67
static/src/js/product/product.js
Normal file
67
static/src/js/product/product.js
Normal 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);
|
||||
}
|
||||
}
|
36
static/src/js/product/product.scss
Normal file
36
static/src/js/product/product.scss
Normal 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;
|
||||
}
|
78
static/src/js/product/product.xml
Normal file
78
static/src/js/product/product.xml
Normal 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 && 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>
|
@ -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();
|
||||
}
|
||||
}
|
@ -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>
|
31
static/src/js/product_list/product_list.js
Normal file
31
static/src/js/product_list/product_list.js
Normal 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,
|
||||
)
|
||||
}
|
||||
}
|
25
static/src/js/product_list/product_list.xml
Normal file
25
static/src/js/product_list/product_list.xml
Normal 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>
|
@ -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
|
||||
);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
@ -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 && 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 && isSelectedPTAVCustom() || this.props.attribute_values.length > 1"
|
||||
t-out="this.props.attribute.name"
|
||||
t-attf-class="fw-bold text-break #{this.props.attribute_values.length === 1 && 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 && 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>
|
159
static/src/js/sale_product_field.js
Normal file
159
static/src/js/sale_product_field.js
Normal 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
1
tests/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from . import test_product_configurator_data
|
129
tests/common.py
Normal file
129
tests/common.py
Normal 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'
|
418
tests/test_product_configurator_data.py
Normal file
418
tests/test_product_configurator_data.py
Normal 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()
|
||||
)
|
||||
)
|
22
views/product_template_views.xml
Normal file
22
views/product_template_views.xml
Normal 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>
|
30
views/sale_order_views.xml
Normal file
30
views/sale_order_views.xml
Normal 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>
|
Loading…
x
Reference in New Issue
Block a user