mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-20 07:32:08 +02:00
19.0 vanilla
This commit is contained in:
parent
d1963a3c3a
commit
2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions
|
|
@ -66,7 +66,7 @@ This module provides the core of the Odoo Web Client.
|
|||
'web/static/src/scss/ui.scss',
|
||||
'web/static/src/views/fields/translation_dialog.scss',
|
||||
|
||||
'web/static/src/polyfills/clipboard.js',
|
||||
'web/static/src/polyfills/**/*.js',
|
||||
|
||||
'web/static/lib/popper/popper.js',
|
||||
'web/static/lib/bootstrap/js/dist/util/index.js',
|
||||
|
|
@ -152,6 +152,7 @@ This module provides the core of the Odoo Web Client.
|
|||
'web.assets_frontend_minimal': [
|
||||
'web/static/src/polyfills/object.js',
|
||||
'web/static/src/polyfills/array.js',
|
||||
'web/static/src/polyfills/promise.js',
|
||||
'web/static/src/module_loader.js',
|
||||
'web/static/src/polyfills/set.js',
|
||||
'web/static/src/session.js',
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ class Binary(http.Controller):
|
|||
'/web/image/<int:id>-<string:unique>/<string:filename>',
|
||||
'/web/image/<int:id>-<string:unique>/<int:width>x<int:height>',
|
||||
'/web/image/<int:id>-<string:unique>/<int:width>x<int:height>/<string:filename>',
|
||||
], type='http', auth='public', readonly=True)
|
||||
], type='http', auth='public', readonly=True, save_session=False)
|
||||
# pylint: disable=redefined-builtin,invalid-name
|
||||
def content_image(self, xmlid=None, model='ir.attachment', id=None, field='raw',
|
||||
filename_field='name', filename=None, mimetype=None, unique=False,
|
||||
|
|
|
|||
|
|
@ -312,7 +312,8 @@ class Export(http.Controller):
|
|||
definition_record = field['definition_record']
|
||||
definition_record_field = field['definition_record_field']
|
||||
|
||||
target_model = Model.env[Model._fields[definition_record].comodel_name]
|
||||
# sudo(): user may lack access to property definition model
|
||||
target_model = Model.env[Model._fields[definition_record].comodel_name].sudo()
|
||||
domain_definition = [(definition_record_field, '!=', False)]
|
||||
# Depends of the records selected to avoid showing useless Properties
|
||||
if domain:
|
||||
|
|
@ -566,7 +567,7 @@ class ExportFormat(object):
|
|||
groupby = params.get('groupby')
|
||||
if not import_compat and groupby:
|
||||
export_data = records.export_data(['.id'] + field_names).get('datas', [])
|
||||
groupby_type = [Model._fields[x.split(':')[0]].type for x in groupby]
|
||||
groupby_type = [Model._fields[x.split(':', 1)[0].split('.', 1)[0]].type for x in groupby]
|
||||
tree = GroupsTreeNode(Model, field_names, groupby, groupby_type)
|
||||
if ids:
|
||||
domain = [('id', 'in', ids)]
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import json
|
|||
from collections import deque
|
||||
|
||||
from werkzeug.datastructures import FileStorage
|
||||
from werkzeug.exceptions import UnprocessableEntity
|
||||
|
||||
from odoo import http, _
|
||||
from odoo.http import content_disposition, request
|
||||
|
|
@ -16,6 +17,8 @@ class TableExporter(http.Controller):
|
|||
def export_xlsx(self, data, **kw):
|
||||
import xlsxwriter # noqa: PLC0415
|
||||
jdata = json.load(data) if isinstance(data, FileStorage) else json.loads(data)
|
||||
if not jdata:
|
||||
raise UnprocessableEntity(_('No data to export'))
|
||||
output = io.BytesIO()
|
||||
workbook = xlsxwriter.Workbook(output, {'in_memory': True})
|
||||
worksheet = workbook.add_worksheet(jdata['title'])
|
||||
|
|
@ -24,7 +27,7 @@ class TableExporter(http.Controller):
|
|||
header_plain = workbook.add_format({'pattern': 1, 'bg_color': '#AAAAAA'})
|
||||
bold = workbook.add_format({'bold': True})
|
||||
|
||||
measure_count = jdata['measure_count']
|
||||
measure_count = min(jdata['measure_count'], 100000)
|
||||
|
||||
# Step 1: writing col group headers
|
||||
col_group_headers = jdata['col_group_headers']
|
||||
|
|
@ -43,11 +46,12 @@ class TableExporter(http.Controller):
|
|||
if cell['height'] > 1:
|
||||
carry.append({'x': x, 'height': cell['height'] - 1})
|
||||
x = x + measure_count
|
||||
for j in range(header['width']):
|
||||
width = min(header['width'], 100000)
|
||||
for j in range(width):
|
||||
worksheet.write(y, x + j, header['title'] if j == 0 else '', header_plain)
|
||||
if header['height'] > 1:
|
||||
carry.append({'x': x, 'height': header['height'] - 1})
|
||||
x = x + header['width']
|
||||
x = x + width
|
||||
while (carry and carry[0]['x'] == x):
|
||||
cell = carry.popleft()
|
||||
for j in range(measure_count):
|
||||
|
|
|
|||
|
|
@ -11,13 +11,15 @@
|
|||
# Niyas Raphy, 2022
|
||||
# Malaz Abuidris <msea@odoo.com>, 2023
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Malaz Siddig Elsayed Abuidris (msea)" <msea@odoo.com>, 2025, 2026.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 13:43+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-01-06 13:00+0000\n"
|
||||
"Last-Translator: \"Malaz Siddig Elsayed Abuidris (msea)\" <msea@odoo.com>\n"
|
||||
"Language-Team: Arabic <https://translate.odoo.com/projects/odoo-19/web/ar/>\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -25,7 +27,7 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -302,7 +304,7 @@ msgstr "3.30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -483,6 +485,17 @@ msgid ""
|
|||
"Temporal mode will merge all samples.<br/>It can lead to partially invalid "
|
||||
"result in case of concurrent profiles.<br/>Use with caution </span>"
|
||||
msgstr ""
|
||||
"<select class=\"form-select\" name=\"profile_aggregation_mode\" "
|
||||
"id=\"profile_aggregation_mode\">\n"
|
||||
" <option value=\"tabs\">مفصول (واحد "
|
||||
"لكل علامة تبويب)</option>\n"
|
||||
" <option value=\"temporal\">مؤقَّت "
|
||||
"(تجريبي)</option>\n"
|
||||
" </select>\n"
|
||||
" <span id=\"temporal_warning\" "
|
||||
"class=\"alert alert-warning\" style=\"display:none\"><b>تحذير:</b> سيؤدي "
|
||||
"الوضع التجريبي إلى دمج كافة العينات.<br/>يمكن أن يؤدي إلى نتيجة غير صالحة "
|
||||
"جزئياً في حالة الملفات الشخصية المتزامنة.<br/>كن حذراً عند استخدامه </span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -542,8 +555,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -2172,7 +2185,7 @@ msgstr "العملة"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "حقل العملة"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2295,7 +2308,7 @@ msgstr "التاريخ والوقت"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "تنسيق التاريخ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3205,6 +3218,8 @@ msgid ""
|
|||
"For example, if the value is \"1\" and you enter \"+=2\", it will be updated "
|
||||
"to \"3\"."
|
||||
msgstr ""
|
||||
"على سبيل المثال، إذا كانت القيمة \"1\" وأدخلت \"+=2\"، فسيتم تحديثها إلى "
|
||||
"\"3\"."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3382,6 +3397,9 @@ msgid ""
|
|||
"click the %(upload_icon)s button now to ensure your work is saved before you "
|
||||
"exit this tab."
|
||||
msgstr ""
|
||||
"انتبه! التغييرات الأخيرة التي أجريتها كبيرة جدًا بحيث لا يمكن حفظها تلقائيًا. "
|
||||
"يرجى الضغط على زر \" %(upload_icon)s \" الآن لضمان حفظ عملك قبل الخروج من "
|
||||
"علامة التبويب هذه."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3452,7 +3470,7 @@ msgstr "القائمة الرئيسية"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "ساعة"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3552,6 +3570,14 @@ msgstr ""
|
|||
"تحريرها مباشرةً. لاحظ أنه إذا تم تعيين حقل ألوان أيضاً، فسوف يسود إصدار "
|
||||
"العلامة. لذا، لن يتم عرض محدد الألوان عند الضغط على علامة التصنيف."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3704,7 +3730,7 @@ msgstr "الفترة"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "اسم العرض غير صالح"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4126,19 +4152,19 @@ msgstr "كبير"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "آخر 12 شهراً"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "آخر 30 يوم"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "آخر 7 أيام"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4156,7 +4182,7 @@ msgstr "آخر تحديث في"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "الشهر الماضي"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4299,7 +4325,7 @@ msgstr "تسجيل الخروج"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "تسجيل الدخول"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4504,6 +4530,12 @@ msgstr "درب التبانة"
|
|||
msgid "Minimal precision"
|
||||
msgstr "الدقة الأدنى"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4916,6 +4948,12 @@ msgstr "لا توجد بيانات"
|
|||
msgid "No data to display"
|
||||
msgstr "لا توجد بيانات لعرضها"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4931,8 +4969,8 @@ msgstr "تعذر العثور على جهاز."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "ليس هناك أي وجه ضاحك يطابق بحثك"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4983,7 +5021,7 @@ msgstr "لم يتم العثور على نتائج"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "لا توجد نتائج"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5209,7 +5247,6 @@ msgstr "أوه لا!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -6652,10 +6689,11 @@ msgstr "خاص:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "مكدسة"
|
||||
|
|
@ -6757,7 +6795,7 @@ msgstr "خطأ في الشكل"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "اللاحقة"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6969,6 +7007,12 @@ msgstr "يتضمن النطاق قيماً غير حرفية. قد يفشل تق
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "يجب ألا يتضمن النطاق قيماً غير حرفية"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6994,6 +7038,12 @@ msgstr ""
|
|||
"تمت مقاطعة العملية. عادةً ما يعني هذا أن العملية الحالية تستغرق وقتًا أطول من "
|
||||
"اللازم."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7643,7 +7693,7 @@ msgstr "واجهة المستخدم"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "إعدادات المستخدم"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7807,6 +7857,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "تحذير"
|
||||
|
||||
|
|
@ -8211,7 +8262,7 @@ msgstr "اسكليتيوس"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "بعد"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9188,7 +9239,7 @@ msgstr "خنفساء"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "before"
|
||||
msgstr ""
|
||||
msgstr "قبل"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12811,7 +12862,7 @@ msgstr "إمباندا"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/blank_component.xml:0
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "فارغ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26952,6 +27003,12 @@ msgstr "“شاغر”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "ليس هناك أي وجه ضاحك يطابق بحثك"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "الزاوية"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -25,13 +25,16 @@
|
|||
# Arnau Ros, 2023
|
||||
# Óscar Fonseca <tecnico@extreme-micro.com>, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
# Miriam Amatller Tura <sine2soft@gmail.com>, 2025.
|
||||
# "Noemi Pla Garcia (nopl)" <nopl@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 02:36+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-12-22 15:51+0000\n"
|
||||
"Last-Translator: \"Noemi Pla Garcia (nopl)\" <nopl@odoo.com>\n"
|
||||
"Language-Team: Catalan <https://translate.odoo.com/projects/odoo-19/web/ca/"
|
||||
">\n"
|
||||
"Language: ca\n"
|
||||
|
|
@ -39,7 +42,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -552,8 +555,8 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -894,7 +897,7 @@ msgstr "Afegir"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/x2many/x2many_field.js:0
|
||||
msgid "Add %s"
|
||||
msgstr ""
|
||||
msgstr "Afegir %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1680,7 +1683,7 @@ msgstr "Escolliu una ordre de depuració..."
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/user_switch/user_switch.xml:0
|
||||
msgid "Choose a user"
|
||||
msgstr ""
|
||||
msgstr "Tria un usuari"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1751,7 +1754,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record.xml:0
|
||||
msgid "Click to select"
|
||||
msgstr ""
|
||||
msgstr "Faci clic per a seleccionar"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1796,7 +1799,7 @@ msgstr "Tancar menú"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/kanban_color_picker/kanban_color_picker_field.js:0
|
||||
msgid "Color Picker"
|
||||
msgstr ""
|
||||
msgstr "Selector de color"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2120,7 +2123,7 @@ msgstr "Crear %s"
|
|||
#. module: web
|
||||
#: model:ir.model,website_form_label:web.model_res_partner
|
||||
msgid "Create a Customer"
|
||||
msgstr ""
|
||||
msgstr "Crear un client"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2186,7 +2189,7 @@ msgstr "Valor actual"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/tabs/color_picker_custom_tab.js:0
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
msgstr "Personalitzat"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2295,7 +2298,7 @@ msgstr "Data i Temps"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Format de data"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2748,7 +2751,7 @@ msgstr "Placeholder dinàmic"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/many2one/many2one_field.js:0
|
||||
msgid "Dynamic placeholder"
|
||||
msgstr ""
|
||||
msgstr "Placeholder dinàmic"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2882,12 +2885,12 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.login
|
||||
msgid "Enter your email"
|
||||
msgstr ""
|
||||
msgstr "Introdueix el teu correu"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.login
|
||||
msgid "Enter your password"
|
||||
msgstr ""
|
||||
msgstr "Introdueix la teva contrasenya"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2981,7 +2984,7 @@ msgstr "ID externa"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_field.js:0
|
||||
msgid "Extra Rights"
|
||||
msgstr ""
|
||||
msgstr "Permisos Extra"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3323,7 +3326,7 @@ msgstr "Verd"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_popover.xml:0
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
msgstr "Grup"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3341,7 +3344,7 @@ msgstr "Agrupar per"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.js:0
|
||||
msgid "HTML"
|
||||
msgstr ""
|
||||
msgstr "HTML"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_ir_http
|
||||
|
|
@ -3378,7 +3381,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
msgstr "Ajuda"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3441,7 +3444,7 @@ msgstr "Menú inici"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Hora"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3462,7 +3465,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.xml:0
|
||||
msgid "Hue"
|
||||
msgstr ""
|
||||
msgstr "Matís"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3535,6 +3538,14 @@ msgid ""
|
|||
"prevail. So, the color picker will not be displayed on click on the tag."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3721,7 +3732,7 @@ msgstr "Adreça de correu electrònic no vàlida:%(addresses)s"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/widgets/res_config_invite_users.js:0
|
||||
msgid "Invalid email addresses: %(two_addresses)s"
|
||||
msgstr ""
|
||||
msgstr "Adreça de correu electrònic no vàlida:%(two_addresses)s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4108,13 +4119,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Últims 30 dies"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Darrers 7 dies"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4132,7 +4143,7 @@ msgstr "Última actualització el"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Mes anterior"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4275,7 +4286,7 @@ msgstr "Tancar sessió"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Iniciar sessió"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4480,6 +4491,12 @@ msgstr "Via Làctia"
|
|||
msgid "Minimal precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4892,6 +4909,12 @@ msgstr "Sense dades"
|
|||
msgid "No data to display"
|
||||
msgstr "Sense dades per mostrar"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4907,7 +4930,7 @@ msgstr "No s'ha trobat cap dispositiu."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -4959,7 +4982,7 @@ msgstr "No s'han trobat resultats"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Sense resultats"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4984,7 +5007,7 @@ msgstr "No s'ha pogut trobar cap vista del tipus '%s' a l'acció actual."
|
|||
#: code:addons/web/static/src/views/calendar/calendar_controller.js:0
|
||||
#: code:addons/web/static/src/views/view_hook.js:0
|
||||
msgid "No, keep it"
|
||||
msgstr "No, guarda'l"
|
||||
msgstr "No, deixa-ho com està"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5100,7 +5123,7 @@ msgstr "Error de client Odoo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/fields/upgrade_dialog.xml:0
|
||||
msgid "Odoo Enterprise"
|
||||
msgstr ""
|
||||
msgstr "Odoo Enterprise"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5183,7 +5206,6 @@ msgstr "Oh, vaja!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5245,13 +5267,15 @@ msgstr "Només tu"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/errors/error_dialogs.xml:0
|
||||
msgid "Oops!"
|
||||
msgstr ""
|
||||
msgstr "Vaja!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/file_handler.js:0
|
||||
msgid "Oops! '%(fileName)s' didn’t upload since its format isn’t allowed."
|
||||
msgstr ""
|
||||
"Vaja! '%(fileName)s' no s'ha pogut carregar perquè el format no és "
|
||||
"compatible."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5276,7 +5300,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
msgstr "Oberts"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6231,7 +6255,7 @@ msgstr "Buscar un menu..."
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.js:0
|
||||
msgid "Search more..."
|
||||
msgstr ""
|
||||
msgstr "Cerca més..."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6581,7 +6605,7 @@ msgstr "Emoticones"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/tabs/color_picker_solid_tab.js:0
|
||||
msgid "Solid"
|
||||
msgstr ""
|
||||
msgstr "Sòlid"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6618,10 +6642,11 @@ msgstr "Especial:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Velocimetre"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Apilat"
|
||||
|
|
@ -6723,7 +6748,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Sufix"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6936,6 +6961,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6961,6 +6992,12 @@ msgstr ""
|
|||
"L'operació s'ha interromput. Això sol significar que l'operació actual "
|
||||
"s'està prenent molt temps."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7452,7 +7489,7 @@ msgstr "Sense títol"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/list/list_confirmation_dialog.xml:0
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
msgstr "Actualitza"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7595,7 +7632,7 @@ msgstr "Interfície d'usuari"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Arranjament d' usuari"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7759,6 +7796,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Avís"
|
||||
|
||||
|
|
@ -8158,7 +8196,7 @@ msgstr "aesculapi"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "després"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -16832,7 +16870,7 @@ msgstr "llums"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "like"
|
||||
msgstr "M'agrada"
|
||||
msgstr "conté"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18898,7 +18936,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "not like"
|
||||
msgstr "no m'agrada"
|
||||
msgstr "no conté"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26900,6 +26938,9 @@ msgstr "“vacancy”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Error"
|
||||
#~ msgstr "Error"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -15,13 +15,14 @@
|
|||
# Martin Trigaux, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Kira Petersen François (peti)" <peti@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-25 13:22+0000\n"
|
||||
"Last-Translator: \"Kira Petersen François (peti)\" <peti@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-11-08 21:56+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Danish <https://translate.odoo.com/projects/odoo-19/web/da/>\n"
|
||||
"Language: da\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -545,8 +546,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -2301,7 +2302,7 @@ msgstr "Dato og klokkeslæt"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Dato format"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3460,7 +3461,7 @@ msgstr "Startmenu"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Time"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3562,6 +3563,14 @@ msgstr ""
|
|||
"vil tag-redigering have forrang, og farvevælgeren vises derfor ikke ved klik "
|
||||
"på tagget."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4142,19 +4151,19 @@ msgstr "Stor"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "Seneste 12 måneder"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Seneste 30 dage"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Seneste 7 dage"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4172,7 +4181,7 @@ msgstr "Sidst opdateret den"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Sidste måned"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4315,7 +4324,7 @@ msgstr "Log af"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Log ind"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4520,6 +4529,12 @@ msgstr "Mælkevej"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Minimal præcision"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4932,6 +4947,12 @@ msgstr "Ingen data"
|
|||
msgid "No data to display"
|
||||
msgstr "Ingen data at vise"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4947,8 +4968,8 @@ msgstr "Ingen enhed fundet."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Ingen emoji matcher din søgning"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4999,7 +5020,7 @@ msgstr "Ingen resultater fundet"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Ingen resultater"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5225,7 +5246,6 @@ msgstr "Pokkers!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -6673,10 +6693,11 @@ msgstr "Speciel:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Stablet"
|
||||
|
|
@ -6778,7 +6799,7 @@ msgstr "Stilfejl"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Suffiks"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6990,6 +7011,12 @@ msgstr "Domænet indeholder ikke-literaler. Deres evaluering kan mislykkes."
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "Domænet bør ikke indeholde ikke-literaler"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -7015,6 +7042,12 @@ msgstr ""
|
|||
"Handlingen blev afbrudt. Dette betyder typisk, at den nuværende handling "
|
||||
"tager for lang tid."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7670,7 +7703,7 @@ msgstr "Brugergrænseflade"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Bruger indstillinger"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7834,6 +7867,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Advarsel"
|
||||
|
||||
|
|
@ -8241,7 +8275,7 @@ msgstr "Asklepios"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "efter"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26982,6 +27016,12 @@ msgstr "\"ledig\""
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Ingen emoji matcher din søgning"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Vinkel"
|
||||
|
||||
|
|
|
|||
|
|
@ -14,13 +14,15 @@
|
|||
# Larissa Manderfeld, 2023
|
||||
# Stefan Reisich <nafex@gmx.net>, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Larissa Manderfeld (lman)" <lman@odoo.com>, 2025.
|
||||
# "Larissa Manderfeld (lman)" <lman@odoo.com>, 2025, 2026.
|
||||
# "Malaz Siddig Elsayed Abuidris (msea)" <msea@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-27 02:30+0000\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-02-13 09:18+0000\n"
|
||||
"Last-Translator: \"Larissa Manderfeld (lman)\" <lman@odoo.com>\n"
|
||||
"Language-Team: German <https://translate.odoo.com/projects/odoo-19/web/de/>\n"
|
||||
"Language: de\n"
|
||||
|
|
@ -28,7 +30,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -305,7 +307,7 @@ msgstr "3.30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -486,6 +488,18 @@ msgid ""
|
|||
"Temporal mode will merge all samples.<br/>It can lead to partially invalid "
|
||||
"result in case of concurrent profiles.<br/>Use with caution </span>"
|
||||
msgstr ""
|
||||
"<select class=\"form-select\" name=\"profile_aggregation_mode\" "
|
||||
"id=\"profile_aggregation_mode\">\n"
|
||||
" <option value=\"tabs\">Getrennt (1 "
|
||||
"pro Reiter)</option>\n"
|
||||
" <option value=\"temporal\">Temporär "
|
||||
"(experimentell)</option>\n"
|
||||
" </select>\n"
|
||||
" <span id=\"temporal_warning\" "
|
||||
"class=\"alert alert-warning\" style=\"display:none\"><b>Warnung:</b> Im "
|
||||
"temporären Modus werden alle Proben zusammengeführt.<br/>Bei gleichzeitigen "
|
||||
"Profilen kann dies zu teilweise ungültigen Ergebnissen führen.<br/>Mit "
|
||||
"Vorsicht verwenden! </span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -545,8 +559,8 @@ msgstr "<span id=\"line_tax_ids\">15 %</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deko-Süchtiger</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -575,7 +589,7 @@ msgid ""
|
|||
" <span>INV/2023/00003</span>"
|
||||
msgstr ""
|
||||
"<span>Rechnung</span>\n"
|
||||
" <span>INV/2023/00003</span>"
|
||||
" <span>RG/2023/00003</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -902,7 +916,7 @@ msgstr "Foto hinzufügen"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "Add Property"
|
||||
msgstr ""
|
||||
msgstr "Eigenschaft hinzufügen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1172,12 +1186,14 @@ msgstr "Sind Sie sicher, dass Sie diese eingebettete Aktion entfernen möchten?"
|
|||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the %(nbSelected)s selected records?"
|
||||
msgstr ""
|
||||
"Sind Sie sicher, dass Sie die %(nbSelected)s ausgewählten Datensätze löschen "
|
||||
"möchten?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the selected record?"
|
||||
msgstr ""
|
||||
msgstr "Sind Sie sicher, dass Sie die ausgewählten Datensätze löschen möchten?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1195,7 +1211,7 @@ msgstr "Sind Sie sicher, dass Sie diese Spalte löschen möchten?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "Are you sure you want to delete this property field?"
|
||||
msgstr ""
|
||||
msgstr "Sind Sie sicher, dass Sie dieses Eigenschaftsfeld löschen möchten?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2184,7 +2200,7 @@ msgstr "Währung"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Währungsfeld"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2239,7 +2255,7 @@ msgstr "Benutzerdefinierte Gruppe"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Custom range"
|
||||
msgstr ""
|
||||
msgstr "Benutzerdefinierter Bereich"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -2305,7 +2321,7 @@ msgstr "Datum & Uhrzeit"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Datumsformat"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2616,6 +2632,8 @@ msgid ""
|
|||
"Displays or hides the seconds in the datetime value. Affect only the "
|
||||
"readable datetime format."
|
||||
msgstr ""
|
||||
"Zeigt die Sekunden im Datums-/Zeitwert an oder blendet sie aus. Dies "
|
||||
"betrifft nur das lesbare Datums-/Zeitformat."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2628,6 +2646,8 @@ msgstr "Zeigt die Zeit im Datum/Zeit-Wert an oder blendet in aus."
|
|||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Displays the date either in 31/01/%(year)s or in Jan 31, %(year)s"
|
||||
msgstr ""
|
||||
"Zeigt das Datum entweder im Format 31/01/%(year)s oder als 31. Januar %"
|
||||
"(year)s an"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2852,7 +2872,7 @@ msgstr "E-Mail"
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings__embedded_actions_config_ids
|
||||
msgid "Embedded Actions Config"
|
||||
msgstr ""
|
||||
msgstr "Konfiguration eingebetteter Aktionen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3219,6 +3239,8 @@ msgid ""
|
|||
"For example, if the value is \"1\" and you enter \"+=2\", it will be updated "
|
||||
"to \"3\"."
|
||||
msgstr ""
|
||||
"Wenn der Wert beispielsweise „1“ ist und Sie „+=2“ eingeben, wird er auf „3“ "
|
||||
"aktualisiert."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3396,6 +3418,10 @@ msgid ""
|
|||
"click the %(upload_icon)s button now to ensure your work is saved before you "
|
||||
"exit this tab."
|
||||
msgstr ""
|
||||
"Achtung! Ihre letzten Änderungen sind zu umfangreich, um automatisch "
|
||||
"gespeichert zu werden. Klicken Sie jetzt auf die Schaltfläche %"
|
||||
"(upload_icon)s, um sicherzustellen, dass Ihre Arbeit gespeichert wird, bevor "
|
||||
"Sie diesen Reiter schließen."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3466,7 +3492,7 @@ msgstr "Startmenü"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Stunde"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3570,6 +3596,16 @@ msgstr ""
|
|||
"Vorrang hat. Die Farbauswahl wird also nicht angezeigt, wenn Sie auf das "
|
||||
"Stichwort klicken."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
"Wenn angekreuzt, werden die Kontrollkästchen in einer Spalte angezeigt. "
|
||||
"Andernfalls zwischen den Zeilen."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3683,7 +3719,7 @@ msgstr "Installieren"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "Install %s"
|
||||
msgstr "%s Installieren"
|
||||
msgstr "%s installieren"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3726,7 +3762,7 @@ msgstr "Intervall"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "Ungültiger Anzeigename"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3891,18 +3927,20 @@ msgid ""
|
|||
"It will be removed for everyone using the \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
msgstr ""
|
||||
"Es wird für alle entfernt, die %(parentFieldLabel)s „%(parentName)s“ "
|
||||
"verwenden."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "It will be removed for everyone!"
|
||||
msgstr ""
|
||||
msgstr "Es wird für alle entfernt."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Jan 31, %s"
|
||||
msgstr ""
|
||||
msgstr "31. Januar %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4151,19 +4189,19 @@ msgstr "Groß"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "Letzte 12 Monate"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Letzte 30 Tage"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Letzte 7 Tage"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4181,7 +4219,7 @@ msgstr "Zuletzt aktualisiert am"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Letzten Monat"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4324,7 +4362,7 @@ msgstr "Abmelden"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Anmelden"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4478,12 +4516,12 @@ msgstr "Meeting-Betreff"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory limit (in bytes)"
|
||||
msgstr ""
|
||||
msgstr "Speicherlimit (in Bytes)"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory profile"
|
||||
msgstr ""
|
||||
msgstr "Speicherprofil"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4529,6 +4567,12 @@ msgstr "Milchstraße"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Minimale Genauigkeit"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr "Mindestanzahl an Ziffern"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4557,7 +4601,7 @@ msgstr "Fehlende Datensatz-ID"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/record.js:0
|
||||
msgid "Missing required fields"
|
||||
msgstr ""
|
||||
msgstr "Fehlende Pflichtfelder"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4644,7 +4688,7 @@ msgstr "Monat"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Month to date"
|
||||
msgstr ""
|
||||
msgstr "Monat zu Datum"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4768,7 +4812,7 @@ msgstr "Mein Odoo.com-Konto"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "My Preferences"
|
||||
msgstr ""
|
||||
msgstr "Meine Präferenzen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4941,6 +4985,12 @@ msgstr "Keine Daten"
|
|||
msgid "No data to display"
|
||||
msgstr "Keine Daten zum Anzeigen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr "Keine zu exportierenden Daten"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4956,8 +5006,8 @@ msgstr "Es kann kein Gerät gefunden werden."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Kein Emoji passt zu Ihrer Suche"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5008,7 +5058,7 @@ msgstr "Kein Treffer gefunden"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Keine Ergebnisse"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5065,6 +5115,8 @@ msgid ""
|
|||
"Not possible to create monetary field because there is no currency on "
|
||||
"current model."
|
||||
msgstr ""
|
||||
"Es ist nicht möglich, ein Währungsfeld zu erstellen, da das aktuelle Modell "
|
||||
"keine Währung enthält."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5219,7 +5271,7 @@ msgid ""
|
|||
"have been archived/unarchived."
|
||||
msgstr ""
|
||||
"Von den %(selectedRecord)s ausgewählten Datensätzen wurden nur die ersten %"
|
||||
"(firstRecords)s archiviert/dearchiviert."
|
||||
"(firstRecords)s archiviert bzw. deren Archivierung aufgehoben."
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.webclient_offline
|
||||
|
|
@ -5235,7 +5287,6 @@ msgstr "Huch!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5475,7 +5526,7 @@ msgstr "Passwort"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "Payment Communication: <b><span>INV/2023/00003</span></b>"
|
||||
msgstr "Zahlungsmitteilung: <b><span>INV/2023/00003</span></b>"
|
||||
msgstr "Zahlungsmitteilung: <b><span>RG/2023/00003</span></b>"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5602,12 +5653,12 @@ msgstr "Bitte erneut scannen!"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.brand_promotion_message
|
||||
msgid "Powered by %s%s"
|
||||
msgstr "Powered by %s%s"
|
||||
msgstr "Unterstützt durch %s%s"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.login_layout
|
||||
msgid "Powered by <span>Odoo</span>"
|
||||
msgstr "Powered by <span>Odoo</span>"
|
||||
msgstr "Unterstützt durch <span>Odoo</span>"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5752,7 +5803,7 @@ msgstr "Eigenschaften"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_properties_base_definition
|
||||
msgid "Properties Base Definition"
|
||||
msgstr ""
|
||||
msgstr "Allgemeine Festlegung der Eigenschaften"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5883,7 +5934,7 @@ msgstr "Datensatzregeln"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "Record memory"
|
||||
msgstr ""
|
||||
msgstr "Datensatzspeicher"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6520,6 +6571,7 @@ msgstr "Zeitzone für Ihren Benutzer einstellen"
|
|||
#: code:addons/web/static/src/views/fields/badge_selection/list_badge_selection_field.js:0
|
||||
msgid "Set an integer field to use colors with the badge."
|
||||
msgstr ""
|
||||
"Legen Sie ein Ganzzahlen-Feld fest, um Farben mit dem Abzeichen zu verwenden."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6670,8 +6722,8 @@ msgid ""
|
|||
"Something went wrong... If you really are stuck, share the report with your "
|
||||
"friendly support service"
|
||||
msgstr ""
|
||||
"Etwas ist schiefgelaufen ... Wenn Sie wirklich feststecken, teilen Sie den "
|
||||
"Bericht mit Ihrem freundlichen Kundenservice"
|
||||
"Etwas ist schiefgelaufen … Wenn Sie wirklich feststecken, teilen Sie den "
|
||||
"Bericht mit dem freundlichen Kundenservice."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6688,10 +6740,11 @@ msgstr "Spezial:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Gestapelt"
|
||||
|
|
@ -6793,7 +6846,7 @@ msgstr "Stilfehler"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Suffix"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7008,11 +7061,18 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "Die Domain sollte keine Nicht-Buchstabensymbole enthalten."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "Die Datei ist kein Bild, die Größe kann nicht geändert werden."
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
msgid "The ids in %(field_name)s must not be duplicated: “%(action_ids)s”"
|
||||
msgstr ""
|
||||
"Die ID in %(field_name)s dürfen nicht dupliziert sein: „%(action_ids)s“"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -7021,6 +7081,8 @@ msgid ""
|
|||
"The ids in %(field_name)s must only be integers or \"false\": “%"
|
||||
"(action_ids)s”"
|
||||
msgstr ""
|
||||
"Die ID in %(field_name)s dürfen nur Ganzzahlen oder „false“ sein: „%"
|
||||
"(action_ids)s“"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7033,6 +7095,12 @@ msgstr ""
|
|||
"Der Vorgang wurde unterbrochen. Dies bedeutet in der Regel, dass der "
|
||||
"aktuelle Vorgang zu viel Zeit in Anspruch nimmt."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "Die Größenänderung des Bildes ist nicht möglich"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7068,6 +7136,8 @@ msgid ""
|
|||
"The user should have one unique embedded action setting per user setting, "
|
||||
"action and record id."
|
||||
msgstr ""
|
||||
"Der Benutzer sollte über eine eindeutige eingebettete Aktionseinstellung pro "
|
||||
"Benutzereinstellung, Aktion und Datensatz-ID verfügen."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7267,7 +7337,7 @@ msgstr "Suchfeld ein/aus"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/datetime/datetime_picker.xml:0
|
||||
msgid "Toggle date range mode"
|
||||
msgstr ""
|
||||
msgstr "Modus für Datumsbereich ein/aus"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7651,6 +7721,8 @@ msgid ""
|
|||
"Use the operators \"+=\", \"-=\", \"*=\" and \"/=\" to update the current "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Verwenden Sie die Operatoren „+=“, „-=“, „*=“ und „/=“, um den aktuellen "
|
||||
"Wert zu aktualisieren."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7698,12 +7770,12 @@ msgstr "Benutzerschnittstelle"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Benutzereinstellungen"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
msgid "User Settings for Embedded Actions"
|
||||
msgstr ""
|
||||
msgstr "Benutzereinstellungen für eingebettete Aktionen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7795,7 +7867,7 @@ msgstr "Ansicht"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/list/list_renderer.xml:0
|
||||
msgid "View Button"
|
||||
msgstr "Schaltfläche anzeigen"
|
||||
msgstr "„Ansicht“-Schaltfläche"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7862,6 +7934,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Warnung"
|
||||
|
||||
|
|
@ -8001,7 +8074,7 @@ msgstr "Jahr"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Year to date"
|
||||
msgstr ""
|
||||
msgstr "Seit Jahresbeginn"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8050,7 +8123,7 @@ msgstr "Sie können die App aus dem Browsermenü installieren"
|
|||
#. odoo-python
|
||||
#: code:addons/web/models/properties_base_definition.py:0
|
||||
msgid "You can not read that field definition."
|
||||
msgstr ""
|
||||
msgstr "Sie können diese Felddefinition nicht lesen."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8274,7 +8347,7 @@ msgstr "Asklepios"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "nach"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9251,7 +9324,7 @@ msgstr "Käfer"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "before"
|
||||
msgstr ""
|
||||
msgstr "vor"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12383,7 +12456,7 @@ msgstr "Dokument"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "does not contain"
|
||||
msgstr "beinhaltet nicht"
|
||||
msgstr "enthält nicht"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12874,7 +12947,7 @@ msgstr "Empanada"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/blank_component.xml:0
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "leer"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14704,7 +14777,7 @@ msgstr "Grashüpfer"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater or equal to"
|
||||
msgstr ""
|
||||
msgstr "größer als oder gleich"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17170,13 +17243,13 @@ msgstr "niedrig"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower or equal to"
|
||||
msgstr ""
|
||||
msgstr "kleiner als oder gleich"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower than"
|
||||
msgstr ""
|
||||
msgstr "kleiner als"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19376,7 +19449,6 @@ msgstr "optische Platte"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/autocomplete/autocomplete.xml:0
|
||||
#, fuzzy
|
||||
msgid "option.label"
|
||||
msgstr "option.label"
|
||||
|
||||
|
|
@ -19384,7 +19456,6 @@ msgstr "option.label"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/record_selectors/record_autocomplete.xml:0
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.xml:0
|
||||
#, fuzzy
|
||||
msgid "optionScope.label"
|
||||
msgstr "optionScope.label"
|
||||
|
||||
|
|
@ -27019,6 +27090,12 @@ msgstr "„freies Zimmer“"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Kein Emoji passt zu Ihrer Suche"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deko-Süchtiger</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Winkel"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,13 +12,15 @@
|
|||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# Dionysis Zacharioudakis <d.zacharioudakis@dileanity.com>, 2025.
|
||||
# Panagiotis karampaglis <panosdotk@gmail.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 12.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-04 02:31+0000\n"
|
||||
"Last-Translator: Dionysis Zacharioudakis <d.zacharioudakis@dileanity.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-11-08 19:02+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Greek <https://translate.odoo.com/projects/odoo-19/web/el/>\n"
|
||||
"Language: el\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -530,7 +532,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -861,7 +863,7 @@ msgstr "Προσθήκη"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/x2many/x2many_field.js:0
|
||||
msgid "Add %s"
|
||||
msgstr ""
|
||||
msgstr "Προσθέστε%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -916,7 +918,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor.xml:0
|
||||
msgid "Add nested rule"
|
||||
msgstr ""
|
||||
msgstr "Προσθήκη ένθετου κανόνα"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2111,7 +2113,7 @@ msgstr "Ημερομηνία Δημιουργίας:"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu_items.xml:0
|
||||
msgid "Creation User:"
|
||||
msgstr "Χρήστης δημιουργίας"
|
||||
msgstr "Χρήστης δημιουργίας:"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2141,7 +2143,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/tabs/color_picker_custom_tab.js:0
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
msgstr "Προσωποποιημένο"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2165,20 +2167,20 @@ msgstr ""
|
|||
#: code:addons/web/static/src/search/search_bar/search_bar.js:0
|
||||
#: code:addons/web/static/src/search/search_model.js:0
|
||||
msgid "Custom Filter"
|
||||
msgstr ""
|
||||
msgstr "Προσαρμοσμένο φίλτρο"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/search_bar/search_bar.xml:0
|
||||
#: code:addons/web/static/src/search/search_bar_menu/search_bar_menu.xml:0
|
||||
msgid "Custom Filter..."
|
||||
msgstr ""
|
||||
msgstr "Προσαρμοσμένο φίλτρο..."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/custom_group_by_item/custom_group_by_item.xml:0
|
||||
msgid "Custom Group"
|
||||
msgstr ""
|
||||
msgstr "Προσαρμοσμένη Ομαδοποίηση"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2250,7 +2252,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Μορφή Ημερομηνίας"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2412,7 +2414,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor.xml:0
|
||||
msgid "Delete rule"
|
||||
msgstr ""
|
||||
msgstr "Διαγραφή κανόνα"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2936,7 +2938,7 @@ msgstr "Εξωτερικό Αναγνωριστικό"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_field.js:0
|
||||
msgid "Extra Rights"
|
||||
msgstr ""
|
||||
msgstr "Πρόσθετα Δικαιώματα"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3132,7 +3134,7 @@ msgstr "Υποσέλιδο"
|
|||
#: model:ir.model.fields,help:web.field_base_document_layout__report_footer
|
||||
msgid "Footer text displayed at the bottom of all reports."
|
||||
msgstr ""
|
||||
"Κείμενο υποσέλιδου που εμφανίζεται στο τέλος της σελίδας όλων των εκτυπώσεων"
|
||||
"Κείμενο υποσέλιδου που εμφανίζεται στο τέλος της σελίδας όλων των εκτυπώσεων."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3275,7 +3277,7 @@ msgstr "Πράσινο"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_popover.xml:0
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
msgstr "Ομάδα"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3293,7 +3295,7 @@ msgstr "Ομαδοποίηση κατά"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.js:0
|
||||
msgid "HTML"
|
||||
msgstr ""
|
||||
msgstr "HTML"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_ir_http
|
||||
|
|
@ -3330,7 +3332,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
msgstr "Βοήθεια"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3487,6 +3489,14 @@ msgid ""
|
|||
"prevail. So, the color picker will not be displayed on click on the tag."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4057,7 +4067,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Τελευταίες 7 ημέρες"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4218,7 +4228,7 @@ msgstr "Αποσύνδεση"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Σύνδεση"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4424,6 +4434,12 @@ msgstr ""
|
|||
msgid "Minimal precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4724,7 +4740,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor.xml:0
|
||||
msgid "New Rule"
|
||||
msgstr ""
|
||||
msgstr "Νέος Κανόνας"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4836,6 +4852,12 @@ msgstr ""
|
|||
msgid "No data to display"
|
||||
msgstr "Δεν υπάρχουν δεδομένα προς εμφάνιση"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4851,7 +4873,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -5125,7 +5147,6 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5210,7 +5231,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
msgstr "Ανοιχτό"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6072,7 +6093,7 @@ msgstr "Αποθήκευση & Κλείσιμο"
|
|||
#: code:addons/web/static/src/views/fields/relational_utils.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
msgid "Save & New"
|
||||
msgstr "Αποθήκευση & Δημιουργία Νέου"
|
||||
msgstr "Αποθήκευση & Δημιουργία Νέου"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6277,7 +6298,7 @@ msgstr "Επιλογή προβολής"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/selection_box.xml:0
|
||||
msgid "Select all"
|
||||
msgstr ""
|
||||
msgstr "Επιλογή όλων"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6313,7 +6334,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_value_editors.js:0
|
||||
msgid "Select one or several criteria"
|
||||
msgstr ""
|
||||
msgstr "Επιλέξτε μία ή περισσότερες επιλογές"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6481,7 +6502,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/view_scale_selector.xml:0
|
||||
msgid "Show weekends"
|
||||
msgstr ""
|
||||
msgstr "Εμφάνιση Σαββατοκύριακων"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6550,6 +6571,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
|
@ -6651,7 +6673,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Επίθημα"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6779,7 +6801,7 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:web.external_layout_striped
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_wave
|
||||
msgid "Tax ID"
|
||||
msgstr "Α.Φ.Μ."
|
||||
msgstr "ΑΦΜ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6859,6 +6881,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6882,6 +6910,12 @@ msgid ""
|
|||
"is taking too much time."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7365,7 +7399,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/list/list_confirmation_dialog.xml:0
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
msgstr "Ενημέρωση"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7508,7 +7542,7 @@ msgstr "Χρηστική Διεπιφάνεια"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Ρυθμίσεις Χρήστη"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7672,6 +7706,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Προσοχή"
|
||||
|
||||
|
|
@ -8140,7 +8175,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/tree_editor/tree_editor.xml:0
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_processor.js:0
|
||||
msgid "all"
|
||||
msgstr ""
|
||||
msgstr "όλα"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8311,7 +8346,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/tree_editor/tree_editor.xml:0
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_processor.js:0
|
||||
msgid "any"
|
||||
msgstr ""
|
||||
msgstr "κάθε"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9110,7 +9145,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "between"
|
||||
msgstr ""
|
||||
msgstr "ανάμεσα"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -10004,7 +10039,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "calendar"
|
||||
msgstr ""
|
||||
msgstr "ημερολόγιο"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12176,7 +12211,7 @@ msgstr "εγγραφή"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "does not contain"
|
||||
msgstr ""
|
||||
msgstr "δεν περιέχει"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -16969,7 +17004,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower than"
|
||||
msgstr ""
|
||||
msgstr "μικρότερη από"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18709,7 +18744,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor.xml:0
|
||||
msgid "no records"
|
||||
msgstr ""
|
||||
msgstr "χωρίς εγγραφές"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18897,7 +18932,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor.xml:0
|
||||
msgid "of the following rules:"
|
||||
msgstr ""
|
||||
msgstr "από τους ακόλουθους κανόνες:"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -22114,7 +22149,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.xml:0
|
||||
#: code:addons/web/static/src/views/view_components/selection_box.xml:0
|
||||
msgid "selected"
|
||||
msgstr ""
|
||||
msgstr "επιλεγμένα"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
|
|||
|
|
@ -14,22 +14,25 @@
|
|||
# Pedro M. Baeza <pedro.baeza@tecnativa.com>, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Noemi Pla Garcia (nopl)" <nopl@odoo.com>, 2025, 2026.
|
||||
# "Malaz Siddig Elsayed Abuidris (msea)" <msea@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-17 17:29+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"Language-Team: Spanish <https://translate.odoo.com/projects/odoo-19/web/es/"
|
||||
">\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-03-06 17:47+0000\n"
|
||||
"Last-Translator: \"Noemi Pla Garcia (nopl)\" <nopl@odoo.com>\n"
|
||||
"Language-Team: Spanish <https://translate.odoo.com/projects/odoo-19/web/es/>"
|
||||
"\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n != 0 && n % 1000000 == "
|
||||
"0) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.16.1\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -306,7 +309,7 @@ msgstr "3.30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -487,6 +490,18 @@ msgid ""
|
|||
"Temporal mode will merge all samples.<br/>It can lead to partially invalid "
|
||||
"result in case of concurrent profiles.<br/>Use with caution </span>"
|
||||
msgstr ""
|
||||
"<select class=\"form-select\" name=\"profile_aggregation_mode\" "
|
||||
"id=\"profile_aggregation_mode\">\n"
|
||||
" <option value=\"tabs\">Separado (uno "
|
||||
"por pestaña)</option>\n"
|
||||
" <option value=\"temporal\">Temporal "
|
||||
"(experimental)</option>\n"
|
||||
" </select>\n"
|
||||
" <span id=\"temporal_warning\" "
|
||||
"class=\"alert alert-warning\" style=\"display:none\"><b>Advertencia:</b> el "
|
||||
"modo temporal fusionará todas las muestras/ejemplos.<br/>Puede causar "
|
||||
"resultados parcialmente no válidos en caso de perfiles concurrentes.<br/"
|
||||
">Úsalo con precaución </span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -546,8 +561,8 @@ msgstr "<span id=\"line_tax_ids\">15 %</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -681,7 +696,7 @@ msgstr "<strong>Total</strong>"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<strong>Untaxed Amount</strong>"
|
||||
msgstr "<strong>Base imponible</strong>"
|
||||
msgstr "<strong>Importe base</strong>"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -903,7 +918,7 @@ msgstr "Añadir una fotografía"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "Add Property"
|
||||
msgstr ""
|
||||
msgstr "Añadir una propiedad"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1171,12 +1186,14 @@ msgstr "¿Está seguro de que desea eliminar esta acción incrustada?"
|
|||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the %(nbSelected)s selected records?"
|
||||
msgstr ""
|
||||
"¿Estás seguro de que deseas eliminar los registros seleccionados de %"
|
||||
"(nbSelected)s?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the selected record?"
|
||||
msgstr ""
|
||||
msgstr "¿Estás seguro de que deseas eliminar el registro seleccionado?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1194,7 +1211,7 @@ msgstr "¿Está seguro de que desea eliminar esta columna?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "Are you sure you want to delete this property field?"
|
||||
msgstr ""
|
||||
msgstr "¿Estás seguro de que deseas eliminar este campo de propiedad?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1326,13 +1343,13 @@ msgstr "Volver"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/breadcrumbs/breadcrumbs.js:0
|
||||
msgid "Back to “%s”"
|
||||
msgstr "Regresar a “%s”"
|
||||
msgstr "Volver a “%s”"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/breadcrumbs/breadcrumbs.js:0
|
||||
msgid "Back to “%s” form"
|
||||
msgstr "Regresar al formulario “%s”"
|
||||
msgstr "Volver al formulario “%s”"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
|
|
@ -1685,7 +1702,7 @@ msgstr "Elija un comando de depuración..."
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/user_switch/user_switch.xml:0
|
||||
msgid "Choose a user"
|
||||
msgstr "Elija un usuario"
|
||||
msgstr "Elige un usuario"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2185,7 +2202,7 @@ msgstr "Moneda"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Campo de moneda"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2240,7 +2257,7 @@ msgstr "Grupo personalizado"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Custom range"
|
||||
msgstr ""
|
||||
msgstr "Rango personalizado"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -2308,7 +2325,7 @@ msgstr "Fecha y hora"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Formato de fecha"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2619,6 +2636,8 @@ msgid ""
|
|||
"Displays or hides the seconds in the datetime value. Affect only the "
|
||||
"readable datetime format."
|
||||
msgstr ""
|
||||
"Muestra u oculta los segundos en el valor de fecha y hora. Solo afecta al "
|
||||
"formato de fecha y hora legible."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2631,6 +2650,7 @@ msgstr "Muestra u oculta la hora en el valor de fecha y hora."
|
|||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Displays the date either in 31/01/%(year)s or in Jan 31, %(year)s"
|
||||
msgstr ""
|
||||
"Muestra la fecha en formato 31/01/%(year)s o en formato Ene 31, %(year)s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2854,7 +2874,7 @@ msgstr "Correo electrónico"
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings__embedded_actions_config_ids
|
||||
msgid "Embedded Actions Config"
|
||||
msgstr ""
|
||||
msgstr "Configuración de acciones integradas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2901,12 +2921,12 @@ msgstr "Introduzca un correo electrónico"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.login
|
||||
msgid "Enter your email"
|
||||
msgstr "Escriba su correo"
|
||||
msgstr "Introduce tu correo electrónico"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.login
|
||||
msgid "Enter your password"
|
||||
msgstr "Ingrese su contraseña"
|
||||
msgstr "Introduce tu contraseña"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3221,6 +3241,7 @@ msgid ""
|
|||
"For example, if the value is \"1\" and you enter \"+=2\", it will be updated "
|
||||
"to \"3\"."
|
||||
msgstr ""
|
||||
"Por ejemplo, si el valor es «1» y se introduce «+=2», se actualizará a «3»."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3336,7 +3357,7 @@ msgstr "Ir a la URL"
|
|||
#: code:addons/web/static/src/views/fields/google_slide_viewer/google_slide_viewer.js:0
|
||||
#: code:addons/web/static/src/views/fields/google_slide_viewer/google_slide_viewer.xml:0
|
||||
msgid "Google Slide Viewer"
|
||||
msgstr "Visor de presentaciones de Google"
|
||||
msgstr "Lector de presentaciones de Google"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3398,6 +3419,9 @@ msgid ""
|
|||
"click the %(upload_icon)s button now to ensure your work is saved before you "
|
||||
"exit this tab."
|
||||
msgstr ""
|
||||
"¡Atención! Los cambios recientes son demasiado grandes para guardarse "
|
||||
"automáticamente. Haz clic en el botón « %(upload_icon)s » (Guardar cambios) "
|
||||
"para asegurarte de que tu trabajo se guarde antes de salir de esta pestaña."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3468,7 +3492,7 @@ msgstr "Menú de inicio"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Hora"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3569,6 +3593,16 @@ msgstr ""
|
|||
"edición de la etiqueta será la que se conserve y el selector de color no "
|
||||
"aparecerá al hacer clic en ella."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
"Si se selecciona, las casillas de verificación se mostrarán en una columna. "
|
||||
"De lo contrario, aparecerán en línea."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3725,7 +3759,7 @@ msgstr "Intervalo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "Nombre para mostrar no válido"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3893,18 +3927,20 @@ msgid ""
|
|||
"It will be removed for everyone using the \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
msgstr ""
|
||||
"Se eliminará para todos los que utilicen \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "It will be removed for everyone!"
|
||||
msgstr ""
|
||||
msgstr "¡Se eliminará para todos!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Jan 31, %s"
|
||||
msgstr ""
|
||||
msgstr "31 Ene, %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4133,7 +4169,7 @@ msgstr "Etiqueta:"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_renderer.xml:0
|
||||
msgid "Lack of inspiration?"
|
||||
msgstr "¿Falta la inspiración?"
|
||||
msgstr "¿Te falta inspiración?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -4153,19 +4189,19 @@ msgstr "Grande"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "Últimos 12 meses"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Últimos 30 días"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Últimos 7 días"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4183,7 +4219,7 @@ msgstr "Última actualización el"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "El mes pasado"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4326,7 +4362,7 @@ msgstr "Cerrar sesión"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Usuario"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4481,12 +4517,12 @@ msgstr "Asunto de la reunión"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory limit (in bytes)"
|
||||
msgstr ""
|
||||
msgstr "Límite de memoria (en bytes)"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory profile"
|
||||
msgstr ""
|
||||
msgstr "Perfil de uso de memoria"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4532,6 +4568,12 @@ msgstr "Vía láctea"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Precisión mínima"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr "Mínimo de dígitos"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4560,7 +4602,7 @@ msgstr "Falta el ID del registro"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/record.js:0
|
||||
msgid "Missing required fields"
|
||||
msgstr ""
|
||||
msgstr "Faltan campos obligatorios"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4647,7 +4689,7 @@ msgstr "Mes"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Month to date"
|
||||
msgstr ""
|
||||
msgstr "Mes hasta la fecha"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4771,7 +4813,7 @@ msgstr "Mi cuenta de Odoo.com"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "My Preferences"
|
||||
msgstr ""
|
||||
msgstr "Mis preferencias"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4944,6 +4986,12 @@ msgstr "Sin datos"
|
|||
msgid "No data to display"
|
||||
msgstr "Sin datos que mostrar"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr "No hay datos para exportar"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4959,8 +5007,8 @@ msgstr "No se encontró ningún dispositivo."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Ningún emoji coincide con su búsqueda"
|
||||
msgid "No emojis match your search"
|
||||
msgstr "No hay emojis que coincidan con tu búsqueda"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5011,7 +5059,7 @@ msgstr "No se encontraron resultados"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "No hay resultados"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5023,7 +5071,7 @@ msgstr "No encontramos ningún ajuste"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_renderer.xml:0
|
||||
msgid "No stages yet, let's create some!"
|
||||
msgstr "Todavía no hay etapas creadas. ¡Cree una ahora!"
|
||||
msgstr "Todavía no hay etapas creadas. ¡Crea una ahora!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5067,6 +5115,8 @@ msgid ""
|
|||
"Not possible to create monetary field because there is no currency on "
|
||||
"current model."
|
||||
msgstr ""
|
||||
"No es posible crear un campo monetario porque no hay moneda en el modelo "
|
||||
"actual."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5237,7 +5287,6 @@ msgstr "¡Uy!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5374,7 +5423,7 @@ msgstr "Abrir: %s"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "Operator not supported"
|
||||
msgstr "Operador no permitido"
|
||||
msgstr "Operador no compatible"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5429,7 +5478,7 @@ msgstr "PC"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/pdf_viewer/pdf_viewer_field.js:0
|
||||
msgid "PDF Viewer"
|
||||
msgstr "Visor de PDF"
|
||||
msgstr "Lector de PDF"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5749,7 +5798,7 @@ msgstr "Propiedades"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_properties_base_definition
|
||||
msgid "Properties Base Definition"
|
||||
msgstr ""
|
||||
msgstr "Definición básica de propiedades"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5881,7 +5930,7 @@ msgstr "Reglas de registro"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "Record memory"
|
||||
msgstr ""
|
||||
msgstr "Memoria de registro"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5935,7 +5984,7 @@ msgstr "Actualizar"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu_items.js:0
|
||||
msgid "Regenerate Assets"
|
||||
msgstr "Regenerar activos"
|
||||
msgstr "Volver a generar activos"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6517,7 +6566,7 @@ msgstr "Establezca una zona horaria en su usuario"
|
|||
#: code:addons/web/static/src/views/fields/badge/badge_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/badge_selection/list_badge_selection_field.js:0
|
||||
msgid "Set an integer field to use colors with the badge."
|
||||
msgstr ""
|
||||
msgstr "Establece un campo entero para utilizar colores con la insignia."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6666,7 +6715,8 @@ msgid ""
|
|||
"Something went wrong... If you really are stuck, share the report with your "
|
||||
"friendly support service"
|
||||
msgstr ""
|
||||
"Ocurrió un error... Comuníquese con el equipo de soporte si necesita ayuda."
|
||||
"Se ha producido un error... Comunícate con el equipo de soporte si necesitas "
|
||||
"ayuda"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6683,10 +6733,11 @@ msgstr "Especial:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Apilado"
|
||||
|
|
@ -6788,7 +6839,7 @@ msgstr "Error de estilo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Sufijo"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7001,11 +7052,18 @@ msgstr "El dominio incluye no literales. La evaluación podría fallar."
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "El dominio no debe incluir no literales"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "El archivo no es una imagen, no es posible cambiar su tamaño"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
msgid "The ids in %(field_name)s must not be duplicated: “%(action_ids)s”"
|
||||
msgstr ""
|
||||
"Los identificadores de %(field_name)s no deben duplicarse: «%(action_ids)s»"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -7014,6 +7072,8 @@ msgid ""
|
|||
"The ids in %(field_name)s must only be integers or \"false\": “%"
|
||||
"(action_ids)s”"
|
||||
msgstr ""
|
||||
"Los identificadores de %(field_name)s solo deben ser números enteros o "
|
||||
"\"false\": «%(action_ids)s»"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7026,6 +7086,12 @@ msgstr ""
|
|||
"La operación fue interrumpida. Esto generalmente significa que la operación "
|
||||
"actual está tomando demasiado tiempo."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "El cambio de tamaño de la imagen no se ha realizado correctamente"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7061,6 +7127,8 @@ msgid ""
|
|||
"The user should have one unique embedded action setting per user setting, "
|
||||
"action and record id."
|
||||
msgstr ""
|
||||
"El usuario debe tener una configuración de acción integrada única por cada "
|
||||
"configuración de usuario, acción e identificador de registro."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7260,7 +7328,7 @@ msgstr "Alternar panel de búsqueda"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/datetime/datetime_picker.xml:0
|
||||
msgid "Toggle date range mode"
|
||||
msgstr ""
|
||||
msgstr "Alternar modo de rango de fechas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7640,6 +7708,8 @@ msgid ""
|
|||
"Use the operators \"+=\", \"-=\", \"*=\" and \"/=\" to update the current "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Utiliza los operadores «+=», «-=», «*=» y «/=» para actualizar el valor "
|
||||
"actual."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7687,12 +7757,12 @@ msgstr "Interfaz de usuario"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Ajustes de usuario"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
msgid "User Settings for Embedded Actions"
|
||||
msgstr ""
|
||||
msgstr "Configuración del usuario para acciones integradas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7820,7 +7890,7 @@ msgstr "Vista: %(displayName)s"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_viewer/file_viewer.xml:0
|
||||
msgid "Viewer"
|
||||
msgstr "Visor"
|
||||
msgstr "Lector"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7851,6 +7921,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Advertencia"
|
||||
|
||||
|
|
@ -7988,7 +8059,7 @@ msgstr "Año"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Year to date"
|
||||
msgstr ""
|
||||
msgstr "Desde el inicio del año hasta la fecha"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8037,7 +8108,7 @@ msgstr "Puede instalar la aplicación desde el menú del navegador"
|
|||
#. odoo-python
|
||||
#: code:addons/web/models/properties_base_definition.py:0
|
||||
msgid "You can not read that field definition."
|
||||
msgstr ""
|
||||
msgstr "No se puede leer esa definición de campo."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8259,7 +8330,7 @@ msgstr "esculapio"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "después de"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9236,7 +9307,7 @@ msgstr "escarabajo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "before"
|
||||
msgstr ""
|
||||
msgstr "antes de"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12859,7 +12930,7 @@ msgstr "empanada"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/blank_component.xml:0
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "vacío"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14689,7 +14760,7 @@ msgstr "saltamontes"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater or equal to"
|
||||
msgstr ""
|
||||
msgstr "mayor o igual a"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -16081,13 +16152,13 @@ msgstr "no está en"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "is not set"
|
||||
msgstr "no está establecida(o)"
|
||||
msgstr "no está definido"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "is set"
|
||||
msgstr "está establecida(o)"
|
||||
msgstr "está definido"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -16933,7 +17004,7 @@ msgstr "luces"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "like"
|
||||
msgstr "como"
|
||||
msgstr "contiene"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17155,13 +17226,13 @@ msgstr "brillo bajo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower or equal to"
|
||||
msgstr ""
|
||||
msgstr "inferior o igual a"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower than"
|
||||
msgstr ""
|
||||
msgstr "inferior a"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17875,7 +17946,7 @@ msgstr "masaje"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "match"
|
||||
msgstr "coincidencia"
|
||||
msgstr "coincidence con"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17887,7 +17958,7 @@ msgstr "no coinciden con ninguno de"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "matches"
|
||||
msgstr "coincidencias"
|
||||
msgstr "coincidence con"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18901,7 +18972,7 @@ msgstr "prohibido el paso de peatones"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor.xml:0
|
||||
msgid "no records"
|
||||
msgstr ""
|
||||
msgstr "sin registros"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18979,7 +19050,6 @@ msgstr "no"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
#, fuzzy
|
||||
msgid "not %(operator_label)s"
|
||||
msgstr "no %(operator_label)s"
|
||||
|
||||
|
|
@ -19000,7 +19070,7 @@ msgstr "no todos"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "not like"
|
||||
msgstr "no como"
|
||||
msgstr "no contiene"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19078,7 +19148,7 @@ msgstr "octagonal"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "octopus"
|
||||
msgstr "pulpo"
|
||||
msgstr "octopus"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19362,14 +19432,14 @@ msgstr "disco óptico"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/autocomplete/autocomplete.xml:0
|
||||
msgid "option.label"
|
||||
msgstr ""
|
||||
msgstr "option.label"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/record_selectors/record_autocomplete.xml:0
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.xml:0
|
||||
msgid "optionScope.label"
|
||||
msgstr ""
|
||||
msgstr "optionScope.label"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -23616,7 +23686,7 @@ msgstr "cara sonriendo con estrellas"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "starts with"
|
||||
msgstr "inicia con"
|
||||
msgstr "empieza con"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -27002,6 +27072,12 @@ msgstr "“disponible”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Ningún emoji coincide con su búsqueda"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Ángulo"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -37,21 +37,23 @@
|
|||
# Ossi Mantylahti <ossi.mantylahti@obs-solutions.fi>, 2023
|
||||
# Karoliina Nisula <karoliina.nisula@tawasta.fi>, 2023
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# Saara Hakanen <sahak@odoo.com>, 2025, 2026.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 15:31+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"Language-Team: Finnish <https://translate.odoo.com/projects/odoo-19/web/fi/"
|
||||
">\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-03-06 17:47+0000\n"
|
||||
"Last-Translator: Saara Hakanen <sahak@odoo.com>\n"
|
||||
"Language-Team: Finnish <https://translate.odoo.com/projects/odoo-19/web/fi/>"
|
||||
"\n"
|
||||
"Language: fi\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.16.1\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -328,7 +330,7 @@ msgstr "3.30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -509,6 +511,17 @@ msgid ""
|
|||
"Temporal mode will merge all samples.<br/>It can lead to partially invalid "
|
||||
"result in case of concurrent profiles.<br/>Use with caution </span>"
|
||||
msgstr ""
|
||||
"<select class=\"form-select\" name=\"profile_aggregation_mode\" "
|
||||
"id=\"profile_aggregation_mode\">\n"
|
||||
" <option value=\"tabs\">Eroteltu (yksi per "
|
||||
"välilehti)</option>\n"
|
||||
" <option value=\"temporal\">Väliaikainen "
|
||||
"(kokeellinen)</option>\n"
|
||||
" </select>\n"
|
||||
" <span id=\"temporal_warning\" class=\"alert "
|
||||
"alert-warning\" style=\"display:none\"><b>Varoitus:</b> Väliaikainen-tila "
|
||||
"yhdistää kaikki näytteet.<br/>Se voi johtaa osittain virheelliseen tulokseen "
|
||||
"samanaikaisten profiilien tapauksessa.<br/>Käytä harkiten </span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -568,8 +581,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -879,7 +892,7 @@ msgstr "Aktivoi debug-tila (resurssien kanssa)"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/widgets/res_config_dev_tool.xml:0
|
||||
msgid "Activate the developer mode"
|
||||
msgstr "Käynnistä kehitystila"
|
||||
msgstr "Aktivoi kehittäjätila"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -925,7 +938,7 @@ msgstr "Lisää kuva"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "Add Property"
|
||||
msgstr ""
|
||||
msgstr "Lisää ominaisuus"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1192,13 +1205,13 @@ msgstr "Oletko varma, että haluat poistaa tämän upotetun toiminnon?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the %(nbSelected)s selected records?"
|
||||
msgstr ""
|
||||
msgstr "Haluatko varmasti poistaa %(nbSelected)s valitut tietueet?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the selected record?"
|
||||
msgstr ""
|
||||
msgstr "Haluatko varmasti poistaa valitun tietueen?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1216,7 +1229,7 @@ msgstr "Haluatko varmasti poistaa tämän sarakkeen?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "Are you sure you want to delete this property field?"
|
||||
msgstr ""
|
||||
msgstr "Haluatko varmasti poistaa tämän ominaisuuskentän?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1412,7 +1425,7 @@ msgstr "Viivakoodinlukija"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/barcode/barcode_video_scanner.js:0
|
||||
msgid "Barcode Video Scanner could not be mounted properly."
|
||||
msgstr "Viivakoodivideoskanneria ei voitu asentaa oikein."
|
||||
msgstr "Videon viivakoodinlukijaa ei voitu asentaa oikein."
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_base
|
||||
|
|
@ -2205,7 +2218,7 @@ msgstr "Valuutta"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Valuuttakenttä"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2260,7 +2273,7 @@ msgstr "Räätälöity ryhmä"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Custom range"
|
||||
msgstr ""
|
||||
msgstr "Mukautettu väli"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -2327,7 +2340,7 @@ msgstr "Päiväys ja aika"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Päivämäärän muotoilu"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2443,7 +2456,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/image/image_field.js:0
|
||||
msgid "Delay the apparition of the zoomed image with a value in milliseconds"
|
||||
msgstr "Viivyttää zoomatun kuvan näkymistä, arvo millisekunteina"
|
||||
msgstr "Viivytä suurennetun kuvan ilmestymistä, arvo millisekunneissa"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2637,6 +2650,8 @@ msgid ""
|
|||
"Displays or hides the seconds in the datetime value. Affect only the "
|
||||
"readable datetime format."
|
||||
msgstr ""
|
||||
"Näyttää tai piilottaa sekunnit aikaleimassa. Vaikuttaa vain luettavaan "
|
||||
"päivämäärä- ja kellonaikamuotoon."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2649,6 +2664,7 @@ msgstr "Näyttää tai piilottaa ajan datetime-arvossa."
|
|||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Displays the date either in 31/01/%(year)s or in Jan 31, %(year)s"
|
||||
msgstr ""
|
||||
"Näyttää päivämäärän joko muodossa 31/01/%(year)s tai 31. tammikuuta %(year)s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2758,7 +2774,7 @@ msgstr "Piirrä"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record.xml:0
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Alasvetovalikko"
|
||||
msgstr "Pudotusvalikko"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2766,7 +2782,7 @@ msgstr "Alasvetovalikko"
|
|||
#: code:addons/web/static/src/views/kanban/kanban_controller.js:0
|
||||
#: code:addons/web/static/src/views/list/list_controller.js:0
|
||||
msgid "Duplicate"
|
||||
msgstr "Kopioi"
|
||||
msgstr "Monista"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2779,13 +2795,13 @@ msgstr "Kopioi"
|
|||
#: code:addons/web/static/src/views/fields/text/text_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/url/url_field.js:0
|
||||
msgid "Dynamic Placeholder"
|
||||
msgstr "Dynaaminen paikanvaraaja"
|
||||
msgstr "Dynaaminen paikkamerkki"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/many2one/many2one_field.js:0
|
||||
msgid "Dynamic placeholder"
|
||||
msgstr "Dynaaminen paikanvaraaja"
|
||||
msgstr "Dynaaminen paikkamerkki"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2872,7 +2888,7 @@ msgstr "Sähköposti"
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings__embedded_actions_config_ids
|
||||
msgid "Embedded Actions Config"
|
||||
msgstr ""
|
||||
msgstr "Upotettujen toimintojen asetukset"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2896,7 +2912,7 @@ msgstr "Ota profilointi käyttöön"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/image/image_field.js:0
|
||||
msgid "Enable zoom"
|
||||
msgstr "Ota zoom käyttöön"
|
||||
msgstr "Ota suurennus käyttöön"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3049,7 +3065,7 @@ msgstr "Kerroin"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/search_model.js:0
|
||||
msgid "Failed to evaluate the context: %(context)s."
|
||||
msgstr "Kontekstin arviointi epäonnistui: %(context)s"
|
||||
msgstr "Kontekstin arvioiminen epäonnistui: %(context)s."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3239,6 +3255,8 @@ msgid ""
|
|||
"For example, if the value is \"1\" and you enter \"+=2\", it will be updated "
|
||||
"to \"3\"."
|
||||
msgstr ""
|
||||
"Esimerkiksi, jos arvo on \"1\" ja syötät \"+=2\", se päivitetään arvoon "
|
||||
"\"3\"."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3417,6 +3435,9 @@ msgid ""
|
|||
"click the %(upload_icon)s button now to ensure your work is saved before you "
|
||||
"exit this tab."
|
||||
msgstr ""
|
||||
"Huomio! Viimeaikaiset muutoksesi ovat liian suuria tallennettavaksi "
|
||||
"automaattisesti. Klikkaa %(upload_icon)s-painiketta nyt varmistaaksesi työsi "
|
||||
"tallentumisen ennen tästä välilehdestä poistumista."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3487,7 +3508,7 @@ msgstr "Kotivalikko"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Tunti"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3587,6 +3608,16 @@ msgstr ""
|
|||
"valinta on ensisijainen. Värinvalitsin ei tule näkyviin, kun tunnistetta "
|
||||
"napsautetaan."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
"Jos valittu, valintaruudut näytetään sarakkeessa. Muussa tapauksessa ne "
|
||||
"näytetään rivillä."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3739,7 +3770,7 @@ msgstr "Aikaväli"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "Virheellinen näyttönimi"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3903,18 +3934,20 @@ msgid ""
|
|||
"It will be removed for everyone using the \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
msgstr ""
|
||||
"Se poistetaan kaikilta, jotka käyttävät \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "It will be removed for everyone!"
|
||||
msgstr ""
|
||||
msgstr "Se poistetaan kaikilta!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Jan 31, %s"
|
||||
msgstr ""
|
||||
msgstr "31. tammikuuta %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4163,19 +4196,19 @@ msgstr "Suuri"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "Viimeiset 12 kuukautta"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Viimeiset 30 päivää"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Viimeiset 7 päivää"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4193,7 +4226,7 @@ msgstr "Viimeksi päivitetty"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Viime kuukausi"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4336,7 +4369,7 @@ msgstr "Kirjaudu ulos"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Kirjaudu"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4490,12 +4523,12 @@ msgstr "Tapaamisen aihe"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory limit (in bytes)"
|
||||
msgstr ""
|
||||
msgstr "Muistiraja (tavua)"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory profile"
|
||||
msgstr ""
|
||||
msgstr "Muistiprofiili"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4541,6 +4574,12 @@ msgstr "Linnunrata"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Minimaalinen tarkkuus"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr "Vähimmäismerkkimäärä"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4569,7 +4608,7 @@ msgstr "Tietueen id puuttuu"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/record.js:0
|
||||
msgid "Missing required fields"
|
||||
msgstr ""
|
||||
msgstr "Pakollisia kenttiä puuttuu"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4656,7 +4695,7 @@ msgstr "Kuukausi"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Month to date"
|
||||
msgstr ""
|
||||
msgstr "Kuukauden alusta tähän päivään"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4780,7 +4819,7 @@ msgstr "Oma Odoo.com -tilini"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "My Preferences"
|
||||
msgstr ""
|
||||
msgstr "Omat asetukseni"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4953,6 +4992,12 @@ msgstr "Ei tietoja"
|
|||
msgid "No data to display"
|
||||
msgstr "Ei näytettävää dataa"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr "Ei vietäviä tietoja"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4968,8 +5013,8 @@ msgstr "Laitetta ei löydy."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Mikään hymiö ei vastaa hakuasi"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5020,7 +5065,7 @@ msgstr "Tuloksia ei löydetty"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Ei tuloksia"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5076,6 +5121,8 @@ msgid ""
|
|||
"Not possible to create monetary field because there is no currency on "
|
||||
"current model."
|
||||
msgstr ""
|
||||
"Rahakentän luominen ei ole mahdollista, koska nykyisessä mallissa ei ole "
|
||||
"valuuttaa."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5246,7 +5293,6 @@ msgstr "Voi rähmä!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5462,7 +5508,7 @@ msgstr "Sivu <span class=\"page\"/> / <span class=\"topage\"/>"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/pager/pager.xml:0
|
||||
msgid "Pager"
|
||||
msgstr "Sivutus"
|
||||
msgstr "Sivut"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__paperformat_id
|
||||
|
|
@ -5758,7 +5804,7 @@ msgstr "Ominaisuudet"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_properties_base_definition
|
||||
msgid "Properties Base Definition"
|
||||
msgstr ""
|
||||
msgstr "Ominaisuuksien perusmääritelmä"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5889,7 +5935,7 @@ msgstr "Tietuesäännöt"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "Record memory"
|
||||
msgstr ""
|
||||
msgstr "Tietueen muisti"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6068,7 +6114,7 @@ msgstr "Palauta"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_viewer/file_viewer.xml:0
|
||||
msgid "Reset Zoom (0)"
|
||||
msgstr "Nollaa zoom"
|
||||
msgstr "Nollaa suurennus (0)"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6525,7 +6571,7 @@ msgstr "Aseta käyttäjän aikavyöhyke"
|
|||
#: code:addons/web/static/src/views/fields/badge/badge_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/badge_selection/list_badge_selection_field.js:0
|
||||
msgid "Set an integer field to use colors with the badge."
|
||||
msgstr ""
|
||||
msgstr "Aseta kokonaislukukenttä käyttääksesi värejä tunnuksen kanssa."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6673,7 +6719,9 @@ msgstr "Jotain kamalaa tapahtui"
|
|||
msgid ""
|
||||
"Something went wrong... If you really are stuck, share the report with your "
|
||||
"friendly support service"
|
||||
msgstr "Jokin meni pieleen. Lähetä raportti tukipalvelulle tiedoksi"
|
||||
msgstr ""
|
||||
"Jotain meni pieleen... Jos todella olet pulassa, jaa raportti ystävälliselle "
|
||||
"tukipalvelulle"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6690,10 +6738,11 @@ msgstr "Erityinen:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Pinottu"
|
||||
|
|
@ -6795,7 +6844,7 @@ msgstr "Tyylivirhe"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Pääte"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6867,7 +6916,7 @@ msgstr "TV"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Tagline"
|
||||
msgstr "Sivuston kuvaus"
|
||||
msgstr "Kuvaus"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6923,7 +6972,7 @@ msgstr "Härkä"
|
|||
#: model_terms:ir.ui.view,arch_db:web.external_layout_striped
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_wave
|
||||
msgid "Tax ID"
|
||||
msgstr "ALV-numero"
|
||||
msgstr "Verotunniste"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7008,11 +7057,17 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "Hakualue ei saa sisältää muita kuin literaaleja"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "Tiedosto ei ole kuva, kokoa ei voi muuttaa"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
msgid "The ids in %(field_name)s must not be duplicated: “%(action_ids)s”"
|
||||
msgstr ""
|
||||
msgstr "Tunnuksia %(field_name)s -kentässä ei saa monistaa: ”%(action_ids)s”"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -7021,6 +7076,8 @@ msgid ""
|
|||
"The ids in %(field_name)s must only be integers or \"false\": “%"
|
||||
"(action_ids)s”"
|
||||
msgstr ""
|
||||
"%(field_name)s -kentän tunnusten on oltava kokonaislukuja tai \"false\": \"%"
|
||||
"(action_ids)s\""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7033,6 +7090,12 @@ msgstr ""
|
|||
"Operaatio keskeytettiin. Tämä tarkoittaa yleensä sitä, että nykyinen "
|
||||
"toiminto vie liikaa aikaa."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "Kuvan koon muuttaminen epäonnistui"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7068,6 +7131,8 @@ msgid ""
|
|||
"The user should have one unique embedded action setting per user setting, "
|
||||
"action and record id."
|
||||
msgstr ""
|
||||
"Käyttäjällä tulisi olla yksi upotettu toimintoasetus per käyttäjäasetus, "
|
||||
"toiminto ja tietueen tunnus."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7258,13 +7323,13 @@ msgstr "Kytke"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/search_bar_menu/search_bar_menu.xml:0
|
||||
msgid "Toggle Search Panel"
|
||||
msgstr "Vaihda hakupaneelia"
|
||||
msgstr "Näytä/piilota hakupaneeli"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/datetime/datetime_picker.xml:0
|
||||
msgid "Toggle date range mode"
|
||||
msgstr ""
|
||||
msgstr "Vaihda aikavälin tilaa"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7363,8 +7428,8 @@ msgid ""
|
|||
"Try to add some records, or make sure that there is no\n"
|
||||
" active filter in the search bar."
|
||||
msgstr ""
|
||||
"Yritä lisätä joitakin tietueita tai varmista, että hakupalkissa\\n\n"
|
||||
" ei ole asetettuna suodatinta."
|
||||
"Yritä lisätä tietueita tai varmista, ettei hakupalkissa\n"
|
||||
" ole aktiivista suodatinta."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7643,6 +7708,8 @@ msgid ""
|
|||
"Use the operators \"+=\", \"-=\", \"*=\" and \"/=\" to update the current "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Käytä toimintoja \"+=\", \"-=\", \"*=\" ja \"/=\" päivittääksesi nykyisen "
|
||||
"arvon."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7688,12 +7755,12 @@ msgstr "Käyttöliittymä"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Käyttäjäasetukset"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
msgid "User Settings for Embedded Actions"
|
||||
msgstr ""
|
||||
msgstr "Sisäänrakennettujen toimintojen käyttäjäasetukset"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7852,6 +7919,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Varoitus"
|
||||
|
||||
|
|
@ -7990,7 +8058,7 @@ msgstr "Vuosi"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Year to date"
|
||||
msgstr ""
|
||||
msgstr "Vuoden alusta"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8039,7 +8107,7 @@ msgstr "Voit asentaa sovelluksen selaimen valikosta"
|
|||
#. odoo-python
|
||||
#: code:addons/web/models/properties_base_definition.py:0
|
||||
msgid "You can not read that field definition."
|
||||
msgstr ""
|
||||
msgstr "Et voi lukea tätä kentän määritelmää."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8122,19 +8190,19 @@ msgstr "ZZZ"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_viewer/file_viewer.xml:0
|
||||
msgid "Zoom In (+)"
|
||||
msgstr "Lähennä"
|
||||
msgstr "Suurenna (+)"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_viewer/file_viewer.xml:0
|
||||
msgid "Zoom Out (-)"
|
||||
msgstr "Loitonna"
|
||||
msgstr "Loitonna (-)"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/image/image_field.js:0
|
||||
msgid "Zoom delay"
|
||||
msgstr "Zoomausviive"
|
||||
msgstr "Suurennusviive"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8260,7 +8328,7 @@ msgstr "aesculapius"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "jälkeen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9237,7 +9305,7 @@ msgstr "kuoriainen"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "before"
|
||||
msgstr ""
|
||||
msgstr "ennen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -11517,7 +11585,7 @@ msgstr "olento"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "credit"
|
||||
msgstr "luotto"
|
||||
msgstr "kredit"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12860,7 +12928,7 @@ msgstr "meksikolainen voileipä"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/blank_component.xml:0
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "tyhjä"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14690,7 +14758,7 @@ msgstr "heinäsirkka"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater or equal to"
|
||||
msgstr ""
|
||||
msgstr "suurempi tai yhtä suuri kuin"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -15500,13 +15568,13 @@ msgstr "hurraa"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "horizontal traffic light"
|
||||
msgstr "vaakasuora liikennevalo"
|
||||
msgstr "vaakasuuntainen liikennevalo"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "horizontal traffic lights"
|
||||
msgstr "vaakasuorat liikennevalot"
|
||||
msgstr "vaakasuuntaiset liikennevalot"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17156,13 +17224,13 @@ msgstr "vähäinen"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower or equal to"
|
||||
msgstr ""
|
||||
msgstr "pienempi tai yhtä pieni kuin"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower than"
|
||||
msgstr ""
|
||||
msgstr "pienempi kuin"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -24203,7 +24271,7 @@ msgstr "take away -astia"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "takeout"
|
||||
msgstr "mukaanotettava"
|
||||
msgstr "nouto"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -24551,13 +24619,13 @@ msgstr "huivi"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "tick"
|
||||
msgstr "punkki"
|
||||
msgstr "ruksi"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "tick box with tick"
|
||||
msgstr "rasti ruutuun rastitettuna"
|
||||
msgstr "ruksittu ruutu"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -24599,7 +24667,7 @@ msgstr "ajastinkello"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "tipping"
|
||||
msgstr "juomarahan keruu"
|
||||
msgstr "tipin antaminen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -27001,6 +27069,12 @@ msgstr "\"tilaa\""
|
|||
msgid "ココ"
|
||||
msgstr "täällä"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Mikään hymiö ei vastaa hakuasi"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Kulma"
|
||||
|
||||
|
|
|
|||
|
|
@ -10,13 +10,15 @@
|
|||
# Martin Trigaux, 2023
|
||||
# Jolien De Paepe, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Manon Rondou (ronm)" <ronm@odoo.com>, 2025, 2026.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-14 21:18+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-03-06 17:47+0000\n"
|
||||
"Last-Translator: \"Manon Rondou (ronm)\" <ronm@odoo.com>\n"
|
||||
"Language-Team: French <https://translate.odoo.com/projects/odoo-19/web/fr/>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -24,7 +26,7 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : ((n != 0 && n % "
|
||||
"1000000 == 0) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.16.1\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -61,7 +63,7 @@ msgstr "'%s' n'est pas une date ou une valeur datetime correcte"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_upload/file_upload_progress_record.js:0
|
||||
msgid "(%(mbLoaded)s/%(mbTotal)sMB)"
|
||||
msgstr "(%(mbLoaded)s/%(mbTotal)sMB)"
|
||||
msgstr "(%(mbLoaded)s/%(mbTotal)sMo)"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -301,7 +303,7 @@ msgstr "3.30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -482,6 +484,18 @@ msgid ""
|
|||
"Temporal mode will merge all samples.<br/>It can lead to partially invalid "
|
||||
"result in case of concurrent profiles.<br/>Use with caution </span>"
|
||||
msgstr ""
|
||||
"<select class=\"form-select\" name=\"profile_aggregation_mode\" "
|
||||
"id=\"profile_aggregation_mode\">\n"
|
||||
" <option value=\"tabs\">Séparé (un "
|
||||
"par onglet)</option>\n"
|
||||
" <option value=\"temporal\">Temporel "
|
||||
"(expérimental)</option>\n"
|
||||
" </select>\n"
|
||||
" <span id=\"temporal_warning\" "
|
||||
"class=\"alert alert-warning\" style=\"display:none\"><b>Attention :</b> Le "
|
||||
"mode temporel fusionnera tous les échantillons.<br/>Cela peut entraîner un "
|
||||
"résultat partiellement invalide en cas de profils concurrents.<br/>À "
|
||||
"utiliser avec prudence.</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -541,8 +555,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -898,7 +912,7 @@ msgstr "Ajouter une photo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "Add Property"
|
||||
msgstr ""
|
||||
msgstr "Ajouter une propriété"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1168,12 +1182,14 @@ msgstr "Êtes-vous sûr de vouloir retirer cette action intégrée ?"
|
|||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the %(nbSelected)s selected records?"
|
||||
msgstr ""
|
||||
"Êtes-vous sûr de vouloir supprimer les %(nbSelected)s enregistrements "
|
||||
"sélectionnés ?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the selected record?"
|
||||
msgstr ""
|
||||
msgstr "Êtes-vous sûr de vouloir supprimer l’enregistrement sélectionné ?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1191,7 +1207,7 @@ msgstr "Êtes-vous sûr de vouloir supprimer cette colonne ?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "Are you sure you want to delete this property field?"
|
||||
msgstr ""
|
||||
msgstr "Êtes-vous sûr de vouloir supprimer ce champ de propriété ?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2090,7 +2106,7 @@ msgstr "Impossible de démarrer la numérisation. %(message)s"
|
|||
#: code:addons/web/static/src/views/kanban/progress_bar_hook.js:0
|
||||
#: code:addons/web/static/src/views/utils.js:0
|
||||
msgid "Count"
|
||||
msgstr "Comptage"
|
||||
msgstr "Nombre"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2181,7 +2197,7 @@ msgstr "Devise"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Champ devise"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2236,7 +2252,7 @@ msgstr "Groupe personnalisé"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Custom range"
|
||||
msgstr ""
|
||||
msgstr "Plage personnalisée"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -2303,7 +2319,7 @@ msgstr "Date & Temps"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Format de date"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2615,6 +2631,8 @@ msgid ""
|
|||
"Displays or hides the seconds in the datetime value. Affect only the "
|
||||
"readable datetime format."
|
||||
msgstr ""
|
||||
"Affiche ou masque les secondes dans la valeur date-heure. N’affecte que le "
|
||||
"format date-heure lisible."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2627,6 +2645,8 @@ msgstr "Affiche ou masque l'heure dans la valeur de la date."
|
|||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Displays the date either in 31/01/%(year)s or in Jan 31, %(year)s"
|
||||
msgstr ""
|
||||
"Affiche la date soit au format 31/01/%(year)s, soit au format 31 janv. %"
|
||||
"(year)s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2851,7 +2871,7 @@ msgstr "E-mail"
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings__embedded_actions_config_ids
|
||||
msgid "Embedded Actions Config"
|
||||
msgstr ""
|
||||
msgstr "Configuration des actions intégrées"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3218,6 +3238,8 @@ msgid ""
|
|||
"For example, if the value is \"1\" and you enter \"+=2\", it will be updated "
|
||||
"to \"3\"."
|
||||
msgstr ""
|
||||
"Par exemple, si la valeur est \"1\" et que vous saisissez \"+=2\", elle sera "
|
||||
"mise à jour à \"3\"."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3395,6 +3417,9 @@ msgid ""
|
|||
"click the %(upload_icon)s button now to ensure your work is saved before you "
|
||||
"exit this tab."
|
||||
msgstr ""
|
||||
"Attention ! Vos modifications récentes sont trop volumineuses pour être "
|
||||
"enregistrées automatiquement. Cliquez sur le bouton %(upload_icon)s pour "
|
||||
"garantir l’enregistrement de votre travail avant de quitter cet onglet."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3465,7 +3490,7 @@ msgstr "Menu de la page d'accueil"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Heure"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3568,6 +3593,16 @@ msgstr ""
|
|||
"défini, la modification de l'étiquette prévaudra. Par conséquent, le "
|
||||
"sélecteur de couleur ne s’affichera pas en cliquant sur l'étiquette."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
"Si cette option est cochée, les cases à cocher seront affichées en colonne. "
|
||||
"Sinon, elles seront affichées en ligne."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3650,7 +3685,7 @@ msgstr "ID d'enregistrement inaccessible/manquant : %s"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/domain_selector/domain_selector.xml:0
|
||||
msgid "Include archived"
|
||||
msgstr "Inclure les archivés"
|
||||
msgstr "Inclure les archives"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3724,7 +3759,7 @@ msgstr "Intervalle"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "Nom d'affichage invalide"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3889,18 +3924,20 @@ msgid ""
|
|||
"It will be removed for everyone using the \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
msgstr ""
|
||||
"Cet élément sera supprimé pour tous les utilisateurs du/ de \"%"
|
||||
"(parentName)s\" %(parentFieldLabel)s."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "It will be removed for everyone!"
|
||||
msgstr ""
|
||||
msgstr "Cet élément sera supprimé pour tout le monde !"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Jan 31, %s"
|
||||
msgstr ""
|
||||
msgstr "31 janv. %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4149,19 +4186,19 @@ msgstr "Grande"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "12 derniers mois"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "30 derniers jours"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "7 derniers jours"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4179,7 +4216,7 @@ msgstr "Mis à jour le"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Le mois dernier"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4322,7 +4359,7 @@ msgstr "Se déconnecter"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Se connecter"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4478,12 +4515,12 @@ msgstr "Sujet de la réunion"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory limit (in bytes)"
|
||||
msgstr ""
|
||||
msgstr "Limite mémoire (en bytes)"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory profile"
|
||||
msgstr ""
|
||||
msgstr "Profil mémoire"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4529,6 +4566,12 @@ msgstr "voie lactée"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Précision minimale"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr "Nombre minimum de chiffres"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4557,7 +4600,7 @@ msgstr "ID d'enregistrement manquant"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/record.js:0
|
||||
msgid "Missing required fields"
|
||||
msgstr ""
|
||||
msgstr "Champs obligatoires manquants"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4644,7 +4687,7 @@ msgstr "Mois"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Month to date"
|
||||
msgstr ""
|
||||
msgstr "Depuis le début du mois"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4768,7 +4811,7 @@ msgstr "Mon compte Odoo.com"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "My Preferences"
|
||||
msgstr ""
|
||||
msgstr "Mes préférences"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4941,6 +4984,12 @@ msgstr "Pas de données"
|
|||
msgid "No data to display"
|
||||
msgstr "Aucune donnée à afficher"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr "Aucune donnée à exporter"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4956,7 +5005,7 @@ msgstr "Aucun appareil ne peut être trouvé."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr "Aucun emoji ne correspond à votre recherche"
|
||||
|
||||
#. module: web
|
||||
|
|
@ -5008,7 +5057,7 @@ msgstr "Aucun résultat trouvé"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Aucun résultat"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5064,6 +5113,8 @@ msgid ""
|
|||
"Not possible to create monetary field because there is no currency on "
|
||||
"current model."
|
||||
msgstr ""
|
||||
"Impossible de créer un champ monétaire car aucune devise n’est définie sur "
|
||||
"le modèle actuel."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5234,7 +5285,6 @@ msgstr "Oh mince !"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5752,7 +5802,7 @@ msgstr "Propriétés"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_properties_base_definition
|
||||
msgid "Properties Base Definition"
|
||||
msgstr ""
|
||||
msgstr "Définition de base des propriétés"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5883,7 +5933,7 @@ msgstr "Règles sur les enregistrements"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "Record memory"
|
||||
msgstr ""
|
||||
msgstr "Mémoire de l’enregistrement"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6519,7 +6569,7 @@ msgstr "Définir un fuseau horaire pour votre utilisateur"
|
|||
#: code:addons/web/static/src/views/fields/badge/badge_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/badge_selection/list_badge_selection_field.js:0
|
||||
msgid "Set an integer field to use colors with the badge."
|
||||
msgstr ""
|
||||
msgstr "Définissez un champ entier pour utiliser des couleurs avec le badge."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6687,10 +6737,11 @@ msgstr "Spécial :"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Empilé"
|
||||
|
|
@ -6792,7 +6843,7 @@ msgstr "Erreur de style"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Suffixe"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7007,11 +7058,19 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "Le domaine ne peut pas contenir d’éléments non littéraux"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "Le fichier n’est pas une image, le redimensionnement est impossible"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
msgid "The ids in %(field_name)s must not be duplicated: “%(action_ids)s”"
|
||||
msgstr ""
|
||||
"Les ids dans %(field_name)s ne doivent pas être dupliqués : \"%"
|
||||
"(action_ids)s\""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -7020,6 +7079,8 @@ msgid ""
|
|||
"The ids in %(field_name)s must only be integers or \"false\": “%"
|
||||
"(action_ids)s”"
|
||||
msgstr ""
|
||||
"Les ids dans %(field_name)s doivent uniquement être des entiers ou "
|
||||
"\"false\" : \"%(action_ids)s\""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7032,6 +7093,12 @@ msgstr ""
|
|||
"L'opération a été interrompue. Cela signifie souvent que l'opération en "
|
||||
"cours prend trop de temps."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "Le redimensionnement de l'image a échoué"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7067,6 +7134,8 @@ msgid ""
|
|||
"The user should have one unique embedded action setting per user setting, "
|
||||
"action and record id."
|
||||
msgstr ""
|
||||
"L’utilisateur doit avoir un paramètre d’action intégrée unique par paramètre "
|
||||
"utilisateur, action et identifiant d’enregistrement."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7266,7 +7335,7 @@ msgstr "Toggle panneau de recherche"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/datetime/datetime_picker.xml:0
|
||||
msgid "Toggle date range mode"
|
||||
msgstr ""
|
||||
msgstr "Basculer en mode plage de dates"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7649,6 +7718,8 @@ msgid ""
|
|||
"Use the operators \"+=\", \"-=\", \"*=\" and \"/=\" to update the current "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Utilisez les opérateurs +=, -=, *= et /= pour mettre à jour la valeur "
|
||||
"actuelle."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7695,12 +7766,12 @@ msgstr "Interface utilisateur"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres utilisateur"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
msgid "User Settings for Embedded Actions"
|
||||
msgstr ""
|
||||
msgstr "Paramètres utilisateur pour les actions intégrées"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7787,7 +7858,7 @@ msgstr "Vidéo"
|
|||
#: code:addons/web/static/src/views/list/list_renderer.xml:0
|
||||
#: model:ir.model,name:web.model_ir_ui_view
|
||||
msgid "View"
|
||||
msgstr "Ouvrir"
|
||||
msgstr "Voir"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7860,6 +7931,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Avertissement"
|
||||
|
||||
|
|
@ -7999,7 +8071,7 @@ msgstr "Année"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Year to date"
|
||||
msgstr ""
|
||||
msgstr "Depuis le début de l’année"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8048,7 +8120,7 @@ msgstr "Vous pouvez installer l'application depuis le menu du navigateur"
|
|||
#. odoo-python
|
||||
#: code:addons/web/models/properties_base_definition.py:0
|
||||
msgid "You can not read that field definition."
|
||||
msgstr ""
|
||||
msgstr "Vous ne pouvez pas lire cette définition de champ."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8271,7 +8343,7 @@ msgstr "aesculapius"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "après"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9248,7 +9320,7 @@ msgstr "scarabée"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "before"
|
||||
msgstr ""
|
||||
msgstr "avant"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12871,7 +12943,7 @@ msgstr "empanada"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/blank_component.xml:0
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "vide"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14035,7 +14107,7 @@ msgstr "interdit"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "forever"
|
||||
msgstr "toujours"
|
||||
msgstr "pour toujours"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14701,7 +14773,7 @@ msgstr "sauterelle"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater or equal to"
|
||||
msgstr ""
|
||||
msgstr "supérieur ou égal à"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17167,13 +17239,13 @@ msgstr "faible"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower or equal to"
|
||||
msgstr ""
|
||||
msgstr "inférieur ou égal à"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower than"
|
||||
msgstr ""
|
||||
msgstr "inférieur à"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18763,7 +18835,7 @@ msgstr "nerveux"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "net"
|
||||
msgstr "filet"
|
||||
msgstr "net"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -20972,7 +21044,7 @@ msgstr "professeur"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "prohibited"
|
||||
msgstr "prohibé"
|
||||
msgstr "interdit"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -27013,6 +27085,12 @@ msgstr "\"chambres disponibles\""
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Aucun emoji ne correspond à votre recherche"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Angle"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -17,13 +17,16 @@
|
|||
# gezza <geza.nagy@oregional.hu>, 2023
|
||||
# Szabolcs Rádi, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
# Krisztián Juhász <juhasz.krisztian@uzletimegoldasok.hu>, 2025.
|
||||
# Tommy Gombar <tommy.gombar@kilafornia.net>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-29 19:47+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-02-17 12:43+0000\n"
|
||||
"Last-Translator: Tommy Gombar <tommy.gombar@kilafornia.net>\n"
|
||||
"Language-Team: Hungarian <https://translate.odoo.com/projects/odoo-19/web/hu/"
|
||||
">\n"
|
||||
"Language: hu\n"
|
||||
|
|
@ -31,7 +34,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -540,7 +543,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -1646,7 +1649,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/user_switch/user_switch.xml:0
|
||||
msgid "Choose a user"
|
||||
msgstr ""
|
||||
msgstr "Felhasználó választás"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1717,7 +1720,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record.xml:0
|
||||
msgid "Click to select"
|
||||
msgstr ""
|
||||
msgstr "Kattintson a kiválasztáshoz"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2148,7 +2151,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/tabs/color_picker_custom_tab.js:0
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
msgstr "Egyéni"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2257,7 +2260,7 @@ msgstr "Dátum és idő"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Dátum Formátum"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2943,7 +2946,7 @@ msgstr "Külső azonosító"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_field.js:0
|
||||
msgid "Extra Rights"
|
||||
msgstr ""
|
||||
msgstr "Extra jogok"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3282,7 +3285,7 @@ msgstr "Zöld"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_popover.xml:0
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
msgstr "Csoport"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3300,7 +3303,7 @@ msgstr "Csoportosítás"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.js:0
|
||||
msgid "HTML"
|
||||
msgstr ""
|
||||
msgstr "HTML"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_ir_http
|
||||
|
|
@ -3337,7 +3340,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
msgstr "Súgó"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3400,7 +3403,7 @@ msgstr "Kezdő menü"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Óra"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3494,6 +3497,14 @@ msgid ""
|
|||
"prevail. So, the color picker will not be displayed on click on the tag."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4058,13 +4069,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Elmúlt 30 nap"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Elmúlt 7 nap"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4082,7 +4093,7 @@ msgstr "Frissítve"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Múlt hónap"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4225,7 +4236,7 @@ msgstr "Kijelentkezés"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Bejelentkezés"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4430,6 +4441,12 @@ msgstr ""
|
|||
msgid "Minimal precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4842,6 +4859,12 @@ msgstr "Nincs adat"
|
|||
msgid "No data to display"
|
||||
msgstr "Nincs megjeleníthető adat."
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4857,7 +4880,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -4909,7 +4932,7 @@ msgstr "Nem talál eredményt"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Nincs eredmény"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5131,7 +5154,6 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5216,7 +5238,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
msgstr "Megnyitás"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5332,7 +5354,7 @@ msgstr "PDF fájl"
|
|||
#: model_terms:ir.ui.view,arch_db:web.external_layout_striped
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_wave
|
||||
msgid "Page <span class=\"page\"/> / <span class=\"topage\"/>"
|
||||
msgstr ""
|
||||
msgstr "Oldal <span class=\"page\"/> / <span class=\"topage\"/>"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6166,7 +6188,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.js:0
|
||||
msgid "Search more..."
|
||||
msgstr ""
|
||||
msgstr "További keresés..."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6514,7 +6536,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/tabs/color_picker_solid_tab.js:0
|
||||
msgid "Solid"
|
||||
msgstr ""
|
||||
msgstr "Szolíd"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6555,6 +6577,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
|
@ -6656,7 +6679,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Utótag"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6867,6 +6890,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6890,6 +6919,12 @@ msgid ""
|
|||
"is taking too much time."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7373,7 +7408,7 @@ msgstr "Névtelen"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/list/list_confirmation_dialog.xml:0
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
msgstr "Frissítés"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7516,7 +7551,7 @@ msgstr "Felhasználói felület"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Felhasználói beállítások"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7680,6 +7715,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Figyelmeztetés"
|
||||
|
||||
|
|
@ -22073,7 +22109,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
#: code:addons/web/static/src/search/search_bar/search_bar.xml:0
|
||||
msgid "search"
|
||||
msgstr ""
|
||||
msgstr "keresés"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
|
|||
|
|
@ -11,13 +11,15 @@
|
|||
# Martin Trigaux, 2023
|
||||
# Abe Manyo, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Abe Manyo (abem)" <abem@odoo.com>, 2025, 2026.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 02:32+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-01-06 06:53+0000\n"
|
||||
"Last-Translator: \"Abe Manyo (abem)\" <abem@odoo.com>\n"
|
||||
"Language-Team: Indonesian <https://translate.odoo.com/projects/odoo-19/web/"
|
||||
"id/>\n"
|
||||
"Language: id\n"
|
||||
|
|
@ -25,7 +27,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -302,7 +304,7 @@ msgstr "3.30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -542,8 +544,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Penikmat Dekorasi</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -898,7 +900,7 @@ msgstr "Tambah Foto"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "Add Property"
|
||||
msgstr ""
|
||||
msgstr "Tambahkan Properti"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1165,12 +1167,13 @@ msgstr "Apakah Anda yakin bahwa Anda ingin menghapus action yang diembed ini?"
|
|||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the %(nbSelected)s selected records?"
|
||||
msgstr ""
|
||||
"Apakah Anda yakin ingin menghapus rekaman-rekaman terpilih %(nbSelected)s?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the selected record?"
|
||||
msgstr ""
|
||||
msgstr "Apakah Anda yakin ingin menghapus rekaman terpilih?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1188,7 +1191,7 @@ msgstr "Apakah Anda yakin ingin menghapus kolom ini?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "Are you sure you want to delete this property field?"
|
||||
msgstr ""
|
||||
msgstr "Apakah Anda yakin ingin menghapus field properti ini?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2177,7 +2180,7 @@ msgstr "Mata Uang"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Field mata uang"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2232,7 +2235,7 @@ msgstr "Kelompok Kustom"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Custom range"
|
||||
msgstr ""
|
||||
msgstr "Rentang kustom"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -2298,7 +2301,7 @@ msgstr "Tanggal & Waktu"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Format Tanggal"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2607,6 +2610,8 @@ msgid ""
|
|||
"Displays or hides the seconds in the datetime value. Affect only the "
|
||||
"readable datetime format."
|
||||
msgstr ""
|
||||
"Menampilkan atau menyembunyikkan detik-detik di value tanggalwaktu. "
|
||||
"Berdampak hanya pada format tanggalwaktu yang dapat dibaca."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2619,6 +2624,7 @@ msgstr "Tampilkan atau sembunyikan waktu di value datetime."
|
|||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Displays the date either in 31/01/%(year)s or in Jan 31, %(year)s"
|
||||
msgstr ""
|
||||
"Menampilkan tanggal baik dalam 31/01/%(year)s atau dalam Jan 31, %(year)s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2842,7 +2848,7 @@ msgstr "Email"
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings__embedded_actions_config_ids
|
||||
msgid "Embedded Actions Config"
|
||||
msgstr ""
|
||||
msgstr "Konfigurasi Tindakan yang Diembed"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3209,6 +3215,8 @@ msgid ""
|
|||
"For example, if the value is \"1\" and you enter \"+=2\", it will be updated "
|
||||
"to \"3\"."
|
||||
msgstr ""
|
||||
"Sebagai contoh, bila value adalah \"1\" dan Anda memasukkan \"+=2\", akan "
|
||||
"diupdate menjadi \"3\"."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3386,6 +3394,9 @@ msgid ""
|
|||
"click the %(upload_icon)s button now to ensure your work is saved before you "
|
||||
"exit this tab."
|
||||
msgstr ""
|
||||
"Siap-siap! Perubahan terkini Anda terlalu besar untuk disimpan otomatis. "
|
||||
"Silakan klik tombol %(upload_icon)s sekarang untuk memastikan pekerjaan Anda "
|
||||
"disimpan sebelum Anda keluar dari tab ini."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3456,7 +3467,7 @@ msgstr "Menu Home"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Jam"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3557,6 +3568,16 @@ msgstr ""
|
|||
"berlaku. Dengan kata lain, pemilih warna tidak akan ditampilkan bila tag "
|
||||
"diklik."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
"Bila dicentang, kotak centang akan ditampilkan dalam kolom. Bila tidak, akan "
|
||||
"inline."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3709,7 +3730,7 @@ msgstr "Interval"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "Nama Tampilan Tidak Valid"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3873,18 +3894,20 @@ msgid ""
|
|||
"It will be removed for everyone using the \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
msgstr ""
|
||||
"Akan dihapus untuk semua orang yang menggunakan \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "It will be removed for everyone!"
|
||||
msgstr ""
|
||||
msgstr "Akan dihapus untuk semua orang!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Jan 31, %s"
|
||||
msgstr ""
|
||||
msgstr "Jan 31, %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4133,19 +4156,19 @@ msgstr "Besar"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "12 bulan terakhir"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "30 hari terakhir"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "7 hari terakhir"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4163,7 +4186,7 @@ msgstr "Terakhir Diperbarui pada"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Bulan terakhir"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4306,7 +4329,7 @@ msgstr "Log keluar"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Log masuk"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4513,6 +4536,12 @@ msgstr "Milky Way"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Ketepatan minimum"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4541,7 +4570,7 @@ msgstr "Missing record id"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/record.js:0
|
||||
msgid "Missing required fields"
|
||||
msgstr ""
|
||||
msgstr "Field-field yang diperlukan kurang"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4628,7 +4657,7 @@ msgstr "Bulan"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Month to date"
|
||||
msgstr ""
|
||||
msgstr "Month to date"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4752,7 +4781,7 @@ msgstr "Akun Odoo.com Saya"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "My Preferences"
|
||||
msgstr ""
|
||||
msgstr "Preferensi Saya"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4925,6 +4954,12 @@ msgstr "Data tidak ada"
|
|||
msgid "No data to display"
|
||||
msgstr "Tidak data yang bisa ditampilkan"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4940,8 +4975,8 @@ msgstr "Tidak ada perangkat yang ditemukan"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Tidak ada emoji yang cocok dengan pencarian Anda"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4992,7 +5027,7 @@ msgstr "Tidak ada hasil yang ditemukan"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Tidak ada hasil"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5049,6 +5084,8 @@ msgid ""
|
|||
"Not possible to create monetary field because there is no currency on "
|
||||
"current model."
|
||||
msgstr ""
|
||||
"Tidak mungkin untuk membuat field moneter karena tidak ada mata uang di "
|
||||
"model saat ini."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5219,7 +5256,6 @@ msgstr "Oh snap!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5729,7 +5765,7 @@ msgstr "Properti"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_properties_base_definition
|
||||
msgid "Properties Base Definition"
|
||||
msgstr ""
|
||||
msgstr "Definisi Dasar Properti"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5860,7 +5896,7 @@ msgstr "Peraturan Record"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "Record memory"
|
||||
msgstr ""
|
||||
msgstr "Rekam memori"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6496,7 +6532,7 @@ msgstr "Pilih zona waktu untuk pengguna anda"
|
|||
#: code:addons/web/static/src/views/fields/badge/badge_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/badge_selection/list_badge_selection_field.js:0
|
||||
msgid "Set an integer field to use colors with the badge."
|
||||
msgstr ""
|
||||
msgstr "Tetapkan field integer untuk menggunakan warna-warna dengan lencana."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6663,10 +6699,11 @@ msgstr "Spesial:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Tertumpuk"
|
||||
|
|
@ -6768,7 +6805,7 @@ msgstr "Error style"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Sufiks"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6981,11 +7018,17 @@ msgstr "Domain melibatkan non-literal. Evaluasi mereka mungkin gagal."
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "Domain tidak seharusnya melibatkan non-literal"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "File bukan gambar, mengubah ukuran tidak dapat dilakukan"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
msgid "The ids in %(field_name)s must not be duplicated: “%(action_ids)s”"
|
||||
msgstr ""
|
||||
msgstr "Id di %(field_name)s tidak boleh diduplikasi: “%(action_ids)s”"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -6994,6 +7037,7 @@ msgid ""
|
|||
"The ids in %(field_name)s must only be integers or \"false\": “%"
|
||||
"(action_ids)s”"
|
||||
msgstr ""
|
||||
"Id di %(field_name)s hanya boleh integer atau \"false\": “%(action_ids)s”"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7004,6 +7048,12 @@ msgid ""
|
|||
"is taking too much time."
|
||||
msgstr "Operasi terganggu. Biasanya terjadi karena terlalu lama memakan waktu."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "Mengubah ukuran gambar gagal"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7038,6 +7088,8 @@ msgid ""
|
|||
"The user should have one unique embedded action setting per user setting, "
|
||||
"action and record id."
|
||||
msgstr ""
|
||||
"User harus memiliki satu action pengaturan diembed unik per pengaturan user, "
|
||||
"action dan id rekaman."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7235,7 +7287,7 @@ msgstr "Toggle Panel Pencarian"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/datetime/datetime_picker.xml:0
|
||||
msgid "Toggle date range mode"
|
||||
msgstr ""
|
||||
msgstr "Toggle mode rentang tanggal"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7613,6 +7665,8 @@ msgid ""
|
|||
"Use the operators \"+=\", \"-=\", \"*=\" and \"/=\" to update the current "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Gunakan operator \"+=\", \"-=\", \"*=\" dan \"/=\" untuk mengupdate value "
|
||||
"saat ini."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7660,12 +7714,12 @@ msgstr "Antamuka Pengguna"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Pengaturan User"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
msgid "User Settings for Embedded Actions"
|
||||
msgstr ""
|
||||
msgstr "Pengaturan User untuk Action yang Diembed"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7824,6 +7878,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Peringatan"
|
||||
|
||||
|
|
@ -7958,7 +8013,7 @@ msgstr "Tahun"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Year to date"
|
||||
msgstr ""
|
||||
msgstr "Year to date"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8007,7 +8062,7 @@ msgstr "Anda dapat menginstal app dari menu browser"
|
|||
#. odoo-python
|
||||
#: code:addons/web/models/properties_base_definition.py:0
|
||||
msgid "You can not read that field definition."
|
||||
msgstr ""
|
||||
msgstr "Anda tidak dapat membaca definisi field tersebut."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8225,7 +8280,7 @@ msgstr "aesculapius"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "setelah"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9202,7 +9257,7 @@ msgstr "beetle"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "before"
|
||||
msgstr ""
|
||||
msgstr "sebelum"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12675,7 +12730,7 @@ msgstr "earth"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "east"
|
||||
msgstr "east"
|
||||
msgstr "timur"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12825,7 +12880,7 @@ msgstr "empanada"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/blank_component.xml:0
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "kosong"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14655,7 +14710,7 @@ msgstr "grasshopper"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater or equal to"
|
||||
msgstr ""
|
||||
msgstr "lebih besar dari atau sama dengan"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17121,13 +17176,13 @@ msgstr "low"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower or equal to"
|
||||
msgstr ""
|
||||
msgstr "lebih kecil dari atau sama dengan"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower than"
|
||||
msgstr ""
|
||||
msgstr "lebih kecil dari"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18916,19 +18971,19 @@ msgstr "noodle"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "north"
|
||||
msgstr "north"
|
||||
msgstr "utara"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "northeast"
|
||||
msgstr "northeast"
|
||||
msgstr "timur laut"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "northwest"
|
||||
msgstr "northwest"
|
||||
msgstr "barat laut"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -23214,19 +23269,19 @@ msgstr "sorry"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "south"
|
||||
msgstr "south"
|
||||
msgstr "selatan"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "southeast"
|
||||
msgstr "southeast"
|
||||
msgstr "tenggara"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "southwest"
|
||||
msgstr "southwest"
|
||||
msgstr "barat daya"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -25764,7 +25819,7 @@ msgstr "welding"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "west"
|
||||
msgstr "west"
|
||||
msgstr "barat"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26966,6 +27021,12 @@ msgstr "“vacancy”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Tidak ada emoji yang cocok dengan pencarian Anda"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Penikmat Dekorasi</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Sudut"
|
||||
|
||||
|
|
|
|||
|
|
@ -10,22 +10,26 @@
|
|||
# Marianna Ciofani, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# "Marianna Ciofani (cima)" <cima@odoo.com>, 2025, 2026.
|
||||
# "Malaz Siddig Elsayed Abuidris (msea)" <msea@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
# Andrea Zucca <a.zucca@gruppohermes.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-17 17:26+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"Language-Team: Italian <https://translate.odoo.com/projects/odoo-19/web/it/"
|
||||
">\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-03-06 17:47+0000\n"
|
||||
"Last-Translator: \"Marianna Ciofani (cima)\" <cima@odoo.com>\n"
|
||||
"Language-Team: Italian <https://translate.odoo.com/projects/odoo-19/web/it/>"
|
||||
"\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n != 0 && n % 1000000 == "
|
||||
"0) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.16.1\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -302,7 +306,7 @@ msgstr "3,30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -484,6 +488,18 @@ msgid ""
|
|||
"Temporal mode will merge all samples.<br/>It can lead to partially invalid "
|
||||
"result in case of concurrent profiles.<br/>Use with caution </span>"
|
||||
msgstr ""
|
||||
"<select class=\"form-select\" name=\"profile_aggregation_mode\" "
|
||||
"id=\"profile_aggregation_mode\">\n"
|
||||
" <option value=\"tabs\">Separati (uno "
|
||||
"per scheda)</option>\n"
|
||||
" <option value=\"temporal\">Temporale "
|
||||
"(sperimentale)</option>\n"
|
||||
" </select>\n"
|
||||
" <span id=\"temporal_warning\" "
|
||||
"class=\"alert alert-warning\" style=\"display:none\"><b>Attenzione:</b> la "
|
||||
"modalità temporale unirà tutti i campioni.<br/>Può comportare risultati "
|
||||
"parziali non validi in caso di profili concorrenti.<br/>Usala con cauzione </"
|
||||
"span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -543,8 +559,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -894,13 +910,13 @@ msgstr "Aggiungi %s"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/contact_image/contact_image_field.xml:0
|
||||
msgid "Add Photo"
|
||||
msgstr "Agguiungi foto"
|
||||
msgstr "Aggiungi foto"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "Add Property"
|
||||
msgstr ""
|
||||
msgstr "Aggiungi proprietà"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1167,13 +1183,13 @@ msgstr "Rimuovere veramente l'azione incorporata?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the %(nbSelected)s selected records?"
|
||||
msgstr ""
|
||||
msgstr "Sei sicuro di voler eliminare i %(nbSelected)s record selezionati?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the selected record?"
|
||||
msgstr ""
|
||||
msgstr "Sei sicuro di voler eliminare il record selezionato?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1191,7 +1207,7 @@ msgstr "Eliminare veramente questa colonna?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "Are you sure you want to delete this property field?"
|
||||
msgstr ""
|
||||
msgstr "Sei sicuro di voler eliminare questo campo proprietà?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2181,7 +2197,7 @@ msgstr "Valuta"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Campo valuta"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2236,7 +2252,7 @@ msgstr "Personalizza gruppo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Custom range"
|
||||
msgstr ""
|
||||
msgstr "Periodo personalizzato"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -2302,7 +2318,7 @@ msgstr "Data e ora"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Formato data"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2613,6 +2629,8 @@ msgid ""
|
|||
"Displays or hides the seconds in the datetime value. Affect only the "
|
||||
"readable datetime format."
|
||||
msgstr ""
|
||||
"Mostra o nasconde i secondi nel valore data/ora. Riguarda solo il formato "
|
||||
"data/ora leggibile."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2624,7 +2642,7 @@ msgstr "Mostra o nasconde l'orario nel valore data/ora."
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Displays the date either in 31/01/%(year)s or in Jan 31, %(year)s"
|
||||
msgstr ""
|
||||
msgstr "Mostra la data nel formato 31/01/%(year)s oppure 31 gennaio, %(year)s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2848,7 +2866,7 @@ msgstr "E-mail"
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings__embedded_actions_config_ids
|
||||
msgid "Embedded Actions Config"
|
||||
msgstr ""
|
||||
msgstr "Configurazione azioni integrate"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3216,6 +3234,8 @@ msgid ""
|
|||
"For example, if the value is \"1\" and you enter \"+=2\", it will be updated "
|
||||
"to \"3\"."
|
||||
msgstr ""
|
||||
"Ad esempio, se il valore è \"1\" e inserisci \"+=2\", verrà aggiornato a "
|
||||
"\"3\"."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3393,6 +3413,9 @@ msgid ""
|
|||
"click the %(upload_icon)s button now to ensure your work is saved before you "
|
||||
"exit this tab."
|
||||
msgstr ""
|
||||
"Occhi aperti! Le tue recenti modifiche sono troppo grandi per essere salvate "
|
||||
"automaticamente. Fai clic sul pulsante %(upload_icon)s per assicurarti che "
|
||||
"il tuo lavoro venga salvato prima di abbandonare questa scheda."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3463,7 +3486,7 @@ msgstr "Menu principale"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Ora"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3486,7 +3509,6 @@ msgstr "Come ottenere l'applicazione"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.xml:0
|
||||
#, fuzzy
|
||||
msgid "Hue"
|
||||
msgstr "Tonalità"
|
||||
|
||||
|
|
@ -3567,6 +3589,16 @@ msgstr ""
|
|||
"prevarrà l'edizione del tag. Pertanto, il selezionatore di colori non verrà "
|
||||
"visualizzato quando si fa clic sul tag."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
"Se contrassegnato, le caselle di controllo verranno visualizzate in una "
|
||||
"colonna. Altrimenti, saranno allineate."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3722,7 +3754,7 @@ msgstr "Intervallo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "Nome visualizzato non valido"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3888,18 +3920,19 @@ msgid ""
|
|||
"It will be removed for everyone using the \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
msgstr ""
|
||||
"Verrà eliminata per tutti usando \"%(parentName)s\" %(parentFieldLabel)s."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "It will be removed for everyone!"
|
||||
msgstr ""
|
||||
msgstr "Verrà eliminata per tutti!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Jan 31, %s"
|
||||
msgstr ""
|
||||
msgstr "31 gennaio, %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4148,19 +4181,19 @@ msgstr "Grande"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "Ultimi 12 mesi"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Ultimi 30 giorni"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Ultimi 7 giorni"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4178,7 +4211,7 @@ msgstr "Ultimo aggiornamento il"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Ultimo mese"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4321,7 +4354,7 @@ msgstr "Esci"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Login"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4475,12 +4508,12 @@ msgstr "Oggetto appuntamento"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory limit (in bytes)"
|
||||
msgstr ""
|
||||
msgstr "Limite memoria (in byte)"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory profile"
|
||||
msgstr ""
|
||||
msgstr "Profilo memoria"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4526,6 +4559,12 @@ msgstr "Via lattea"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Precisione minima"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr "Caratteri minimi"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4554,7 +4593,7 @@ msgstr "ID record mancante"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/record.js:0
|
||||
msgid "Missing required fields"
|
||||
msgstr ""
|
||||
msgstr "Campi obbligatori mancanti"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4641,7 +4680,7 @@ msgstr "Mese"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Month to date"
|
||||
msgstr ""
|
||||
msgstr "Mese nella data"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4765,7 +4804,7 @@ msgstr "Il mio account Odoo.com"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "My Preferences"
|
||||
msgstr ""
|
||||
msgstr "Le mie preferenze"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4938,6 +4977,12 @@ msgstr "Nessun dato"
|
|||
msgid "No data to display"
|
||||
msgstr "Nessun dato da visualizzare"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr "Nessun dato da esportare"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4953,8 +4998,8 @@ msgstr "Nessun dispositivo trovato."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Nessuna emoji corrisponde alla ricerca"
|
||||
msgid "No emojis match your search"
|
||||
msgstr "Nessuna emoji corrisponde alla tua ricerca"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5005,7 +5050,7 @@ msgstr "Nessun risultato trovato"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Nessun risultato"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5061,6 +5106,8 @@ msgid ""
|
|||
"Not possible to create monetary field because there is no currency on "
|
||||
"current model."
|
||||
msgstr ""
|
||||
"Non è possibile creare campi monetari perché non è stata configurata nessuna "
|
||||
"valuta per il modello corrente."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5231,7 +5278,6 @@ msgstr "Oh, no!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5743,7 +5789,7 @@ msgstr "Proprietà"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_properties_base_definition
|
||||
msgid "Properties Base Definition"
|
||||
msgstr ""
|
||||
msgstr "Definizione base proprietà"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5875,7 +5921,7 @@ msgstr "Regole su record"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "Record memory"
|
||||
msgstr ""
|
||||
msgstr "Memoria record"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6511,7 +6557,7 @@ msgstr "Impostare un fuso orario per l'utente"
|
|||
#: code:addons/web/static/src/views/fields/badge/badge_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/badge_selection/list_badge_selection_field.js:0
|
||||
msgid "Set an integer field to use colors with the badge."
|
||||
msgstr ""
|
||||
msgstr "Configura un campo completo per usare colori con il badge."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6678,10 +6724,11 @@ msgstr "Speciale:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "In pila"
|
||||
|
|
@ -6783,7 +6830,7 @@ msgstr "Errore di stile"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Suffisso"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6998,11 +7045,18 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "Il dominio non deve includere caratteri non alfabetici"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "Il file non è un'immagine, il ridimensionamento non è possibile"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
msgid "The ids in %(field_name)s must not be duplicated: “%(action_ids)s”"
|
||||
msgstr ""
|
||||
"Gli id in %(field_name)s non devono essere duplicati: \"%(action_ids)s\""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -7011,6 +7065,8 @@ msgid ""
|
|||
"The ids in %(field_name)s must only be integers or \"false\": “%"
|
||||
"(action_ids)s”"
|
||||
msgstr ""
|
||||
"Gli id in %(field_name)s devono essere interi oppure \"false\": \"%"
|
||||
"(action_ids)s\""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7023,6 +7079,12 @@ msgstr ""
|
|||
"L'operazione è stata interrotta. Solitamente ciò significa che l'operazione "
|
||||
"corrente sta impiegando troppo tempo."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "Il ridimensionamento dell'immagine non è riuscito"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7058,6 +7120,8 @@ msgid ""
|
|||
"The user should have one unique embedded action setting per user setting, "
|
||||
"action and record id."
|
||||
msgstr ""
|
||||
"L'utente dovrebbe avere un'unica impostazione di azione incorporata per ogni "
|
||||
"impostazione utente, azione e ID record."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7254,7 +7318,7 @@ msgstr "Attiva pannello di ricerca"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/datetime/datetime_picker.xml:0
|
||||
msgid "Toggle date range mode"
|
||||
msgstr ""
|
||||
msgstr "Attiva modalità intervallo data"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7633,6 +7697,8 @@ msgid ""
|
|||
"Use the operators \"+=\", \"-=\", \"*=\" and \"/=\" to update the current "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Usa gli operatori \"+=\", \"-=\", \"*=\" e \"/=\" per aggiornare il valore "
|
||||
"corrente."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7680,12 +7746,12 @@ msgstr "Interfaccia utente"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Impostazioni utente"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
msgid "User Settings for Embedded Actions"
|
||||
msgstr ""
|
||||
msgstr "Impostazioni utente per azioni integrate"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7844,6 +7910,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Attenzione"
|
||||
|
||||
|
|
@ -7980,7 +8047,7 @@ msgstr "Anno"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Year to date"
|
||||
msgstr ""
|
||||
msgstr "Anno fino alla data"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8029,7 +8096,7 @@ msgstr "Puoi installare l'app dal menu del browser"
|
|||
#. odoo-python
|
||||
#: code:addons/web/models/properties_base_definition.py:0
|
||||
msgid "You can not read that field definition."
|
||||
msgstr ""
|
||||
msgstr "Non puoi leggere la definizione di questo campo."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8253,7 +8320,7 @@ msgstr "Esculapio"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "dopo"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9230,7 +9297,7 @@ msgstr "scarabeo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "before"
|
||||
msgstr ""
|
||||
msgstr "prima"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12853,7 +12920,7 @@ msgstr "empanada"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/blank_component.xml:0
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "vuoto"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14683,7 +14750,7 @@ msgstr "grillo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater or equal to"
|
||||
msgstr ""
|
||||
msgstr "maggiore o uguale a"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17149,13 +17216,13 @@ msgstr "basso"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower or equal to"
|
||||
msgstr ""
|
||||
msgstr "minore o uguale a"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower than"
|
||||
msgstr ""
|
||||
msgstr "minore di"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26995,6 +27062,12 @@ msgstr "“posto”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Nessuna emoji corrisponde alla ricerca"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Angolo"
|
||||
|
||||
|
|
|
|||
|
|
@ -9,25 +9,25 @@
|
|||
# Noma Yuki, 2022
|
||||
# Yoshi Tashiro (Quartile) <tashiro@roomsfor.hk>, 2022
|
||||
# Andy Yiu, 2023
|
||||
# Ryoko Tsuda <ryoko@quartile.co>, 2023
|
||||
# Ryoko Tsuda <ryoko@quartile.co>, 2023, 2025.
|
||||
# Martin Trigaux, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Junko Augias (juau)" <juau@odoo.com>, 2025.
|
||||
# "Junko Augias (juau)" <juau@odoo.com>, 2025, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-04 02:31+0000\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-02-11 17:40+0000\n"
|
||||
"Last-Translator: \"Junko Augias (juau)\" <juau@odoo.com>\n"
|
||||
"Language-Team: Japanese <https://translate.odoo.com/projects/odoo-19/web/ja/>"
|
||||
"\n"
|
||||
"Language-Team: Japanese <https://translate.odoo.com/projects/odoo-19/web/ja/"
|
||||
">\n"
|
||||
"Language: ja\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -303,7 +303,6 @@ msgstr "3.30"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
#, fuzzy
|
||||
msgid "31/01/%s"
|
||||
msgstr "31/01/%s"
|
||||
|
||||
|
|
@ -558,8 +557,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -1510,7 +1509,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/calendar/calendar_controller.js:0
|
||||
#: code:addons/web/static/src/views/view_hook.js:0
|
||||
msgid "Bye-bye, record!"
|
||||
msgstr "さよなら、レコード!"
|
||||
msgstr "このレコードを削除します"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1910,7 +1909,7 @@ msgstr "条件:"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "詳細設定"
|
||||
msgstr "構成設定"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.actions.act_window,name:web.action_base_document_layout_configurator
|
||||
|
|
@ -2463,7 +2462,7 @@ msgstr "プロパティフィールドを削除する"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.xml:0
|
||||
msgid "Delete item"
|
||||
msgstr "項目を削除する"
|
||||
msgstr "項目を削除"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2951,7 +2950,7 @@ msgstr "展開"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/pivot/pivot_controller.xml:0
|
||||
msgid "Expand all"
|
||||
msgstr "全展開"
|
||||
msgstr "すべて展開"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3568,6 +3567,16 @@ msgstr ""
|
|||
"ます。色フィールドも設定されている場合、タグの編集が優先されることにご注意下"
|
||||
"さい。そのため、タグをクリックしても、カラーピッカーは表示されません。"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
"チェックを入れると、チェックボックスは縦に並びます。オフの場合は横に並びま"
|
||||
"す。"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3722,7 +3731,7 @@ msgstr "間隔"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "無効な表示名"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4118,7 +4127,7 @@ msgstr "ラベルフィールド"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/field_tooltip.xml:0
|
||||
msgid "Label:"
|
||||
msgstr "得る:"
|
||||
msgstr "ラベル:"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4150,13 +4159,13 @@ msgstr "直近12か月"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr "過去30日間"
|
||||
msgstr "直近30日"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr "過去7日間"
|
||||
msgstr "直近7日"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4408,7 +4417,7 @@ msgstr "Many2many"
|
|||
#: code:addons/web/static/src/views/fields/many2one/many2one_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.js:0
|
||||
msgid "Many2one"
|
||||
msgstr "Many2one"
|
||||
msgstr "多対1"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4524,6 +4533,12 @@ msgstr "天の川"
|
|||
msgid "Minimal precision"
|
||||
msgstr "最小精度"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4540,7 +4555,7 @@ msgstr "不明なアクション"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
msgid "Missing Record"
|
||||
msgstr "ミッシングレコード"
|
||||
msgstr "レコードが見つかりません"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -4552,7 +4567,7 @@ msgstr "レコードIDが不明です"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/record.js:0
|
||||
msgid "Missing required fields"
|
||||
msgstr ""
|
||||
msgstr "必須項目が未入力です"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4578,7 +4593,7 @@ msgstr "モデル"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/debug_items.js:0
|
||||
msgid "Model Record Rules"
|
||||
msgstr "モデルレコード規則"
|
||||
msgstr "モデルレコードルール"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4654,7 +4669,7 @@ msgstr "月"
|
|||
#: code:addons/web/static/src/views/form/button_box/button_box.xml:0
|
||||
#: code:addons/web/static/src/views/form/status_bar_buttons/status_bar_buttons.xml:0
|
||||
msgid "More"
|
||||
msgstr "さらに表示"
|
||||
msgstr "その他"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4936,6 +4951,12 @@ msgstr "データなし"
|
|||
msgid "No data to display"
|
||||
msgstr "表示するデータがありません"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4951,8 +4972,8 @@ msgstr "デバイスが見つかりません"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "検索にマッチする絵文字がありません"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5230,7 +5251,6 @@ msgstr "ご確認ください!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5868,7 +5888,7 @@ msgstr "レコード"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/debug_items.js:0
|
||||
msgid "Record Rules"
|
||||
msgstr "レコード規則"
|
||||
msgstr "レコードルール"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6636,13 +6656,13 @@ msgstr "スマイリー & 感情"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/tabs/color_picker_solid_tab.js:0
|
||||
msgid "Solid"
|
||||
msgstr "ソリッド"
|
||||
msgstr "実線"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/dynamic_list.js:0
|
||||
msgid "Some records could not be duplicated"
|
||||
msgstr "重複できないレコードがあります"
|
||||
msgstr "一部のレコードは複製できませんでした"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -6679,6 +6699,7 @@ msgstr "Speedscope"
|
|||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "積み上げグラフ"
|
||||
|
|
@ -6737,7 +6758,7 @@ msgstr "自由の女神"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/statusbar/statusbar_field.js:0
|
||||
msgid "Status"
|
||||
msgstr "状態"
|
||||
msgstr "ステータス"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6994,6 +7015,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "ドメインに非リテラルを含めてはいけません"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "ファイルが画像でないため、サイズ変更できません"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -7019,6 +7046,12 @@ msgid ""
|
|||
"is taking too much time."
|
||||
msgstr "処理が中断されました。処理に時間がかかりすぎている可能性があります。"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "画像のサイズ変更に失敗しました"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7341,7 +7374,7 @@ msgid ""
|
|||
"Try to add some records, or make sure that there is no\n"
|
||||
" active filter in the search bar."
|
||||
msgstr ""
|
||||
"レコードを追加するか、検索バーにアクティブなフィルタが\n"
|
||||
"レコードを追加するか、検索バーに有効なフィルタが\n"
|
||||
" ないことを確認してください。"
|
||||
|
||||
#. module: web
|
||||
|
|
@ -7675,12 +7708,12 @@ msgstr "ユーザインタフェース"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr "ユーザ管理設定"
|
||||
msgstr "ユーザ設定"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
msgid "User Settings for Embedded Actions"
|
||||
msgstr "埋め込みアクションのユーザ管理設定"
|
||||
msgstr "埋め込みアクションのユーザ設定"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7839,6 +7872,7 @@ msgstr "トイレ"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "警告"
|
||||
|
||||
|
|
@ -9978,7 +10012,7 @@ msgstr "茶色い四角"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "bubble"
|
||||
msgstr "泡"
|
||||
msgstr "バブル"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -10494,7 +10528,7 @@ msgstr "チャーム"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "chart"
|
||||
msgstr "チャート"
|
||||
msgstr "グラフ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -11886,7 +11920,7 @@ msgstr "だんご"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "dark"
|
||||
msgstr "暗い"
|
||||
msgstr "ダーク"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -16055,7 +16089,7 @@ msgstr "次のいずれかに一致:"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "is not equal to"
|
||||
msgstr "が次と一致しない"
|
||||
msgstr "等しくない"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19009,7 +19043,7 @@ msgstr "装飾カバーがついたノート"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "notes"
|
||||
msgstr "音符"
|
||||
msgstr "メモ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19075,7 +19109,7 @@ msgstr "おでん"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor.xml:0
|
||||
msgid "of the following rules:"
|
||||
msgstr "以下の規則の:"
|
||||
msgstr "以下のルールの:"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -20549,7 +20583,7 @@ msgstr "プラグ"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "plumber"
|
||||
msgstr "技工"
|
||||
msgstr "配管工"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26960,7 +26994,7 @@ msgstr "“禁”"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "“reserved”"
|
||||
msgstr "“指”"
|
||||
msgstr "“予約済”"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26986,6 +27020,12 @@ msgstr "“空”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "検索にマッチする絵文字がありません"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "角度"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -10,13 +10,14 @@
|
|||
# Sarah Park, 2023
|
||||
# Martin Trigaux, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Kwanghee Park (kwpa)" <kwpa@odoo.com>, 2025.
|
||||
# "Kwanghee Park (kwpa)" <kwpa@odoo.com>, 2025, 2026.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-10-06 08:23+0000\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-02-11 17:40+0000\n"
|
||||
"Last-Translator: \"Kwanghee Park (kwpa)\" <kwpa@odoo.com>\n"
|
||||
"Language-Team: Korean <https://translate.odoo.com/projects/odoo-19/web/ko/>\n"
|
||||
"Language: ko\n"
|
||||
|
|
@ -24,7 +25,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -541,8 +542,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -896,7 +897,7 @@ msgstr "사진 추가"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "Add Property"
|
||||
msgstr ""
|
||||
msgstr "영역 추가"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2165,7 +2166,7 @@ msgstr "통화"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "통화 필드"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2220,7 +2221,7 @@ msgstr "사용자 지정 그룹"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Custom range"
|
||||
msgstr ""
|
||||
msgstr "사용자 지정 범위"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -2286,7 +2287,7 @@ msgstr "날짜 및 시간"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "날짜 형식"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2830,7 +2831,7 @@ msgstr "이메일"
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings__embedded_actions_config_ids
|
||||
msgid "Embedded Actions Config"
|
||||
msgstr ""
|
||||
msgstr "내장된 작업 환경설정"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3537,6 +3538,14 @@ msgstr ""
|
|||
"상 필드와 태그 편집이 모두 설정되어 있는 경우 태그 편집이 우선하므로 태그 클"
|
||||
"릭 시 색상 선택기가 표시되지 않습니다."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3689,7 +3698,7 @@ msgstr "간격"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "잘못된 표시명"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3861,7 +3870,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Jan 31, %s"
|
||||
msgstr ""
|
||||
msgstr "1월 31일, %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4110,19 +4119,19 @@ msgstr "크게"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "최근 12개월"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "최근 30일"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "최근 7일"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4140,7 +4149,7 @@ msgstr "최근 갱신 일자"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "지난 달"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4437,12 +4446,12 @@ msgstr "회의 주제"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory limit (in bytes)"
|
||||
msgstr ""
|
||||
msgstr "메모리 제한 (바이트 단위)"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory profile"
|
||||
msgstr ""
|
||||
msgstr "메모리 프로파일"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4488,6 +4497,12 @@ msgstr "은하수"
|
|||
msgid "Minimal precision"
|
||||
msgstr "최소 정밀도"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr "최소 자릿수"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4516,7 +4531,7 @@ msgstr "누락된 레코드 ID"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/record.js:0
|
||||
msgid "Missing required fields"
|
||||
msgstr ""
|
||||
msgstr "필수 입력 누락"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4603,7 +4618,7 @@ msgstr "월"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Month to date"
|
||||
msgstr ""
|
||||
msgstr "월별 누계"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4727,7 +4742,7 @@ msgstr "내 Odoo.com 계정"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "My Preferences"
|
||||
msgstr ""
|
||||
msgstr "내 추가 설정"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4900,6 +4915,12 @@ msgstr "데이터 없음"
|
|||
msgid "No data to display"
|
||||
msgstr "표시할 데이터가 없습니다"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr "내보낼 데이터가 없습니다"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4915,8 +4936,8 @@ msgstr "장치를 찾을 수 없습니다."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "검색어에 해당하는 이모티콘이 없습니다."
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4967,7 +4988,7 @@ msgstr "결과가 없습니다."
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "결과가 없습니다"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5192,7 +5213,6 @@ msgstr "잠시만요!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5702,7 +5722,7 @@ msgstr "속성"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_properties_base_definition
|
||||
msgid "Properties Base Definition"
|
||||
msgstr ""
|
||||
msgstr "속성 기본 정의"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5833,7 +5853,7 @@ msgstr "레코드 규칙"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "Record memory"
|
||||
msgstr ""
|
||||
msgstr "레코드 메모리"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6639,6 +6659,7 @@ msgstr "Speedscope"
|
|||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "누적 영역 차트"
|
||||
|
|
@ -6952,6 +6973,12 @@ msgstr "도메인에 비문자열이 포함되어 있습니다. 평가가 실패
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "도메인에는 문자 외에는 포함될 수 없습니다."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "해당 파일은 이미지 파일이 아니므로 크기 조정이 불가능합니다"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6977,6 +7004,12 @@ msgstr ""
|
|||
"작업이 중단되었습니다. 이것은 일반적으로 현재 작업에 너무 많은 시간이 걸린다"
|
||||
"는 것을 의미합니다."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "이미지 크기 조정이 실패했습니다"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7203,7 +7236,7 @@ msgstr "검색 패널 토글"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/datetime/datetime_picker.xml:0
|
||||
msgid "Toggle date range mode"
|
||||
msgstr ""
|
||||
msgstr "날짜 범위 모드 토글"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7627,12 +7660,12 @@ msgstr "사용자 인터페이스"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "사용자 설정"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
msgid "User Settings for Embedded Actions"
|
||||
msgstr ""
|
||||
msgstr "임베디드 액션 사용자 설정"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7791,6 +7824,7 @@ msgstr "화장실"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "주의"
|
||||
|
||||
|
|
@ -7924,7 +7958,7 @@ msgstr "년"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Year to date"
|
||||
msgstr ""
|
||||
msgstr "연도별 누계"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -10271,7 +10305,7 @@ msgstr "케어"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "carousel"
|
||||
msgstr "회전 목마"
|
||||
msgstr "슬라이드 형식"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14620,7 +14654,7 @@ msgstr "귀뚜라미"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater or equal to"
|
||||
msgstr ""
|
||||
msgstr "다음보다 크거나 같음:"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17086,13 +17120,13 @@ msgstr "낮음"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower or equal to"
|
||||
msgstr ""
|
||||
msgstr "다음보다 작거나 같음:"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower than"
|
||||
msgstr ""
|
||||
msgstr "다음보다 낮음"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26931,6 +26965,12 @@ msgstr "“공석”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "검색어에 해당하는 이모티콘이 없습니다."
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "각"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,23 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * web
|
||||
# * web
|
||||
#
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2024-10-25 07:49+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-11-08 22:03+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Kurdish (Central) <https://translate.odoo.com/projects/"
|
||||
"odoo-19/web/ckb/>\n"
|
||||
"Language: ku\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -27,7 +30,7 @@ msgstr ""
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/export.py:0
|
||||
msgid "%(property_string)s (%(parent_name)s)"
|
||||
msgstr ""
|
||||
msgstr "(%(parent_name)s)%(property_string)s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -480,6 +483,8 @@ msgid ""
|
|||
"<span class=\"text-nowrap\">$ <span class=\"oe_currency_value\">11,750.00</"
|
||||
"span></span>"
|
||||
msgstr ""
|
||||
"<span class=\"text-nowrap\">$<span class=\"oe_currency_value\">11,750.00</"
|
||||
"span></span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -487,16 +492,18 @@ msgid ""
|
|||
"<span class=\"text-nowrap\">$ <span class=\"oe_currency_value\">7,500.00</"
|
||||
"span></span>"
|
||||
msgstr ""
|
||||
"<span class=\"text-nowrap\">$<span class=\"oe_currency_value\">7,500.00</"
|
||||
"span></span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span class=\"text-nowrap\">1,500.00</span>"
|
||||
msgstr ""
|
||||
msgstr "<span class=\"text-nowrap\">1,500.00</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span class=\"text-nowrap\">2,350.00</span>"
|
||||
msgstr ""
|
||||
msgstr "<span class=\"text-nowrap\">2,350.00</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -519,28 +526,28 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span>$ <span class=\"oe_currency_value\">19,250.00</span></span>"
|
||||
msgstr ""
|
||||
msgstr "<span>$<span class=\"oe_currency_value\">19,250.00</span></span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span>5.00</span>"
|
||||
msgstr ""
|
||||
msgstr "<span>5.00</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span>Amount</span>"
|
||||
msgstr ""
|
||||
msgstr "<span>بڕ</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span>Description</span>"
|
||||
msgstr ""
|
||||
msgstr "<span>وەسف</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -557,17 +564,17 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span>Quantity</span>"
|
||||
msgstr ""
|
||||
msgstr "<span>بڕ</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span>Taxes</span>"
|
||||
msgstr ""
|
||||
msgstr "<span>باجەکان</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span>Unit Price</span>"
|
||||
msgstr ""
|
||||
msgstr "<span>نرخی یەکە</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -623,7 +630,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<strong>Due Date</strong>"
|
||||
msgstr ""
|
||||
msgstr "<strong>بەرواری کۆتایی هاتنی:</strong>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.address_layout
|
||||
|
|
@ -633,12 +640,12 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<strong>Invoice Date</strong>"
|
||||
msgstr ""
|
||||
msgstr "<strong>بەرواری فاکتورە</strong>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<strong>Total</strong>"
|
||||
msgstr ""
|
||||
msgstr "<strong>کۆ</strong>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -770,7 +777,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/debug_items.js:0
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
msgstr "کردار"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -783,7 +790,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/search/action_menus/action_menus.xml:0
|
||||
#: code:addons/web/static/src/search/cog_menu/cog_menu.xml:0
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
msgstr "کردارەکان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -831,7 +838,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "Activities"
|
||||
msgstr ""
|
||||
msgstr "چالاکیەکان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -841,7 +848,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/view_components/multi_create_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.xml:0
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
msgstr "زیادکردن"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -884,7 +891,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/list/list_renderer.js:0
|
||||
#: code:addons/web/static/src/views/list/list_renderer.xml:0
|
||||
msgid "Add a line"
|
||||
msgstr ""
|
||||
msgstr "هێڵێک زیاد بکە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -931,7 +938,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Address"
|
||||
msgstr ""
|
||||
msgstr "ناونیشان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -979,7 +986,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/search/search_panel/search_panel.xml:0
|
||||
#: code:addons/web/static/src/views/view_components/selection_box.xml:0
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
msgstr "گشت"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -997,7 +1004,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu_items.xml:0
|
||||
msgid "All users"
|
||||
msgstr ""
|
||||
msgstr "هەموو بەکارهێنەران"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1077,7 +1084,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/datetime/datetime_picker_popover.xml:0
|
||||
msgid "Apply"
|
||||
msgstr ""
|
||||
msgstr "جێبەجێکردن"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1093,7 +1100,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/kanban/kanban_renderer.js:0
|
||||
#: code:addons/web/static/src/views/list/list_controller.js:0
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
msgstr "ئەرشیف"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1199,13 +1206,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/many2many_binary/many2many_binary_field.xml:0
|
||||
msgid "Attach"
|
||||
msgstr ""
|
||||
msgstr "هاوپێچکردن"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_cover_image_dialog.xml:0
|
||||
msgid "Attachment"
|
||||
msgstr ""
|
||||
msgstr "هاوپێچ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1217,7 +1224,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/debug_items.js:0
|
||||
msgid "Attachments"
|
||||
msgstr ""
|
||||
msgstr "هاوپێچەکان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1349,7 +1356,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_base
|
||||
msgid "Base"
|
||||
msgstr ""
|
||||
msgstr "بناغە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1540,7 +1547,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/view_dialogs/export_data_dialog.xml:0
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/fields/upgrade_dialog.xml:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "ڕەتکردنەوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1722,7 +1729,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/view_dialogs/select_create_dialog.xml:0
|
||||
#: code:addons/web/static/src/webclient/actions/action_install_kiosk_pwa.xml:0
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
msgstr "داخستن"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1768,32 +1775,32 @@ msgstr ""
|
|||
#: code:addons/web/static/src/webclient/burger_menu/mobile_switch_company_menu/mobile_switch_company_menu.xml:0
|
||||
#: model:ir.model,name:web.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
msgstr "کۆمپانیاکان"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
msgstr "کۆمپانیا"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__company_details
|
||||
msgid "Company Details"
|
||||
msgstr ""
|
||||
msgstr "وردەکاری کۆمپانیا"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_base_document_layout
|
||||
msgid "Company Document Layout"
|
||||
msgstr ""
|
||||
msgstr "شێوازی بەڵگەنامەی کۆمپانیا"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__logo
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
msgstr "لۆگۆی کۆمپانیا"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__name
|
||||
msgid "Company Name"
|
||||
msgstr ""
|
||||
msgstr "ناوی کۆمپانیا"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__report_header
|
||||
|
|
@ -1844,7 +1851,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model:ir.actions.act_window,name:web.action_base_document_layout_configurator
|
||||
msgid "Configure your document layout"
|
||||
msgstr ""
|
||||
msgstr "شێوازی بەڵگەنامەکەت ڕێکبخە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1853,7 +1860,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/model/relational_model/dynamic_list.js:0
|
||||
#: code:addons/web/static/src/webclient/switch_company_menu/switch_company_menu.xml:0
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
msgstr "دڵنیاکردنەوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1883,7 +1890,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_partner
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
msgstr "پەیوەندی"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1923,7 +1930,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
msgstr "بەردەوامبە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1950,13 +1957,13 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/views/fields/copy_clipboard/copy_clipboard_field.js:0
|
||||
msgid "Copied"
|
||||
msgstr ""
|
||||
msgstr "کۆپی کراوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/copy_clipboard/copy_clipboard_field.js:0
|
||||
msgid "Copy"
|
||||
msgstr ""
|
||||
msgstr "لەبەرگرتنەوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2035,7 +2042,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__country_id
|
||||
msgid "Country"
|
||||
msgstr ""
|
||||
msgstr "وڵات"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2043,7 +2050,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/calendar/quick_create/calendar_quick_create.xml:0
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
msgstr "دروستکردن"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2079,13 +2086,13 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:web.field_base_document_layout__create_uid
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings_embedded_action__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
msgstr "دروستکراوە لەلایەن..."
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__create_date
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings_embedded_action__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
msgstr "دروستکراوە لە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2109,7 +2116,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/monetary/monetary_field.js:0
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
msgstr "دراو"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2223,7 +2230,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.js:0
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
msgstr "ڕێکەوت"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2242,7 +2249,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Range"
|
||||
msgstr ""
|
||||
msgstr "مەودای بەروار"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2261,7 +2268,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Days"
|
||||
msgstr ""
|
||||
msgstr "ڕۆژەکان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2304,7 +2311,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
msgstr "بنەڕەتی"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2368,7 +2375,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/view_dialogs/export_data_dialog.xml:0
|
||||
#: code:addons/web/static/src/views/view_hook.js:0
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
msgstr "سڕینەوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2469,7 +2476,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/webclient/settings_form_view/settings_confirmation_dialog.xml:0
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Discard"
|
||||
msgstr ""
|
||||
msgstr "ڕەتکردنەوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2627,7 +2634,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/many2many_binary/many2many_binary_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/pdf_viewer/pdf_viewer_field.xml:0
|
||||
msgid "Download"
|
||||
msgstr ""
|
||||
msgstr "دابەزاندن"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.actions.server,name:web.download_contact
|
||||
|
|
@ -2771,7 +2778,7 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:web.field_base_document_layout__email
|
||||
#: model_terms:ir.ui.view,arch_db:web.login
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
msgstr "ئیمەیڵ"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings__embedded_actions_config_ids
|
||||
|
|
@ -2852,7 +2859,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "European"
|
||||
msgstr ""
|
||||
msgstr "ئەوروپی"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2965,7 +2972,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_value_editors.js:0
|
||||
msgid "False"
|
||||
msgstr ""
|
||||
msgstr "هەڵە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2989,7 +2996,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/search_bar_menu/search_bar_menu.xml:0
|
||||
msgid "Favorites"
|
||||
msgstr ""
|
||||
msgstr "دڵخوازەکان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3259,7 +3266,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_popover.xml:0
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
msgstr "گروپ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3271,7 +3278,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/search_bar_menu/search_bar_menu.xml:0
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
msgstr "گروپ لەلایەن..."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3424,7 +3431,7 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:web.field_res_users_settings__id
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings_embedded_action__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
msgstr "ID"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3454,7 +3461,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_icon/boolean_icon_field.js:0
|
||||
msgid "Icon"
|
||||
msgstr ""
|
||||
msgstr "ئایکۆن"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3471,6 +3478,14 @@ msgid ""
|
|||
"prevail. So, the color picker will not be displayed on click on the tag."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3603,7 +3618,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/many2one/many2one.xml:0
|
||||
#: code:addons/web/static/src/views/fields/properties/property_value.xml:0
|
||||
msgid "Internal link"
|
||||
msgstr ""
|
||||
msgstr "بەستەری ناوخۆیی"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4047,13 +4062,13 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings_embedded_action__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
msgstr "دوایین نوێکردنەوە لەلایەن..."
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_date
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings_embedded_action__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
msgstr "دوایین نوێکردنەوە لە..."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4184,7 +4199,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.login
|
||||
msgid "Log in"
|
||||
msgstr ""
|
||||
msgstr "چوونەژوورەوە"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.login
|
||||
|
|
@ -4202,7 +4217,7 @@ msgstr ""
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "چوونەژوورەوە"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4216,7 +4231,7 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:web.login_layout
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Logo"
|
||||
msgstr ""
|
||||
msgstr "لۆگۆ"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__logo_primary_color
|
||||
|
|
@ -4368,7 +4383,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/webclient/burger_menu/burger_menu.xml:0
|
||||
#: model:ir.model,name:web.model_ir_ui_menu
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
msgstr "مێنۆ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4407,6 +4422,12 @@ msgstr ""
|
|||
msgid "Minimal precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4455,7 +4476,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/field_selector/field_selector_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Model"
|
||||
msgstr ""
|
||||
msgstr "مۆدێل"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4688,7 +4709,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/list/list_controller.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/select_create_dialog.xml:0
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
msgstr "نوێ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4772,7 +4793,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/search/search_bar/search_bar.js:0
|
||||
#: code:addons/web/static/src/views/pivot/pivot_model.js:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
msgstr "نەخێر"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4819,6 +4840,12 @@ msgstr ""
|
|||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4834,7 +4861,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -4921,7 +4948,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/pivot/pivot_model.js:0
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
msgstr "هیچکامیان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -5015,7 +5042,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/webclient/settings_form_view/widgets/res_config_edition.xml:0
|
||||
#: model_terms:ir.ui.view,arch_db:web.brand_promotion_message
|
||||
msgid "Odoo"
|
||||
msgstr ""
|
||||
msgstr "ئۆدۆ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5108,7 +5135,6 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5193,7 +5219,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
msgstr "کردنەوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5267,7 +5293,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/kanban/progress_bar_hook.js:0
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_field.js:0
|
||||
msgid "Other"
|
||||
msgstr ""
|
||||
msgstr "هی تر"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5325,12 +5351,12 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__partner_id
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
msgstr "هاوبەش"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.login
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
msgstr "وشەی نهێنی"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -5359,14 +5385,14 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/percentage/percentage_field.js:0
|
||||
msgid "Percentage"
|
||||
msgstr ""
|
||||
msgstr "لەسەدا"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/phone/phone_field.js:0
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__phone
|
||||
msgid "Phone"
|
||||
msgstr ""
|
||||
msgstr "تەلەفۆن"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5480,7 +5506,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__preview
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
msgstr "پێشبینی"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.actions.report,name:web.action_report_externalpreview
|
||||
|
|
@ -5560,7 +5586,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/search/action_menus/action_menus.js:0
|
||||
#: code:addons/web/static/src/webclient/actions/reports/report_action.xml:0
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
msgstr "چاپ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5573,7 +5599,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/priority/priority_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/priority/priority_field.xml:0
|
||||
msgid "Priority"
|
||||
msgstr ""
|
||||
msgstr "ئەولەویەت"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5717,7 +5743,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu_basic.js:0
|
||||
msgid "Record"
|
||||
msgstr ""
|
||||
msgstr "تۆمار"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5759,7 +5785,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu_basic.js:0
|
||||
msgid "Records"
|
||||
msgstr ""
|
||||
msgstr "تۆمارەکان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5771,7 +5797,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/reference/reference_field.js:0
|
||||
msgid "Reference"
|
||||
msgstr ""
|
||||
msgstr "سەرچاوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5807,7 +5833,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/image/image_field.js:0
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
msgstr "دووبارە بارکردنەوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5866,7 +5892,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/action_service.js:0
|
||||
msgid "Report"
|
||||
msgstr ""
|
||||
msgstr "ڕاپۆرت"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__report_footer
|
||||
|
|
@ -6039,7 +6065,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/settings_confirmation_dialog.xml:0
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
msgstr "هەڵگرتن"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6331,7 +6357,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/email/email_field.xml:0
|
||||
msgid "Send Email"
|
||||
msgstr ""
|
||||
msgstr "ئیمەیڵ بنێرە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6530,6 +6556,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
|
@ -6588,7 +6615,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/statusbar/statusbar_field.js:0
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
msgstr "دۆخ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6711,7 +6738,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/properties/property_definition.js:0
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
msgstr "تاگەکان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6794,6 +6821,9 @@ msgid ""
|
|||
"country format. You can use '/' to indicate that the partner is not subject "
|
||||
"to tax."
|
||||
msgstr ""
|
||||
"ژمارەی ناسنامەی باج. بەهاکان لێرەدا بە پشتبەستن بە فۆرماتەکەی وڵات پشتڕاست "
|
||||
"دەکرێنەوە. دەتوانیت '/' بەکاربهێنیت بۆ ئەوەی ئاماژە بەوە بکەیت کە هاوبەشەکە "
|
||||
"باج نادات."
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -6839,6 +6869,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6862,6 +6898,12 @@ msgid ""
|
|||
"is taking too much time."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7060,7 +7102,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_controller.xml:0
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
msgstr "ئەمڕۆ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7121,7 +7163,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/graph/graph_model.js:0
|
||||
#: code:addons/web/static/src/views/pivot/pivot_model.js:0
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
msgstr "کۆ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7188,7 +7230,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/float_toggle/float_toggle_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/integer/integer_field.js:0
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
msgstr "جۆر"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7312,7 +7354,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/many2one/many2one.js:0
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.js:0
|
||||
msgid "Unnamed"
|
||||
msgstr ""
|
||||
msgstr "بێ ناو"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7345,7 +7387,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/list/list_confirmation_dialog.xml:0
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
msgstr "نوێکردنەوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7477,7 +7519,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/webclient/user_menu/user_menu.xml:0
|
||||
#: model:ir.model,name:web.model_res_users
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
msgstr "بەکارهێنەر"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7579,7 +7621,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/list/list_renderer.xml:0
|
||||
#: model:ir.model,name:web.model_ir_ui_view
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
msgstr "بینین"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7652,8 +7694,9 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
msgstr "ئاگادار کردنەوە"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7665,7 +7708,7 @@ msgstr ""
|
|||
#. odoo-python
|
||||
#: code:addons/web/models/models.py:0
|
||||
msgid "Warnings"
|
||||
msgstr ""
|
||||
msgstr "ئاگادارکردنەوەکان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19163,7 +19206,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/search/search_model.js:0
|
||||
#: code:addons/web/static/src/views/fields/dynamic_placeholder_popover.xml:0
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
msgstr "یان"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
|
|||
|
|
@ -25,13 +25,14 @@
|
|||
# Jonas Zinkevicius <jozi@odoo.com>, 2022
|
||||
# Linas Versada <linaskrisiukenas@gmail.com>, 2023
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 18:42+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-11-08 21:57+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Lithuanian <https://translate.odoo.com/projects/odoo-19/web/"
|
||||
"lt/>\n"
|
||||
"Language: lt\n"
|
||||
|
|
@ -550,7 +551,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -1066,7 +1067,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "Americas"
|
||||
msgstr ""
|
||||
msgstr "Amerikos"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1700,7 +1701,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/label_selection/label_selection_field.js:0
|
||||
msgid "Classes"
|
||||
msgstr ""
|
||||
msgstr "Klasės"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1776,7 +1777,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/kanban_color_picker/kanban_color_picker_field.js:0
|
||||
msgid "Color Picker"
|
||||
msgstr ""
|
||||
msgstr "Color Picker"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2271,7 +2272,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Datos formatas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2869,7 +2870,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/highlight_text/form_label_highlight_text.xml:0
|
||||
msgid "Enterprise"
|
||||
msgstr ""
|
||||
msgstr "Verslininkystė"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3209,7 +3210,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
msgstr "Prancūzų kalba"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3433,7 +3434,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.xml:0
|
||||
msgid "Hue"
|
||||
msgstr ""
|
||||
msgstr "Atspalvis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3506,6 +3507,14 @@ msgid ""
|
|||
"prevail. So, the color picker will not be displayed on click on the tag."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4070,13 +4079,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Paskutinės 30 dienų"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Paskutinės 7 dienos"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4094,7 +4103,7 @@ msgstr "Paskutinį kartą atnaujinta"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Paskutinis mėnesis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4237,7 +4246,7 @@ msgstr "Atsijungti"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Prisijungimas"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4442,6 +4451,12 @@ msgstr ""
|
|||
msgid "Minimal precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4854,6 +4869,12 @@ msgstr ""
|
|||
msgid "No data to display"
|
||||
msgstr "Rodymui nėra duomenų"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4869,7 +4890,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -5062,7 +5083,7 @@ msgstr "Odoo programos klaida"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/fields/upgrade_dialog.xml:0
|
||||
msgid "Odoo Enterprise"
|
||||
msgstr ""
|
||||
msgstr "Odoo Verslininkystė"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5143,7 +5164,6 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5197,7 +5217,7 @@ msgstr "Tik jūs"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/errors/error_dialogs.xml:0
|
||||
msgid "Oops!"
|
||||
msgstr ""
|
||||
msgstr "Oi!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5814,7 +5834,7 @@ msgstr "Numeris"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
msgid "Refresh"
|
||||
msgstr ""
|
||||
msgstr "Atnaujinti"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6569,6 +6589,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Sugrupuota"
|
||||
|
|
@ -6670,7 +6691,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Priešdėlis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6833,6 +6854,9 @@ msgid ""
|
|||
"country format. You can use '/' to indicate that the partner is not subject "
|
||||
"to tax."
|
||||
msgstr ""
|
||||
"Mokesčių identifikacijos numeris. Vertės čia bus tikrinamos pagal šalies "
|
||||
"formatą. Galite naudoti '/' norėdami nurodyti, kad partneris yra "
|
||||
"neapmokestinamas."
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -6878,6 +6902,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6903,6 +6933,12 @@ msgstr ""
|
|||
"Operacija buvo nutraukta. Tai dažniausiai reiškia, kad vykstanti operacija "
|
||||
"trunka per ilgai."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7693,6 +7729,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Įspėjimas"
|
||||
|
||||
|
|
@ -8114,7 +8151,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "airplane"
|
||||
msgstr ""
|
||||
msgstr "Lėktuvas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8230,7 +8267,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "amusement park"
|
||||
msgstr ""
|
||||
msgstr "Pramogų parkas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8370,13 +8407,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "architect"
|
||||
msgstr ""
|
||||
msgstr "Architektas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "arena"
|
||||
msgstr ""
|
||||
msgstr "Arena"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8418,7 +8455,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "artist"
|
||||
msgstr ""
|
||||
msgstr "Menininkas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8719,7 +8756,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "bakery"
|
||||
msgstr ""
|
||||
msgstr "Kepykla"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8827,7 +8864,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "bank"
|
||||
msgstr ""
|
||||
msgstr "Bankas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8845,7 +8882,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "bar"
|
||||
msgstr ""
|
||||
msgstr "Baras"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8875,7 +8912,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "baseball"
|
||||
msgstr ""
|
||||
msgstr "Beisbolas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9715,7 +9752,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "bridge"
|
||||
msgstr ""
|
||||
msgstr "Bridžas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -10225,7 +10262,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "castle"
|
||||
msgstr ""
|
||||
msgstr "Pilis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -10327,7 +10364,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "chapel"
|
||||
msgstr ""
|
||||
msgstr "Koplyčia"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -10591,7 +10628,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "church"
|
||||
msgstr ""
|
||||
msgstr "Bažnyčia"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -10621,7 +10658,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "circus"
|
||||
msgstr ""
|
||||
msgstr "Cirkas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -10771,7 +10808,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "clock"
|
||||
msgstr ""
|
||||
msgstr "laikrodis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -11149,7 +11186,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "convenience store"
|
||||
msgstr ""
|
||||
msgstr "Savitarnos parduotuvė"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -11695,7 +11732,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "dairy"
|
||||
msgstr ""
|
||||
msgstr "Pieno produktai"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -11887,7 +11924,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "dentist"
|
||||
msgstr ""
|
||||
msgstr "Odontologas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -11899,7 +11936,7 @@ msgstr "skyrius"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "department store"
|
||||
msgstr ""
|
||||
msgstr "Universalinė parduotuvė"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -11959,7 +11996,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "detective"
|
||||
msgstr ""
|
||||
msgstr "Detektyvas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12187,7 +12224,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "doctor"
|
||||
msgstr ""
|
||||
msgstr "Gydytojas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12618,7 +12655,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "electrician"
|
||||
msgstr ""
|
||||
msgstr "Elektrikas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12702,7 +12739,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "engineer"
|
||||
msgstr ""
|
||||
msgstr "Inžinierius"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12720,7 +12757,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "entertainer"
|
||||
msgstr ""
|
||||
msgstr "Pramogų atlikėjas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -13404,7 +13441,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "ferris wheel"
|
||||
msgstr ""
|
||||
msgstr "Apžvalgos ratas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -13416,7 +13453,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "festival"
|
||||
msgstr ""
|
||||
msgstr "Festivalis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14154,13 +14191,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "garden"
|
||||
msgstr ""
|
||||
msgstr "Sodas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "gardener"
|
||||
msgstr ""
|
||||
msgstr "Sodininkas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14742,7 +14779,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "hairdresser"
|
||||
msgstr ""
|
||||
msgstr "Kirpėjas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -15222,7 +15259,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "hindu temple"
|
||||
msgstr ""
|
||||
msgstr "Hinduistų šventykla"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -15384,7 +15421,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "hospital"
|
||||
msgstr ""
|
||||
msgstr "Ligoninė"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -15438,7 +15475,7 @@ msgstr "dešrainis"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "hotel"
|
||||
msgstr ""
|
||||
msgstr "Viešbutis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -16110,7 +16147,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "karaoke"
|
||||
msgstr ""
|
||||
msgstr "Karaoke"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -16554,7 +16591,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "laundry"
|
||||
msgstr ""
|
||||
msgstr "Skalbimas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -16956,7 +16993,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "love hotel"
|
||||
msgstr ""
|
||||
msgstr "Meilės viešbutis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17778,7 +17815,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "mechanic"
|
||||
msgstr ""
|
||||
msgstr "Mechanikas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18228,7 +18265,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "mosque"
|
||||
msgstr ""
|
||||
msgstr "Mečetė"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18414,7 +18451,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "museum"
|
||||
msgstr ""
|
||||
msgstr "Muziejus"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18504,7 +18541,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "national park"
|
||||
msgstr ""
|
||||
msgstr "Nacionalinis parkas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19404,13 +19441,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "painter"
|
||||
msgstr ""
|
||||
msgstr "Dailininkas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "painting"
|
||||
msgstr ""
|
||||
msgstr "Tapyba"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19530,7 +19567,7 @@ msgstr "tėvinis"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "park"
|
||||
msgstr ""
|
||||
msgstr "Parkas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19740,7 +19777,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "pen"
|
||||
msgstr ""
|
||||
msgstr "tušinukas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -20310,7 +20347,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "place of worship"
|
||||
msgstr ""
|
||||
msgstr "Maldos vieta"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -20394,7 +20431,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "plumber"
|
||||
msgstr ""
|
||||
msgstr "Santechnikas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -20568,7 +20605,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "post office"
|
||||
msgstr ""
|
||||
msgstr "Pašto skyrius"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -21180,7 +21217,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "record"
|
||||
msgstr ""
|
||||
msgstr "įrašyti"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -21385,7 +21422,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "resort"
|
||||
msgstr ""
|
||||
msgstr "Kurortas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -21637,7 +21674,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "roller coaster"
|
||||
msgstr ""
|
||||
msgstr "Amerikietiški kalneliai"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -21715,7 +21752,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "rugby"
|
||||
msgstr ""
|
||||
msgstr "Rugdby"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -21931,7 +21968,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "sauna"
|
||||
msgstr ""
|
||||
msgstr "Pirtis/Sauna"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -22003,7 +22040,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "school"
|
||||
msgstr ""
|
||||
msgstr "Mokykla"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -22323,7 +22360,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "shield"
|
||||
msgstr ""
|
||||
msgstr "skydas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -22347,13 +22384,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "shinto shrine"
|
||||
msgstr ""
|
||||
msgstr "Šinto šventykla"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "ship"
|
||||
msgstr ""
|
||||
msgstr "laivas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -22383,7 +22420,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "shooting"
|
||||
msgstr ""
|
||||
msgstr "diagnotika"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -22443,7 +22480,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "shrine"
|
||||
msgstr ""
|
||||
msgstr "Šventykla"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -23391,7 +23428,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "stadium"
|
||||
msgstr ""
|
||||
msgstr "Stadionas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -23571,7 +23608,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "store"
|
||||
msgstr ""
|
||||
msgstr "Parduotuvė"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -23955,7 +23992,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "synagogue"
|
||||
msgstr ""
|
||||
msgstr "Sinagoga"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -24273,7 +24310,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "theme park"
|
||||
msgstr ""
|
||||
msgstr "Teminis parkas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -24741,7 +24778,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "trophy"
|
||||
msgstr ""
|
||||
msgstr "trofėjus"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -24771,7 +24808,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "truck"
|
||||
msgstr ""
|
||||
msgstr "sunkvežimis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -25527,7 +25564,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "wavy"
|
||||
msgstr ""
|
||||
msgstr "banguotas"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -13,13 +13,14 @@
|
|||
# Martin Trigaux, 2023
|
||||
# Henning Fyllingsnes, 2023
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 18:42+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-11-08 21:57+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Norwegian Bokmål <https://translate.odoo.com/projects/odoo-19/"
|
||||
"web/nb_NO/>\n"
|
||||
"Language: nb\n"
|
||||
|
|
@ -174,7 +175,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "100"
|
||||
msgstr ""
|
||||
msgstr "100"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -536,7 +537,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -2259,7 +2260,7 @@ msgstr "Dato og tid"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Datoformat"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3400,7 +3401,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Time"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3421,7 +3422,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.xml:0
|
||||
msgid "Hue"
|
||||
msgstr ""
|
||||
msgstr "Kulør"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3494,6 +3495,14 @@ msgid ""
|
|||
"prevail. So, the color picker will not be displayed on click on the tag."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4058,13 +4067,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Siste 30 dager"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Siste 7 dager"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4082,7 +4091,7 @@ msgstr "Sist oppdatert"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Forrige måned"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4225,7 +4234,7 @@ msgstr "Logg ut"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Innlogging"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4430,6 +4439,12 @@ msgstr ""
|
|||
msgid "Minimal precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4842,6 +4857,12 @@ msgstr ""
|
|||
msgid "No data to display"
|
||||
msgstr "Ingen data å vise"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4857,7 +4878,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -4909,7 +4930,7 @@ msgstr "Ingen treff"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Ingen resultater"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5131,7 +5152,6 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -6557,6 +6577,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
|
@ -6658,7 +6679,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Suffiks"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6866,6 +6887,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6891,6 +6918,12 @@ msgstr ""
|
|||
"Operasjonen ble avbrutt. Dette betyr som regel at den nåværende operasjonen "
|
||||
"tar for mye tid."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7519,7 +7552,7 @@ msgstr "Brukergrensesnitt"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Bruker innstillinger"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7683,6 +7716,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Advarsel"
|
||||
|
||||
|
|
@ -8078,7 +8112,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "etter"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
|
|||
|
|
@ -7,22 +7,24 @@
|
|||
# Gunther Clauwaert <gclauwae@hotmail.com>, 2022
|
||||
# Martin Trigaux, 2023
|
||||
# Jolien De Paepe, 2023
|
||||
# Erwin van der Ploeg <erwin@odooexperts.nl>, 2023
|
||||
# Erwin van der Ploeg <erwin@odooexperts.nl>, 2023, 2025.
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# Bren Driesen <brdri@odoo.com>, 2025, 2026.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-14 08:06+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-03-06 17:47+0000\n"
|
||||
"Last-Translator: Bren Driesen <brdri@odoo.com>\n"
|
||||
"Language-Team: Dutch <https://translate.odoo.com/projects/odoo-19/web/nl/>\n"
|
||||
"Language: nl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.16.1\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -121,7 +123,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/calendar/calendar_filter_section/calendar_filter_section.js:0
|
||||
msgid "+ Add %s"
|
||||
msgstr "+ Toevoegen %s"
|
||||
msgstr "+ %s Toevoegen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -299,7 +301,7 @@ msgstr "3.30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -480,6 +482,18 @@ msgid ""
|
|||
"Temporal mode will merge all samples.<br/>It can lead to partially invalid "
|
||||
"result in case of concurrent profiles.<br/>Use with caution </span>"
|
||||
msgstr ""
|
||||
"<select class=\"form-select\" name=\"profile_aggregation_mode\" "
|
||||
"id=\"profile_aggregation_mode\">\n"
|
||||
" <option value=\"tabs\">Gescheiden "
|
||||
"(één per tabblad)</option>\n"
|
||||
" <option value=\"temporal\">Tijdelijk "
|
||||
"(experimenteel)</option>\n"
|
||||
" </select>\n"
|
||||
" <span id=\"temporal_warning\" "
|
||||
"class=\"alert alert-warning\" style=\"display:none\"><b>Waarschuwing:</b> "
|
||||
"Tijdelijke modus voegt alle voorbeelden samen.<br/>Dit kan leiden tot "
|
||||
"gedeeltelijk ongeldige resultaten in het geval van paralelle profielen.<br/"
|
||||
">Voorzichtig mee omgaan! </span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -539,8 +553,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -896,7 +910,7 @@ msgstr "Foto toevoegen"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "Add Property"
|
||||
msgstr ""
|
||||
msgstr "Eigenschap toevoegen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -914,7 +928,7 @@ msgstr "Voeg een waarde toe"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/search_bar/search_bar.js:0
|
||||
msgid "Add a custom filter"
|
||||
msgstr "Aangepast filter toevoegen"
|
||||
msgstr "Aangepaste filter toevoegen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1040,7 +1054,7 @@ msgstr "Alle gebruikers"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.js:0
|
||||
msgid "Allow expressions"
|
||||
msgstr "Uitdrukkingen toestaan"
|
||||
msgstr "Expressies toestaan"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1164,12 +1178,13 @@ msgstr "Ben je zeker dat je deze ingebedde actie wilt verwijderen?"
|
|||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the %(nbSelected)s selected records?"
|
||||
msgstr ""
|
||||
"Weet je zeker dat je de %(nbSelected)s geselecteerde records wil verwijderen?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the selected record?"
|
||||
msgstr ""
|
||||
msgstr "Weet je zeker dat je de geselecteerde record wil verwijderen?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1187,7 +1202,7 @@ msgstr "Weet je zeker dat je deze kolom wilt verwijderen?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "Are you sure you want to delete this property field?"
|
||||
msgstr ""
|
||||
msgstr "Weet je zeker dat je dit eigenschapsveld wil verwijderen?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1777,7 +1792,7 @@ msgstr "Klikbaar"
|
|||
#: code:addons/web/static/src/views/view_dialogs/select_create_dialog.xml:0
|
||||
#: code:addons/web/static/src/webclient/actions/action_install_kiosk_pwa.xml:0
|
||||
msgid "Close"
|
||||
msgstr "Afsluiten"
|
||||
msgstr "Sluiten"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1901,7 +1916,7 @@ msgstr "Configuratie-instellingen"
|
|||
#. module: web
|
||||
#: model:ir.actions.act_window,name:web.action_base_document_layout_configurator
|
||||
msgid "Configure your document layout"
|
||||
msgstr "Configureer je document lay-out"
|
||||
msgstr "Configureer de lay-out van je document"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2117,7 +2132,7 @@ msgstr "Maak \"%s\" aan"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.js:0
|
||||
msgid "Create %s"
|
||||
msgstr "%s . maken"
|
||||
msgstr "%s maken"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,website_form_label:web.model_res_partner
|
||||
|
|
@ -2176,7 +2191,7 @@ msgstr "Valuta"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Valutaveld"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2212,14 +2227,14 @@ msgstr "Aangepaste ingebedde actie"
|
|||
#: code:addons/web/static/src/search/search_bar/search_bar.js:0
|
||||
#: code:addons/web/static/src/search/search_model.js:0
|
||||
msgid "Custom Filter"
|
||||
msgstr "Aangepast filter"
|
||||
msgstr "Aangepaste filter"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/search_bar/search_bar.xml:0
|
||||
#: code:addons/web/static/src/search/search_bar_menu/search_bar_menu.xml:0
|
||||
msgid "Custom Filter..."
|
||||
msgstr "Aangepast filter..."
|
||||
msgstr "Aangepaste filter..."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2231,7 +2246,7 @@ msgstr "Aangepaste groep"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Custom range"
|
||||
msgstr ""
|
||||
msgstr "Aangepast bereik"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -2255,7 +2270,7 @@ msgstr "DNA"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "DVD"
|
||||
msgstr "DVD"
|
||||
msgstr "Dvd"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2298,7 +2313,7 @@ msgstr "Datum & Tijd"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Datumnotatie"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2565,7 +2580,7 @@ msgstr "Wijzigingen negeren"
|
|||
#: model:ir.model.fields,field_description:web.field_res_users_settings__display_name
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings_embedded_action__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Schermnaam"
|
||||
msgstr "Weergavenaam"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2610,6 +2625,8 @@ msgid ""
|
|||
"Displays or hides the seconds in the datetime value. Affect only the "
|
||||
"readable datetime format."
|
||||
msgstr ""
|
||||
"Toont of verbergt de seconden in de datum-/tijdwaarde. Alleen van invloed op "
|
||||
"de leesbare datum-/tijdwaarde."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2621,7 +2638,7 @@ msgstr "Geeft de tijd in de datumwaarde weer of verbergt deze."
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Displays the date either in 31/01/%(year)s or in Jan 31, %(year)s"
|
||||
msgstr ""
|
||||
msgstr "Geeft de datum weer als 31/01/%(year)s of als 31 januari %(year)s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2846,7 +2863,7 @@ msgstr "E-mail"
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings__embedded_actions_config_ids
|
||||
msgid "Embedded Actions Config"
|
||||
msgstr ""
|
||||
msgstr "Configuratie ingebedde acties"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3071,7 +3088,7 @@ msgstr "Rad"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/field_selector/field_selector_field.js:0
|
||||
msgid "Field Selector"
|
||||
msgstr "Veldselector"
|
||||
msgstr "Veldkiezer"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3212,6 +3229,8 @@ msgid ""
|
|||
"For example, if the value is \"1\" and you enter \"+=2\", it will be updated "
|
||||
"to \"3\"."
|
||||
msgstr ""
|
||||
"Als de waarde bijvoorbeeld \"1\" is en je voert \"+=2\" in, dan wordt deze "
|
||||
"bijgewerkt naar \"3\"."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3389,6 +3408,9 @@ msgid ""
|
|||
"click the %(upload_icon)s button now to ensure your work is saved before you "
|
||||
"exit this tab."
|
||||
msgstr ""
|
||||
"Let op! Je recente wijzigingen zijn te groot om automatisch op te slaan. "
|
||||
"Klik nu op de %(upload_icon)s-knop om ervoor te zorgen dat je werk wordt "
|
||||
"opgeslagen voordat je dit tabblad verlaat."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3459,7 +3481,7 @@ msgstr "Home menu"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Uur"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3562,6 +3584,16 @@ msgstr ""
|
|||
"de bewerking van het label voorrang. De kleurkiezer wordt in dat geval niet "
|
||||
"weergegeven bij het klikken op het label."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
"Als deze optie is aangevinkt, worden de selectievakjes in een kolom "
|
||||
"weergegeven. Anders worden ze naast elkaar weergegeven."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3717,7 +3749,7 @@ msgstr "Interval"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "Ongeldige weergavenaam"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3883,18 +3915,20 @@ msgid ""
|
|||
"It will be removed for everyone using the \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
msgstr ""
|
||||
"Het wordt verwijderd voor iedereen die de %(parentFieldLabel)s \"%"
|
||||
"(parentName)s\" gebruikt."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "It will be removed for everyone!"
|
||||
msgstr ""
|
||||
msgstr "Het wordt voor iedereen verwijderd!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Jan 31, %s"
|
||||
msgstr ""
|
||||
msgstr "31 januari %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4143,19 +4177,19 @@ msgstr "Groot"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "Laatste 12 maanden"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Laatste 30 dagen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Laatste 7 dagen"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4173,7 +4207,7 @@ msgstr "Laatst bijgewerkt op"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Laatste maand"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4208,7 +4242,7 @@ msgstr "Latijns kruis"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Layout"
|
||||
msgstr "Layout"
|
||||
msgstr "Lay-out"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__layout_background
|
||||
|
|
@ -4255,7 +4289,7 @@ msgstr "Laden"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/widgets/res_config_dev_tool.xml:0
|
||||
msgid "Load demo data"
|
||||
msgstr "Laad demo data"
|
||||
msgstr "Demodata laden"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4316,7 +4350,7 @@ msgstr "Afmelden"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Inloggen"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4471,12 +4505,12 @@ msgstr "Afspraak onderwerp"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory limit (in bytes)"
|
||||
msgstr ""
|
||||
msgstr "Geheugenlimiet (in bytes)"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory profile"
|
||||
msgstr ""
|
||||
msgstr "Geheugenprofiel"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4522,6 +4556,12 @@ msgstr "Melkweg"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Minimale precisie"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr "Minimum aantal cijfers"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4550,7 +4590,7 @@ msgstr "Ontbrekend record id"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/record.js:0
|
||||
msgid "Missing required fields"
|
||||
msgstr ""
|
||||
msgstr "Ontbrekende verplichte velden"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4637,7 +4677,7 @@ msgstr "Maand"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Month to date"
|
||||
msgstr ""
|
||||
msgstr "Maand tot nu toe"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4761,7 +4801,7 @@ msgstr "Mijn Odoo.com-account"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "My Preferences"
|
||||
msgstr ""
|
||||
msgstr "Mijn voorkeuren"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4934,6 +4974,12 @@ msgstr "Geen data"
|
|||
msgid "No data to display"
|
||||
msgstr "Geen gegevens om te tonen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr "Geen gegevens om te exporteren"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4949,8 +4995,8 @@ msgstr "Er kan geen apparaat worden gevonden."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Er is geen emoji die overeenkomt met je zoekopdracht"
|
||||
msgid "No emojis match your search"
|
||||
msgstr "Er zijn geen emoji's die overeenkomen met je zoekopdracht"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4977,7 +5023,7 @@ msgstr "Geen record gevonden"
|
|||
#: code:addons/web/static/src/views/fields/formatters.js:0
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.js:0
|
||||
msgid "No records"
|
||||
msgstr "Geen regels"
|
||||
msgstr "Geen records"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5001,7 +5047,7 @@ msgstr "Geen resultaat gevonden"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Geen resultaten"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5057,6 +5103,8 @@ msgid ""
|
|||
"Not possible to create monetary field because there is no currency on "
|
||||
"current model."
|
||||
msgstr ""
|
||||
"Het is niet mogelijk om een monetair veld te maken omdat er geen valuta is "
|
||||
"in het huidige model."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5227,7 +5275,6 @@ msgstr "Oh nee!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5741,7 +5788,7 @@ msgstr "Eigenschappen"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_properties_base_definition
|
||||
msgid "Properties Base Definition"
|
||||
msgstr ""
|
||||
msgstr "Eigenschappen Basisdefinitie"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5872,7 +5919,7 @@ msgstr "Recordregels"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "Record memory"
|
||||
msgstr ""
|
||||
msgstr "Recordgeheugen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6508,7 +6555,7 @@ msgstr "Stel een tijdzone in op je gebruiker"
|
|||
#: code:addons/web/static/src/views/fields/badge/badge_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/badge_selection/list_badge_selection_field.js:0
|
||||
msgid "Set an integer field to use colors with the badge."
|
||||
msgstr ""
|
||||
msgstr "Stel een geheelveld in om kleuren te gebruiken bij de badge."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6675,10 +6722,11 @@ msgstr "Speciaal:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Gestapeld"
|
||||
|
|
@ -6780,7 +6828,7 @@ msgstr "Stijlfout"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Achtervoegsel"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6994,11 +7042,18 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "Het domein mag geen niet-letterlijke waarden bevatten"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "Het bestand is geen afbeelding. Het formaat kan niet worden gewijzigd"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
msgid "The ids in %(field_name)s must not be duplicated: “%(action_ids)s”"
|
||||
msgstr ""
|
||||
"De id's in %(field_name)s mogen niet gedupliceerd worden: \"%(action_ids)s\""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -7007,6 +7062,8 @@ msgid ""
|
|||
"The ids in %(field_name)s must only be integers or \"false\": “%"
|
||||
"(action_ids)s”"
|
||||
msgstr ""
|
||||
"De id's in %(field_name)s mogen alleen gehele getallen of \"false\" zijn: \"%"
|
||||
"(action_ids)s\""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7019,6 +7076,12 @@ msgstr ""
|
|||
"De bewerking is onderbroken. Dit betekent meestal dat de huidige bewerking "
|
||||
"te lang duurt."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "Formaat wijzigen van de afbeelding mislukt"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7055,6 +7118,8 @@ msgid ""
|
|||
"The user should have one unique embedded action setting per user setting, "
|
||||
"action and record id."
|
||||
msgstr ""
|
||||
"De gebruiker moet één unieke embedded actie-instelling hebben per "
|
||||
"gebruikersinstelling, actie en record-id."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7134,7 +7199,7 @@ msgstr "Dit veld is al laatste"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/signature/name_and_signature.xml:0
|
||||
msgid "This file is invalid. Please select an image."
|
||||
msgstr "Dit bestand is ongeldig. Selecteer een afbeelding."
|
||||
msgstr "Dit bestand is ongeldig. Selecteer een afbeelding."
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.preview_externalreport
|
||||
|
|
@ -7252,7 +7317,7 @@ msgstr "Zoekpaneel in-/uitschakelen"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/datetime/datetime_picker.xml:0
|
||||
msgid "Toggle date range mode"
|
||||
msgstr ""
|
||||
msgstr "Schakelen tussen datumbereiken"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7557,7 +7622,7 @@ msgstr "Uploaden en instellen"
|
|||
#: code:addons/web/static/src/views/fields/pdf_viewer/pdf_viewer_field.xml:0
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Upload your file"
|
||||
msgstr "Upload je bestand"
|
||||
msgstr "Bestand uploaden"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7632,6 +7697,8 @@ msgid ""
|
|||
"Use the operators \"+=\", \"-=\", \"*=\" and \"/=\" to update the current "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Gebruik de operatoren \"+=\", \"-=\", \"*=\" en \"/=\" om de actuele waarde "
|
||||
"bij te werken."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7679,12 +7746,12 @@ msgstr "Gebruikersinterface"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Gebruikersinstellingen"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
msgid "User Settings for Embedded Actions"
|
||||
msgstr ""
|
||||
msgstr "Gebruikersinstellingen voor ingesloten acties"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7725,7 +7792,7 @@ msgstr "VS-knop"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
msgid "Validation Error"
|
||||
msgstr "Bevestiging fout"
|
||||
msgstr "Validatiefout"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7770,7 +7837,7 @@ msgstr "Video"
|
|||
#: code:addons/web/static/src/views/list/list_renderer.xml:0
|
||||
#: model:ir.model,name:web.model_ir_ui_view
|
||||
msgid "View"
|
||||
msgstr "Weergave"
|
||||
msgstr "Bekijken"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7812,7 +7879,7 @@ msgstr "Weergave: %(displayName)s"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_viewer/file_viewer.xml:0
|
||||
msgid "Viewer"
|
||||
msgstr "Viewer"
|
||||
msgstr "Kijker"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7843,6 +7910,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Waarschuwing"
|
||||
|
||||
|
|
@ -7980,7 +8048,7 @@ msgstr "Jaar"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Year to date"
|
||||
msgstr ""
|
||||
msgstr "Jaar tot nu toe"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8029,7 +8097,7 @@ msgstr "Je kunt de app installeren vanuit het browsermenu"
|
|||
#. odoo-python
|
||||
#: code:addons/web/models/properties_base_definition.py:0
|
||||
msgid "You can not read that field definition."
|
||||
msgstr ""
|
||||
msgstr "Je kan die velddefinitie niet lezen."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8061,7 +8129,7 @@ msgstr "Je hebt exportrechten nodig om de /json route te gebruiken"
|
|||
msgid ""
|
||||
"You need to select a model before opening the dynamic placeholder selector."
|
||||
msgstr ""
|
||||
"Je moet een model selecteren voordat je de dynamische placeholder kiezen "
|
||||
"Je moet een model selecteren voordat je de dynamische placeholder-kiezer "
|
||||
"opent."
|
||||
|
||||
#. module: web
|
||||
|
|
@ -8252,7 +8320,7 @@ msgstr "aesculapius"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "na"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9229,7 +9297,7 @@ msgstr "kever"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "before"
|
||||
msgstr ""
|
||||
msgstr "voor"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -10693,7 +10761,7 @@ msgstr "kind"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "child of"
|
||||
msgstr "kind van"
|
||||
msgstr "onderliggend element van"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12852,7 +12920,7 @@ msgstr "empanada"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/blank_component.xml:0
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "leeg"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14682,7 +14750,7 @@ msgstr "sprinkhaan"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater or equal to"
|
||||
msgstr ""
|
||||
msgstr "groter dan of gelijk aan"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -15636,7 +15704,7 @@ msgstr "zandloper met lopend zand"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/calendar/calendar_common/calendar_common_popover.js:0
|
||||
msgid "hours"
|
||||
msgstr "uren"
|
||||
msgstr "uur"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -15930,7 +15998,7 @@ msgstr "invoer latijnse letter"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "input Latin lowercase"
|
||||
msgstr "invoer Latijnse kleine letters"
|
||||
msgstr "invoer Latijnse kleine letters"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -15948,7 +16016,7 @@ msgstr "invoer latijnse letter"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "input latin lowercase"
|
||||
msgstr "invoer latijnse kleine letters"
|
||||
msgstr "invoer Latijnse kleine letters"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17148,13 +17216,13 @@ msgstr "laag"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower or equal to"
|
||||
msgstr ""
|
||||
msgstr "kleiner dan of gelijk aan"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower than"
|
||||
msgstr ""
|
||||
msgstr "kleiner dan"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18894,7 +18962,7 @@ msgstr "geen voetgangers"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor.xml:0
|
||||
msgid "no records"
|
||||
msgstr "Geen records"
|
||||
msgstr "geen records"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19022,7 +19090,7 @@ msgstr "notities"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "numbers"
|
||||
msgstr "nummers"
|
||||
msgstr "getallen"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19118,7 +19186,7 @@ msgstr "kantoormedewerker"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "officer"
|
||||
msgstr "officier"
|
||||
msgstr "Agent"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -22569,7 +22637,7 @@ msgstr "boodschappentassen"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "shopping cart"
|
||||
msgstr "winkelwagentje"
|
||||
msgstr "winkelmandje"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26619,7 +26687,7 @@ msgstr "suf gezicht"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "worker"
|
||||
msgstr "werker"
|
||||
msgstr "werknemer"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26883,7 +26951,7 @@ msgstr "— druk"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/commands/command_items.xml:0
|
||||
msgid "— search for"
|
||||
msgstr "— zoeken naar"
|
||||
msgstr "— zoeken naar"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26993,6 +27061,12 @@ msgstr "“vacature”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Er is geen emoji die overeenkomt met je zoekopdracht"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Hoek"
|
||||
|
||||
|
|
|
|||
|
|
@ -41,13 +41,15 @@
|
|||
# Tomasz Leppich <t.leppich@gmail.com>, 2023
|
||||
# Tadeusz Karpiński <tadeuszkarpinski@gmail.com>, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
# "Marta (wacm)" <wacm@odoo.com>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 10:08+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-02-25 14:49+0000\n"
|
||||
"Last-Translator: \"Marta (wacm)\" <wacm@odoo.com>\n"
|
||||
"Language-Team: Polish <https://translate.odoo.com/projects/odoo-19/web/pl/>\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -56,7 +58,7 @@ msgstr ""
|
|||
"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"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -99,13 +101,13 @@ msgstr "(%(mbLoaded)s/%(mbTotal)sMB)"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/widgets/res_config_edition.xml:0
|
||||
msgid "(Community Edition)"
|
||||
msgstr "(Edycja społecznościowa)"
|
||||
msgstr "(Edycja Community)"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu_items.xml:0
|
||||
msgid "(change)"
|
||||
msgstr "(zmiana)"
|
||||
msgstr "(zmień)"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -333,7 +335,7 @@ msgstr "3.30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -514,6 +516,18 @@ msgid ""
|
|||
"Temporal mode will merge all samples.<br/>It can lead to partially invalid "
|
||||
"result in case of concurrent profiles.<br/>Use with caution </span>"
|
||||
msgstr ""
|
||||
"<select class=\"form-select\" name=\"profile_aggregation_mode\" "
|
||||
"id=\"profile_aggregation_mode\">\n"
|
||||
" <option value=\"tabs\">Oddzielone "
|
||||
"(jeden na zakładkę)</option>\n"
|
||||
" <option value=\"temporal\">Czasowy "
|
||||
"(eksperymentalny)</option>\n"
|
||||
" </select>\n"
|
||||
" <span id=\"temporal_warning\" "
|
||||
"class=\"alert alert-warning\" style=\"display:none\"><b>Ostrzeżenie:</b> "
|
||||
"Tryb czasowy scali wszystkie próbki.<br/>Może to prowadzić do częściowo "
|
||||
"nieprawidłowych wyników w przypadku równoległych profili.<br/>Korzystaj "
|
||||
"ostrożnie </span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -573,8 +587,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -927,7 +941,7 @@ msgstr "Dodaj zdjęcie"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "Add Property"
|
||||
msgstr ""
|
||||
msgstr "Dodaj właściwość"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1011,13 +1025,13 @@ msgstr "Dostosuj swoje filtry i stwórz nowy rekord."
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/signature/signature_dialog.xml:0
|
||||
msgid "Adopt & Sign"
|
||||
msgstr "Zaadaptuj i podpisz"
|
||||
msgstr "Przyjmij i podpisz"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/signature/signature_dialog.xml:0
|
||||
msgid "Adopt Your Signature"
|
||||
msgstr "Zaadoptuj swój podpis"
|
||||
msgstr "Przyjmij swój podpis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1194,13 +1208,13 @@ msgstr "Czy na pewno chcesz usunąć to osadzone działanie?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the %(nbSelected)s selected records?"
|
||||
msgstr ""
|
||||
msgstr "Czy na pewno chcesz usunąć wybrane rekordy z pliku %(nbSelected)s?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the selected record?"
|
||||
msgstr ""
|
||||
msgstr "Czy na pewno chcesz usunąć wybrany rekord?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1218,7 +1232,7 @@ msgstr "Czy na pewno chcesz usunąć tę kolumnę?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "Are you sure you want to delete this property field?"
|
||||
msgstr ""
|
||||
msgstr "Czy na pewno chcesz usunąć to pole właściwości?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1338,13 +1352,13 @@ msgstr "POWRÓT"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "BACK arrow"
|
||||
msgstr "Strzałka powrotu"
|
||||
msgstr "Strzałka WSTECZ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/dynamic_placeholder_popover.xml:0
|
||||
msgid "Back"
|
||||
msgstr "Powrót"
|
||||
msgstr "Wstecz"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1461,7 +1475,7 @@ msgstr "Niebieski"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_icon/boolean_icon_field.js:0
|
||||
msgid "Boolean Icon"
|
||||
msgstr "Ikona Boolean"
|
||||
msgstr "Ikona Logiczna"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1470,8 +1484,8 @@ msgid ""
|
|||
"Boolean field from the model used in the relation, which indicates whether "
|
||||
"the state is folded or not."
|
||||
msgstr ""
|
||||
"Pole typu Boolean z modelu używanego w relacji, które wskazuje, czy stan "
|
||||
"jest złożony, czy nie."
|
||||
"Pole logiczne z modelu używanego w relacji, które wskazuje, czy stan jest "
|
||||
"złożony, czy nie."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1516,7 +1530,7 @@ msgid ""
|
|||
"all purposes when it is used on documents, including legally binding "
|
||||
"contracts."
|
||||
msgstr ""
|
||||
"Klikając przycisk Zaadaptuj i podpisz, zgadzam się, że wybrany podpis/"
|
||||
"Klikając przycisk zaakceptuj i podpisz, zgadzam się, że wybrany podpis/"
|
||||
"inicjały będzie ważną elektroniczną reprezentacją mojego odręcznego podpisu/"
|
||||
"inicjałów dla wszystkich celów, kiedy będzie używany na dokumentach, w tym "
|
||||
"na prawnie wiążących umowach."
|
||||
|
|
@ -1538,7 +1552,7 @@ msgstr "Bajty"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/binary.js:0
|
||||
msgid "Bytes|Kb|Mb|Gb|Tb|Pb|Eb|Zb|Yb"
|
||||
msgstr "Bytes|Kb|Mb|Gb|Tb|Pb|Eb|Zb|Yb"
|
||||
msgstr "Bajty|Kb|Mb|Gb|Tb|Pb|Eb|Zb|Yb"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1690,7 +1704,7 @@ msgstr "Pole wyboru"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/many2many_checkboxes/many2many_checkboxes_field.js:0
|
||||
msgid "Checkboxes"
|
||||
msgstr "Checkboxy"
|
||||
msgstr "Pola wyboru"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1917,7 +1931,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/debug/debug_menu_items.xml:0
|
||||
#: code:addons/web/static/src/views/debug_items.js:0
|
||||
msgid "Computed Arch"
|
||||
msgstr "Wyliczona architektura"
|
||||
msgstr "Obliczony arch"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1928,7 +1942,7 @@ msgstr "Warunek:"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Ustawienia konfiguracji"
|
||||
msgstr "Konfiguracja ustawień"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.actions.act_window,name:web.action_base_document_layout_configurator
|
||||
|
|
@ -2070,13 +2084,13 @@ msgstr "Skopiuj do schowka"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.frontend_layout
|
||||
msgid "Copyright &copy;"
|
||||
msgstr "Prawa autorskie &copy;"
|
||||
msgstr "Copyright &copy;"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/widgets/res_config_edition.xml:0
|
||||
msgid "Copyright © 2004"
|
||||
msgstr "Prawa autorskie © 2004"
|
||||
msgstr "Copyright © 2004"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2143,7 +2157,7 @@ msgstr "Utwórz"
|
|||
#: code:addons/web/static/src/views/fields/properties/property_tags.js:0
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.js:0
|
||||
msgid "Create \"%s\""
|
||||
msgstr "Stwórz \"%s\""
|
||||
msgstr "Utwórz \"%s\""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2166,7 +2180,7 @@ msgstr "Twórz i edytuj..."
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.js:0
|
||||
msgid "Create..."
|
||||
msgstr "Stwórz..."
|
||||
msgstr "Utwórz..."
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__create_uid
|
||||
|
|
@ -2208,7 +2222,7 @@ msgstr "Waluta"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Pole waluty"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2220,13 +2234,13 @@ msgstr "Pole wartości bieżącej"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/tabs/color_picker_custom_tab.js:0
|
||||
msgid "Custom"
|
||||
msgstr "Własne"
|
||||
msgstr "Niestandardowe"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
msgid "Custom %s"
|
||||
msgstr "Własny %s"
|
||||
msgstr "Niestandardowy %s"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__custom_colors
|
||||
|
|
@ -2263,7 +2277,7 @@ msgstr "Niestandardowa grupa"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Custom range"
|
||||
msgstr ""
|
||||
msgstr "Zakres niestandardowy"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -2330,7 +2344,7 @@ msgstr "Data i czas"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Format daty"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2641,6 +2655,8 @@ msgid ""
|
|||
"Displays or hides the seconds in the datetime value. Affect only the "
|
||||
"readable datetime format."
|
||||
msgstr ""
|
||||
"Wyświetla lub ukrywa sekundy w wartości datetime. Wpływa tylko na czytelny "
|
||||
"format datetime."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2652,7 +2668,7 @@ msgstr "Wyświetla lub ukrywa czas w wartości daty/godziny."
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Displays the date either in 31/01/%(year)s or in Jan 31, %(year)s"
|
||||
msgstr ""
|
||||
msgstr "Wyświetla datę w formacie 31/01/%(year)s lub 31 stycznia %(year)s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2762,7 +2778,7 @@ msgstr "Podpisz"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record.xml:0
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Menu rozwijane"
|
||||
msgstr "Rozwijane menu"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2876,7 +2892,7 @@ msgstr "E-mail"
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_res_users_settings__embedded_actions_config_ids
|
||||
msgid "Embedded Actions Config"
|
||||
msgstr ""
|
||||
msgstr "Konfiguracja osadzonych działań"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3243,6 +3259,8 @@ msgid ""
|
|||
"For example, if the value is \"1\" and you enter \"+=2\", it will be updated "
|
||||
"to \"3\"."
|
||||
msgstr ""
|
||||
"Na przykład, jeśli wartość wynosi „1”, a wprowadzisz „+=2”, zostanie ona "
|
||||
"zaktualizowana do „3”."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3420,6 +3438,9 @@ msgid ""
|
|||
"click the %(upload_icon)s button now to ensure your work is saved before you "
|
||||
"exit this tab."
|
||||
msgstr ""
|
||||
"Uwaga! Twoje ostatnie zmiany są zbyt duże, aby można je było zapisać "
|
||||
"automatycznie. Kliknij przycisk %(upload_icon)s, aby zapisać swoją pracę "
|
||||
"przed zamknięciem tej karty."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3490,7 +3511,7 @@ msgstr "Menu główne"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Godzina"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3592,6 +3613,16 @@ msgstr ""
|
|||
"koloru jest również ustawione, edycja tagu będzie nadrzędna. Tak więc "
|
||||
"selektor kolorów nie będzie wyświetlany po kliknięciu tagu."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
"Jeśli zaznaczysz tę opcję, pola wyboru będą wyświetlane w kolumnie. W "
|
||||
"przeciwnym razie będą one wyświetlane w linii."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3748,7 +3779,7 @@ msgstr "Interwał"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "Nieprawidłowa nazwa wyświetlana"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3912,18 +3943,20 @@ msgid ""
|
|||
"It will be removed for everyone using the \"%(parentName)s\" %"
|
||||
"(parentFieldLabel)s."
|
||||
msgstr ""
|
||||
"Zostanie on usunięty dla wszystkich korzystających z „%(parentName)s ” %"
|
||||
"(parentFieldLabel)s."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "It will be removed for everyone!"
|
||||
msgstr ""
|
||||
msgstr "Zostanie usunięty dla wszystkich!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Jan 31, %s"
|
||||
msgstr ""
|
||||
msgstr "31 stycznia %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4172,19 +4205,19 @@ msgstr "Duży"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "Ostatnie 12 miesięcy"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Ostatnie 30 dni"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Ostatnie 7 dni"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4202,7 +4235,7 @@ msgstr "Data ostatniej aktualizacji"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Ostatni miesiąc"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4345,7 +4378,7 @@ msgstr "Wyloguj"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Login"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4499,12 +4532,12 @@ msgstr "Temat spotkania"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory limit (in bytes)"
|
||||
msgstr ""
|
||||
msgstr "Limit pamięci (w bajtach)"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Memory profile"
|
||||
msgstr ""
|
||||
msgstr "Profil pamięci"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4550,6 +4583,12 @@ msgstr "Droga Mleczna"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Minimalna precyzja"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr "Minimalna liczba cyfr"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4578,7 +4617,7 @@ msgstr "Brakuje id rekordu"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/model/relational_model/record.js:0
|
||||
msgid "Missing required fields"
|
||||
msgstr ""
|
||||
msgstr "Brakujące pola obowiązkowe"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4665,7 +4704,7 @@ msgstr "Miesiąc"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Month to date"
|
||||
msgstr ""
|
||||
msgstr "Za miesiąc"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4789,7 +4828,7 @@ msgstr "Moje konto Odoo.com"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "My Preferences"
|
||||
msgstr ""
|
||||
msgstr "Moje preferencje"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4844,7 +4883,7 @@ msgstr "Nowe wydarzenie"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "New Property"
|
||||
msgstr "Nowa własność"
|
||||
msgstr "Nowa właściwość"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4877,7 +4916,7 @@ msgstr "Nowy:"
|
|||
#: code:addons/web/static/src/core/pager/pager.xml:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_controller.xml:0
|
||||
msgid "Next"
|
||||
msgstr "Następny"
|
||||
msgstr "Dalej"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4962,6 +5001,12 @@ msgstr "Brak danych"
|
|||
msgid "No data to display"
|
||||
msgstr "Brak danych do wyświetlenia"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr "Brak danych do eksportu"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4977,8 +5022,8 @@ msgstr "Nie można znaleźć żadnego urządzenia."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Żadne emoji nie pasuje do Twojego wyszukiwania"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5029,7 +5074,7 @@ msgstr "Nic nie znaleziono"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Brak wyników"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5085,6 +5130,8 @@ msgid ""
|
|||
"Not possible to create monetary field because there is no currency on "
|
||||
"current model."
|
||||
msgstr ""
|
||||
"Nie można utworzyć pola monetarnego, ponieważ w bieżącym modelu nie ma "
|
||||
"waluty."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5255,7 +5302,6 @@ msgstr "O kurcze!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5767,7 +5813,7 @@ msgstr "Właściwości"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_properties_base_definition
|
||||
msgid "Properties Base Definition"
|
||||
msgstr ""
|
||||
msgstr "Ogólna definicja właściwości"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5898,7 +5944,7 @@ msgstr "Reguły rekordu"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/debug/profiling/profiling_item.xml:0
|
||||
msgid "Record memory"
|
||||
msgstr ""
|
||||
msgstr "Pamięć rekordu"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6534,7 +6580,7 @@ msgstr "Ustaw strefę czasową na swoim użytkowniku"
|
|||
#: code:addons/web/static/src/views/fields/badge/badge_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/badge_selection/list_badge_selection_field.js:0
|
||||
msgid "Set an integer field to use colors with the badge."
|
||||
msgstr ""
|
||||
msgstr "Ustaw pole liczby całkowitej, aby używać kolorów z plakietką."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6683,8 +6729,8 @@ msgid ""
|
|||
"Something went wrong... If you really are stuck, share the report with your "
|
||||
"friendly support service"
|
||||
msgstr ""
|
||||
"Coś poszło nie tak... Jeśli utknąłeś, udostępnij raport przyjaznemu działowi "
|
||||
"wsparcia"
|
||||
"Coś poszło nie tak... Jeśli utknąłeś, udostępnij raport naszemu "
|
||||
"sympatycznemu działowi wsparcia"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6701,10 +6747,11 @@ msgstr "Specjalne:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Ułożone"
|
||||
|
|
@ -6806,7 +6853,7 @@ msgstr "Błąd stylu"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Sufiks"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7021,11 +7068,19 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "W domenie nie powinny występować wartości inne niż literały."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "Plik nie jest obrazem, zmiana rozmiaru nie jest możliwa."
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
msgid "The ids in %(field_name)s must not be duplicated: “%(action_ids)s”"
|
||||
msgstr ""
|
||||
"Identyfikatory w pliku %(field_name)s nie mogą się powtarzać: „%"
|
||||
"(action_ids)s”"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -7034,6 +7089,8 @@ msgid ""
|
|||
"The ids in %(field_name)s must only be integers or \"false\": “%"
|
||||
"(action_ids)s”"
|
||||
msgstr ""
|
||||
"Identyfikatory w pliku %(field_name)s muszą być wyłącznie liczbami "
|
||||
"całkowitymi lub wartością „false”: „%(action_ids)s”"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7046,6 +7103,12 @@ msgstr ""
|
|||
"Operacja została przerwana. Zwykle oznacza to, że bieżąca operacja zajmuje "
|
||||
"zbyt dużo czasu."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "Zmiana rozmiaru obrazu nie powiodła się"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7081,6 +7144,8 @@ msgid ""
|
|||
"The user should have one unique embedded action setting per user setting, "
|
||||
"action and record id."
|
||||
msgstr ""
|
||||
"Użytkownik powinien mieć jedno unikalne ustawienie akcji osadzonej na każde "
|
||||
"ustawienie użytkownika, akcję i identyfikator rekordu."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7280,7 +7345,7 @@ msgstr "Przełącz panel wyszukiwania"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/datetime/datetime_picker.xml:0
|
||||
msgid "Toggle date range mode"
|
||||
msgstr ""
|
||||
msgstr "Przełącz tryb zakresu dat"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7658,6 +7723,7 @@ msgid ""
|
|||
"Use the operators \"+=\", \"-=\", \"*=\" and \"/=\" to update the current "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Użyj operatorów „+=”, „-=”, „*=” i „/=” aby zaktualizować bieżącą wartość."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7704,12 +7770,12 @@ msgstr "Interfejs użytkownika"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Ustawienia użytkownika"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
msgid "User Settings for Embedded Actions"
|
||||
msgstr ""
|
||||
msgstr "Ustawienia użytkownika dla działań osadzonych"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7868,6 +7934,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Ostrzeżenie"
|
||||
|
||||
|
|
@ -8003,7 +8070,7 @@ msgstr "Rok"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Year to date"
|
||||
msgstr ""
|
||||
msgstr "Rok do chwili obecnej"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8052,7 +8119,7 @@ msgstr "Możesz zainstalować aplikację z menu przeglądarki"
|
|||
#. odoo-python
|
||||
#: code:addons/web/models/properties_base_definition.py:0
|
||||
msgid "You can not read that field definition."
|
||||
msgstr ""
|
||||
msgstr "Nie można odczytać tej definicji pola."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8274,7 +8341,7 @@ msgstr "Eskulap"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "po"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9251,7 +9318,7 @@ msgstr "żuk"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "before"
|
||||
msgstr ""
|
||||
msgstr "przed"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12874,7 +12941,7 @@ msgstr "empanada"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/blank_component.xml:0
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "pusty"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14704,7 +14771,7 @@ msgstr "konik polny"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater or equal to"
|
||||
msgstr ""
|
||||
msgstr "większy lub równy"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -17170,13 +17237,13 @@ msgstr "niski"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower or equal to"
|
||||
msgstr ""
|
||||
msgstr "niższy lub równy"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "lower than"
|
||||
msgstr ""
|
||||
msgstr "niższy niż"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26899,7 +26966,7 @@ msgstr "zombie"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.xml:0
|
||||
msgid "— press"
|
||||
msgstr "- prasa"
|
||||
msgstr "— naciśnij"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -27015,6 +27082,12 @@ msgstr "\"wakat\""
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Żadne emoji nie pasuje do Twojego wyszukiwania"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Kąt"
|
||||
|
||||
|
|
|
|||
|
|
@ -22,13 +22,14 @@
|
|||
# Manuela Silva <mmsrs@sky.com>, 2023
|
||||
# Reinaldo Ramos <reinaldo.ramos@arxi.pt>, 2023
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 21:36+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-11-08 19:01+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Portuguese <https://translate.odoo.com/projects/odoo-19/web/"
|
||||
"pt/>\n"
|
||||
"Language: pt\n"
|
||||
|
|
@ -554,8 +555,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -2312,7 +2313,7 @@ msgstr "Data & Hora"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Formato de Data"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3470,7 +3471,7 @@ msgstr "Menu da página inicial"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Hora"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3571,6 +3572,14 @@ msgstr ""
|
|||
"edição do marcador prevalecerá. Portanto, o seletor de cores não será "
|
||||
"exibido ao clicar no marcador."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4158,13 +4167,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Últimos 30 dias"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Últimos 7 dias"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4325,7 +4334,7 @@ msgstr "Terminar sessão"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Início de Sessão"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4530,6 +4539,12 @@ msgstr "Via Láctea"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Precisão mínima"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4942,6 +4957,12 @@ msgstr "Nenhum dado"
|
|||
msgid "No data to display"
|
||||
msgstr "Sem dados a mostrar"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4957,8 +4978,8 @@ msgstr "Nenhum dispositivo encontrado."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Nenhum emoji corresponde à sua busca"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5009,7 +5030,7 @@ msgstr "Nenhum resultado encontrado"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Nenhum resultado"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5235,7 +5256,6 @@ msgstr "Ops!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -6685,10 +6705,11 @@ msgstr "Especial:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Empilhados"
|
||||
|
|
@ -6790,7 +6811,7 @@ msgstr "Erro de estilo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Sufixo"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7003,6 +7024,12 @@ msgstr "O domínio envolve não literais. Sua avaliação pode falhar."
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "O domínio não deve envolver não literais"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -7028,6 +7055,12 @@ msgstr ""
|
|||
"A operação foi interrompida. Isso geralmente significa que a operação atual "
|
||||
"está demorando muito."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7688,7 +7721,7 @@ msgstr "Interface do usuário"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Configurações do Utilizador"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7852,6 +7885,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Aviso"
|
||||
|
||||
|
|
@ -8259,7 +8293,7 @@ msgstr "aesculapius"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "após"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -27000,6 +27034,12 @@ msgstr "“vagas”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Nenhum emoji corresponde à sua busca"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Ângulo"
|
||||
|
||||
|
|
|
|||
|
|
@ -13,13 +13,15 @@
|
|||
# Kevilyn Rosa, 2023
|
||||
# Éder Brito <britoederr@gmail.com>, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
# "Maitê Dietze (madi)" <madi@odoo.com>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 10:08+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-12-27 08:37+0000\n"
|
||||
"Last-Translator: \"Maitê Dietze (madi)\" <madi@odoo.com>\n"
|
||||
"Language-Team: Portuguese (Brazil) <https://translate.odoo.com/projects/"
|
||||
"odoo-19/web/pt_BR/>\n"
|
||||
"Language: pt_BR\n"
|
||||
|
|
@ -28,7 +30,7 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : ((n != 0 && n % "
|
||||
"1000000 == 0) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -305,7 +307,7 @@ msgstr "3.30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -486,6 +488,17 @@ msgid ""
|
|||
"Temporal mode will merge all samples.<br/>It can lead to partially invalid "
|
||||
"result in case of concurrent profiles.<br/>Use with caution </span>"
|
||||
msgstr ""
|
||||
"<select class=\"form-select\" name=\"profile_aggregation_mode\" "
|
||||
"id=\"profile_aggregation_mode\">\n"
|
||||
" <option value=\"tabs\">Separados (um "
|
||||
"por aba)</option>\n"
|
||||
" <option value=\"temporal\">Temporal "
|
||||
"(experimental)</option>\n"
|
||||
" </select> <span id=\"temporal_warning\" "
|
||||
"class=\"alert alert-warning\" style=\"display:none\"><b> Aviso:</b> O modo "
|
||||
"temporal mescla todas as amostras.<br/>Isso pode levar a resultados "
|
||||
"parcialmente inválidos no caso de perfis simultâneos.<br/>Use com cautela </"
|
||||
"span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -545,8 +558,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -901,7 +914,7 @@ msgstr "Adicionar foto"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.xml:0
|
||||
msgid "Add Property"
|
||||
msgstr ""
|
||||
msgstr "Adicionar propriedade"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1169,12 +1182,13 @@ msgstr "Tem certeza de que quer remover essa ação incorporada?"
|
|||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the %(nbSelected)s selected records?"
|
||||
msgstr ""
|
||||
"Tem certeza de que quer excluir os registros selecionados %(nbSelected)s?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/multi_selection_buttons.js:0
|
||||
msgid "Are you sure you want to delete the selected record?"
|
||||
msgstr ""
|
||||
msgstr "Tem certeza de que quer excluir o registro selecionado?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1192,7 +1206,7 @@ msgstr "Tem certeza de que quer excluir esta coluna?"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/properties_field.js:0
|
||||
msgid "Are you sure you want to delete this property field?"
|
||||
msgstr ""
|
||||
msgstr "Tem certeza de que deseja excluir este campo de propriedade?"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2182,7 +2196,7 @@ msgstr "Moeda"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Campo de moeda"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2303,7 +2317,7 @@ msgstr "Data e hora"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Formato de data"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3461,7 +3475,7 @@ msgstr "Menu da página inicial"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Hora"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3562,6 +3576,14 @@ msgstr ""
|
|||
"edição do marcador prevalecerá. Portanto, o seletor de cores não será "
|
||||
"exibido ao clicar no marcador."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4143,19 +4165,19 @@ msgstr "Grande"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "Últimos 12 meses"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Últimos 30 dias"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Últimos 7 dias"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4173,7 +4195,7 @@ msgstr "Última atualização em"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Último mês"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4316,7 +4338,7 @@ msgstr "Sair"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Login"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4521,6 +4543,12 @@ msgstr "Via Láctea"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Precisão mínima"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4933,6 +4961,12 @@ msgstr "Nenhum dado"
|
|||
msgid "No data to display"
|
||||
msgstr "Nenhum dado para exibir"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4948,8 +4982,8 @@ msgstr "Nenhum dispositivo encontrado."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Nenhum emoji corresponde à sua busca"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5000,7 +5034,7 @@ msgstr "Nenhum resultado encontrado"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Nenhum resultado"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5226,7 +5260,6 @@ msgstr "Ops!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -6676,10 +6709,11 @@ msgstr "Especial:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Empilhado"
|
||||
|
|
@ -6781,7 +6815,7 @@ msgstr "Erro de estilo"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Sufixo"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6994,6 +7028,12 @@ msgstr "O domínio envolve não literais. Sua avaliação pode falhar."
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "O domínio não deve envolver não literais"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -7019,6 +7059,12 @@ msgstr ""
|
|||
"A operação foi interrompida. Isso geralmente significa que a operação atual "
|
||||
"está demorando muito."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7679,7 +7725,7 @@ msgstr "Interface do usuário"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Configurações do usuário"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7843,6 +7889,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Aviso"
|
||||
|
||||
|
|
@ -8250,7 +8297,7 @@ msgstr "aesculapius"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "após"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26991,6 +27038,12 @@ msgstr "“vagas”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Nenhum emoji corresponde à sua busca"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Ângulo"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -4,13 +4,15 @@
|
|||
#
|
||||
# Translators:
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
# "Anastasiia Koroleva (koan)" <koan@odoo.com>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 02:34+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-02-11 17:40+0000\n"
|
||||
"Last-Translator: \"Anastasiia Koroleva (koan)\" <koan@odoo.com>\n"
|
||||
"Language-Team: Russian <https://translate.odoo.com/projects/odoo-19/web/ru/"
|
||||
">\n"
|
||||
"Language: ru\n"
|
||||
|
|
@ -20,7 +22,7 @@ msgstr ""
|
|||
"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"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -451,12 +453,12 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "<i class=\"fa fa-download\"/> (html)"
|
||||
msgstr ""
|
||||
msgstr "<i class=\"fa fa-download\"/> (HTML)"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "<i class=\"fa fa-download\"/> (json)"
|
||||
msgstr ""
|
||||
msgstr "<i class=\"fa fa-download\"/> (JSON)"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
|
|
@ -537,8 +539,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -823,7 +825,7 @@ msgstr "Действия"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/cog_menu/cog_menu.xml:0
|
||||
msgid "Actions menu"
|
||||
msgstr ""
|
||||
msgstr "Меню действий"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -881,7 +883,7 @@ msgstr "Добавить"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/x2many/x2many_field.js:0
|
||||
msgid "Add %s"
|
||||
msgstr ""
|
||||
msgstr "Добавить: %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -994,12 +996,12 @@ msgstr "Африка"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Aggregate SQL"
|
||||
msgstr ""
|
||||
msgstr "Агрегировать SQL"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Aggregation mode"
|
||||
msgstr ""
|
||||
msgstr "Режим агрегации"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1746,7 +1748,7 @@ msgstr "Очистить всё"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record.xml:0
|
||||
msgid "Click to select"
|
||||
msgstr ""
|
||||
msgstr "Нажмите, чтобы выбрать"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1930,7 +1932,7 @@ msgstr "Соединение восстановлено. Вы снова онл
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Constant Time"
|
||||
msgstr ""
|
||||
msgstr "Константное время"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_partner
|
||||
|
|
@ -2086,7 +2088,7 @@ msgstr "Количество"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.js:0
|
||||
msgid "Count Limit"
|
||||
msgstr ""
|
||||
msgstr "Ограничение кол-ва"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__country_id
|
||||
|
|
@ -2117,7 +2119,7 @@ msgstr "Создать %s"
|
|||
#. module: web
|
||||
#: model:ir.model,website_form_label:web.model_res_partner
|
||||
msgid "Create a Customer"
|
||||
msgstr ""
|
||||
msgstr "Создать клиента"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2171,7 +2173,7 @@ msgstr "Валюта"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Поле валюты"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2183,7 +2185,7 @@ msgstr "Поле текущего значения"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/tabs/color_picker_custom_tab.js:0
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
msgstr "Пользовательский"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2294,7 +2296,7 @@ msgstr "Дата и время"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Формат даты"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2574,7 +2576,7 @@ msgstr "Отображать в карточках"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Display presets"
|
||||
msgstr ""
|
||||
msgstr "Отобразить пресеты"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2811,7 +2813,7 @@ msgstr "Редактировать теги"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/search_bar_menu/search_bar_menu.xml:0
|
||||
msgid "Edit favorite"
|
||||
msgstr ""
|
||||
msgstr "Редактировать избранное"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2983,7 +2985,7 @@ msgstr "Внешний ID"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_field.js:0
|
||||
msgid "Extra Rights"
|
||||
msgstr ""
|
||||
msgstr "Дополнительные права"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3014,7 +3016,7 @@ msgstr "Коэффициент"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/search_model.js:0
|
||||
msgid "Failed to evaluate the context: %(context)s."
|
||||
msgstr ""
|
||||
msgstr "Не удалось обработать контекст: %(context)s."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3062,7 +3064,7 @@ msgstr "Феррис"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/field_selector/field_selector_field.js:0
|
||||
msgid "Field Selector"
|
||||
msgstr ""
|
||||
msgstr "Выбор поля"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3235,12 +3237,12 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Frames"
|
||||
msgstr ""
|
||||
msgstr "Фреймы"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Frames + sql (Combined)"
|
||||
msgstr ""
|
||||
msgstr "Фреймы + SQL (Объединенные)"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3331,7 +3333,7 @@ msgstr "Зеленый"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_popover.xml:0
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
msgstr "Группа"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3349,7 +3351,7 @@ msgstr "Группировать по"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.js:0
|
||||
msgid "HTML"
|
||||
msgstr ""
|
||||
msgstr "HTML"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_ir_http
|
||||
|
|
@ -3386,7 +3388,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
msgstr "Поддержка"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3449,7 +3451,7 @@ msgstr "Главное меню"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Час"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3473,7 +3475,7 @@ msgstr "Как получить приложение"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.xml:0
|
||||
msgid "Hue"
|
||||
msgstr ""
|
||||
msgstr "Оттенок"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3550,6 +3552,14 @@ msgstr ""
|
|||
"тега будет иметь приоритет. Поэтому палитра цветов не будет отображаться при "
|
||||
"нажатии на тег."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3597,7 +3607,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.js:0
|
||||
msgid "If true, non-literals are accepted"
|
||||
msgstr ""
|
||||
msgstr "Если значение установлено в TRUE, допускаются нелитералы"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3702,7 +3712,7 @@ msgstr "Интервал"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record_quick_create.js:0
|
||||
msgid "Invalid Display Name"
|
||||
msgstr ""
|
||||
msgstr "Недопустимое отображаемое имя"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3744,7 +3754,7 @@ msgstr "Недействительные адреса электронной п
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/settings_form_view/widgets/res_config_invite_users.js:0
|
||||
msgid "Invalid email addresses: %(two_addresses)s"
|
||||
msgstr ""
|
||||
msgstr "Недействительные адреса электронной почты: %(two_addresses)s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4132,13 +4142,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Последние 30 дней"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Последние 7 дней"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4156,7 +4166,7 @@ msgstr "Дата последнего обновления:"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Прошлый месяц"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4299,7 +4309,7 @@ msgstr "Выйти"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Войти"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4504,6 +4514,12 @@ msgstr "Млечный Путь"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Минимальная точность"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4719,7 +4735,7 @@ msgstr "Многострочный текст"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Multiple profile"
|
||||
msgstr ""
|
||||
msgstr "Множественный профиль"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4916,6 +4932,12 @@ msgstr "Нет данных"
|
|||
msgid "No data to display"
|
||||
msgstr "Нет данных для отображения"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4931,8 +4953,8 @@ msgstr "Устройство не найдено."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Эмодзи по вашему запросу не найдены"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4983,7 +5005,7 @@ msgstr "Результатов не найдено"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Нет результатов"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5209,7 +5231,6 @@ msgstr "Ох!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5276,6 +5297,8 @@ msgstr "Упс!"
|
|||
#: code:addons/web/static/src/views/fields/file_handler.js:0
|
||||
msgid "Oops! '%(fileName)s' didn’t upload since its format isn’t allowed."
|
||||
msgstr ""
|
||||
"Ой! Файл «%(fileName)s» не был загружен, так как его формат не "
|
||||
"поддерживается."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5300,7 +5323,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
msgstr "Открыть"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5676,7 +5699,7 @@ msgstr "Печать"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/cog_menu/cog_menu.js:0
|
||||
msgid "Print report: %s"
|
||||
msgstr ""
|
||||
msgstr "Печать отчета: %s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6093,12 +6116,12 @@ msgstr "Кнопка SOS"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "SQL density"
|
||||
msgstr ""
|
||||
msgstr "Плотность SQL"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "SQL no gap"
|
||||
msgstr ""
|
||||
msgstr "SQL без разрывов"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6255,7 +6278,7 @@ msgstr "Поиск меню..."
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.js:0
|
||||
msgid "Search more..."
|
||||
msgstr ""
|
||||
msgstr "Искать больше..."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6607,7 +6630,7 @@ msgstr "Смайлики и эмоции"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/tabs/color_picker_solid_tab.js:0
|
||||
msgid "Solid"
|
||||
msgstr ""
|
||||
msgstr "Сплошная"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6628,8 +6651,8 @@ msgid ""
|
|||
"Something went wrong... If you really are stuck, share the report with your "
|
||||
"friendly support service"
|
||||
msgstr ""
|
||||
"Что-то пошло не так... Если вы действительно застряли, поделитесь отчетом с "
|
||||
"вашей дружелюбной службой поддержки"
|
||||
"Что-то пошло не так... Если вы не можете решить проблему самостоятельно, "
|
||||
"поделитесь отчетом с нашей службой поддержки"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6646,10 +6669,11 @@ msgstr "Специальный:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "С накоплением"
|
||||
|
|
@ -6751,7 +6775,7 @@ msgstr "Ошибка стиля"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Суффикс"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6956,13 +6980,19 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.js:0
|
||||
msgid "The domain involves non-literals. Their evaluation might fail."
|
||||
msgstr ""
|
||||
msgstr "Домен содержит нелитералы. Их вычисление может завершиться с ошибкой."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.js:0
|
||||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
msgstr "Домен не должен содержать нелитералы"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr "Этот файл не является изображением, изменение размера невозможно"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -6989,6 +7019,12 @@ msgstr ""
|
|||
"Операция была прервана. Обычно это означает, что текущая операция занимает "
|
||||
"слишком много времени."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr "Ошибка при изменении размера изображения"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7065,7 +7101,7 @@ msgstr "Этот блок присутствует не всегда в зави
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "This date is in the future"
|
||||
msgstr ""
|
||||
msgstr "Эта дата в будущем"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7357,7 +7393,7 @@ msgstr "Тип:"
|
|||
#: code:addons/web/static/src/views/fields/many2many_tags/many2many_tags_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/many2one/many2one_field.js:0
|
||||
msgid "Typeahead search"
|
||||
msgstr ""
|
||||
msgstr "Автопоиск"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7491,7 +7527,7 @@ msgstr "Без названия"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/list/list_confirmation_dialog.xml:0
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
msgstr "Обновить"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7578,7 +7614,7 @@ msgstr "Использовать другого пользователя"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Use execution context"
|
||||
msgstr ""
|
||||
msgstr "Использовать контекст выполнения"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7638,7 +7674,7 @@ msgstr "Интерфейс пользователя"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Настройки пользователя"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7802,6 +7838,7 @@ msgstr "Туалет"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Предупреждение"
|
||||
|
||||
|
|
@ -8207,7 +8244,7 @@ msgstr "эскулап"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "после"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14643,7 +14680,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater than"
|
||||
msgstr ""
|
||||
msgstr "больше чем"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -25452,7 +25489,7 @@ msgstr "вирус"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/vcard.py:0
|
||||
msgid "vobject library is not installed"
|
||||
msgstr ""
|
||||
msgstr "библиотека vobject не установлена"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26948,6 +26985,12 @@ msgstr "«вакансия»"
|
|||
msgid "ココ"
|
||||
msgstr "Коко"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Эмодзи по вашему запросу не найдены"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Error"
|
||||
#~ msgstr "Ошибка"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -16,13 +16,14 @@
|
|||
# Tadej Lupšina <tadej@hbs.si>, 2023
|
||||
# Tomaž Jug <tomaz@editor.si>, 2023
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 21:28+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-11-08 19:01+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Slovenian <https://translate.odoo.com/projects/odoo-19/web/sl/"
|
||||
">\n"
|
||||
"Language: sl\n"
|
||||
|
|
@ -540,7 +541,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -2140,7 +2141,7 @@ msgstr "Valuta"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Polje Valuta"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2261,7 +2262,7 @@ msgstr "Datum & čas"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Oblika datuma"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3402,7 +3403,7 @@ msgstr "Meni \"Domov\""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Ura"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3423,7 +3424,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.xml:0
|
||||
msgid "Hue"
|
||||
msgstr ""
|
||||
msgstr "Odtenek"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3496,6 +3497,14 @@ msgid ""
|
|||
"prevail. So, the color picker will not be displayed on click on the tag."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3646,7 +3655,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
msgid "Invalid Operation"
|
||||
msgstr ""
|
||||
msgstr "Neveljavna operacija"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4060,13 +4069,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Zadnjih 30 dni"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Zadnjih 7 dni"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4227,7 +4236,7 @@ msgstr "Odjava"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Prijava"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4432,6 +4441,12 @@ msgstr ""
|
|||
msgid "Minimal precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4844,6 +4859,12 @@ msgstr "Ni podatkov"
|
|||
msgid "No data to display"
|
||||
msgstr "Ni podatkov za prikaz"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4859,7 +4880,7 @@ msgstr "Ni mogoče najti nobene naprave."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -4911,7 +4932,7 @@ msgstr "Ni najdenih rezultatov"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Ni rezultatov"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5133,7 +5154,6 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5737,6 +5757,10 @@ msgid ""
|
|||
"\n"
|
||||
"Think twice before you click that 'Delete' button!"
|
||||
msgstr ""
|
||||
"Pripravljeni, da zapis izgine v nič? Ste prepričani?\n"
|
||||
"Izginil bo za vedno!\n"
|
||||
"\n"
|
||||
"Premislite dvakrat, preden kliknete gumb 'Izbriši'!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6557,6 +6581,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Zloženo"
|
||||
|
|
@ -6658,7 +6683,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Pripona"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6869,6 +6894,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6892,6 +6923,12 @@ msgid ""
|
|||
"is taking too much time."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7332,7 +7369,7 @@ msgstr "Nedoločeno"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_header.xml:0
|
||||
msgid "Unfold"
|
||||
msgstr ""
|
||||
msgstr "Razvij"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7518,7 +7555,7 @@ msgstr "Uporabniški vmesnik"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Uporabniške nastavitve"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7615,7 +7652,7 @@ msgstr "Prikaz"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/list/list_renderer.xml:0
|
||||
msgid "View Button"
|
||||
msgstr ""
|
||||
msgstr "Gumb za prikaz"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7682,6 +7719,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Opozorilo"
|
||||
|
||||
|
|
@ -8078,7 +8116,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "po"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12187,7 +12225,7 @@ msgstr "dokument"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "does not contain"
|
||||
msgstr ""
|
||||
msgstr "ne vsebuje"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
|
|||
26822
odoo-bringout-oca-ocb-web/web/i18n/sq.po
Normal file
26822
odoo-bringout-oca-ocb-web/web/i18n/sq.po
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,29 +1,30 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * web
|
||||
# * web
|
||||
#
|
||||
# Translators:
|
||||
# Djordje Marjanovic <djvmarjanovic@gmail.com>, 2022
|
||||
# Bojan Borovnjak <bojan.borovnjak@modoolar.com>, 2022
|
||||
# Martin Trigaux, 2022
|
||||
# Uros Kalajdzic <ukalajdzic@gmail.com>, 2022
|
||||
# Dragan Vukosavljevic <dragan.vukosavljevic@gmail.com>, 2023
|
||||
#
|
||||
# Dragan Vukosavljevic <dragan.vukosavljevic@gmail.com>, 2023, 2026.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:55+0000\n"
|
||||
"Last-Translator: Dragan Vukosavljevic <dragan.vukosavljevic@gmail.com>, "
|
||||
"2023\n"
|
||||
"Language-Team: Serbian (https://app.transifex.com/odoo/teams/41243/sr/)\n"
|
||||
"Language: sr\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-02-11 17:40+0000\n"
|
||||
"Last-Translator: Dragan Vukosavljevic <dragan.vukosavljevic@gmail.com>\n"
|
||||
"Language-Team: Serbian (Latin script) <https://translate.odoo.com/projects/"
|
||||
"odoo-19/web/sr_Latn/>\n"
|
||||
"Language: sr@latin\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"
|
||||
"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"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -532,7 +533,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -543,7 +544,7 @@ msgstr "<span>$ <span class=\"oe_currency_value\">19,250.00</span></span>"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span>5.00</span>"
|
||||
msgstr ""
|
||||
msgstr "<span>5.00</span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -759,13 +760,13 @@ msgstr "Pristup odbijen"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
msgid "Access Error"
|
||||
msgstr ""
|
||||
msgstr "Greška u pristupu"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/debug_items.js:0
|
||||
msgid "Access Rights"
|
||||
msgstr ""
|
||||
msgstr "Prava pristupa"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -796,7 +797,7 @@ msgstr "ID Radnje:"
|
|||
#: code:addons/web/static/src/search/action_menus/action_menus.xml:0
|
||||
#: code:addons/web/static/src/search/cog_menu/cog_menu.xml:0
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
msgstr "Radnje"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -844,7 +845,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "Activities"
|
||||
msgstr ""
|
||||
msgstr "Aktivnosti"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -944,7 +945,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Address"
|
||||
msgstr ""
|
||||
msgstr "Adresa"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1066,7 +1067,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_upload/file_upload_service.js:0
|
||||
msgid "An error occured while uploading."
|
||||
msgstr ""
|
||||
msgstr "Došlo je do greške prilikom učitavanja."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1230,13 +1231,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/debug_items.js:0
|
||||
msgid "Attachments"
|
||||
msgstr ""
|
||||
msgstr "Prilozi"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "Australia"
|
||||
msgstr ""
|
||||
msgstr "Australija"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1287,7 +1288,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/dynamic_placeholder_popover.xml:0
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
msgstr "Nazad"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1304,7 +1305,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Background"
|
||||
msgstr ""
|
||||
msgstr "Pozadina"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__layout_background_image
|
||||
|
|
@ -1351,7 +1352,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/barcode/barcode_dialog.xml:0
|
||||
msgid "Barcode Scanner"
|
||||
msgstr ""
|
||||
msgstr "Barkod čitač"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1383,7 +1384,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/image/image_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.xml:0
|
||||
msgid "Binary file"
|
||||
msgstr ""
|
||||
msgstr "Binarna datoteka"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1458,7 +1459,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/calendar/calendar_controller.js:0
|
||||
#: code:addons/web/static/src/views/view_hook.js:0
|
||||
msgid "Bye-bye, record!"
|
||||
msgstr ""
|
||||
msgstr "Zbogom, zapis!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1638,7 +1639,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/user_switch/user_switch.xml:0
|
||||
msgid "Choose a user"
|
||||
msgstr ""
|
||||
msgstr "Izaberite korisnika"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1666,7 +1667,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "Christmas"
|
||||
msgstr ""
|
||||
msgstr "Božić"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1748,7 +1749,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/webclient/burger_menu/burger_menu.xml:0
|
||||
#: code:addons/web/static/src/webclient/navbar/navbar.xml:0
|
||||
msgid "Close menu"
|
||||
msgstr ""
|
||||
msgstr "Zatvori meni"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1852,7 +1853,7 @@ msgstr "Uslov:"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr ""
|
||||
msgstr "Podešavanje konfiguracije"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.actions.act_window,name:web.action_base_document_layout_configurator
|
||||
|
|
@ -1866,7 +1867,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/model/relational_model/dynamic_list.js:0
|
||||
#: code:addons/web/static/src/webclient/switch_company_menu/switch_company_menu.xml:0
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
msgstr "Potvrdi"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1896,7 +1897,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_partner
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
msgstr "Kontakt"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1936,13 +1937,13 @@ msgstr "Sadržaj:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
msgstr "Nastavi"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/x2many/x2many_field.xml:0
|
||||
msgid "Control panel buttons"
|
||||
msgstr ""
|
||||
msgstr "Dugmad kontrolnog panela"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1963,7 +1964,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/views/fields/copy_clipboard/copy_clipboard_field.js:0
|
||||
msgid "Copied"
|
||||
msgstr ""
|
||||
msgstr "Kopirano"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2122,7 +2123,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/monetary/monetary_field.js:0
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
msgstr "Valuta"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2140,7 +2141,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/tabs/color_picker_custom_tab.js:0
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
msgstr "Prilagođeno"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2213,7 +2214,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/debug_items.js:0
|
||||
msgid "Data"
|
||||
msgstr ""
|
||||
msgstr "Podaci"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2249,7 +2250,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Format datuma"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2274,7 +2275,7 @@ msgstr "Dan"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Days"
|
||||
msgstr ""
|
||||
msgstr "dana"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2430,7 +2431,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/float_toggle/float_toggle_field.js:0
|
||||
msgid "Digits"
|
||||
msgstr ""
|
||||
msgstr "Brojevi"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2675,7 +2676,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/kanban/kanban_record.xml:0
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
msgstr "Padajući meni"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2929,7 +2930,7 @@ msgstr ""
|
|||
#: code:addons/web/controllers/export.py:0
|
||||
#: code:addons/web/static/src/views/view_hook.js:0
|
||||
msgid "External ID"
|
||||
msgstr ""
|
||||
msgstr "Externi ID"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3047,7 +3048,7 @@ msgstr "Polje:"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/debug_items.js:0
|
||||
msgid "Fields"
|
||||
msgstr ""
|
||||
msgstr "Polja"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3272,7 +3273,7 @@ msgstr "Zeleno"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_popover.xml:0
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
msgstr "Grupa"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3327,7 +3328,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/user_menu/user_menu_items.js:0
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
msgstr "Pomoć"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3467,7 +3468,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_icon/boolean_icon_field.js:0
|
||||
msgid "Icon"
|
||||
msgstr ""
|
||||
msgstr "Ikona"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3484,6 +3485,14 @@ msgid ""
|
|||
"prevail. So, the color picker will not be displayed on click on the tag."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -3581,7 +3590,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/install_scoped_app/install_scoped_app.xml:0
|
||||
msgid "Install"
|
||||
msgstr ""
|
||||
msgstr "Instaliraj"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3799,7 +3808,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "Japan"
|
||||
msgstr ""
|
||||
msgstr "Japan"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3997,7 +4006,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Label"
|
||||
msgstr ""
|
||||
msgstr "Natpis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4048,7 +4057,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Poslednjih 30 dana"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4215,7 +4224,7 @@ msgstr ""
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Prijava"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4358,7 +4367,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/image_url/image_url_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
msgid "Medium"
|
||||
msgstr ""
|
||||
msgstr "Posrednik"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4420,6 +4429,12 @@ msgstr ""
|
|||
msgid "Minimal precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4460,7 +4475,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/ace/ace_field.js:0
|
||||
msgid "Mode"
|
||||
msgstr ""
|
||||
msgstr "Model"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4503,7 +4518,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_ir_model
|
||||
msgid "Models"
|
||||
msgstr ""
|
||||
msgstr "Modeli"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4541,7 +4556,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Months"
|
||||
msgstr ""
|
||||
msgstr "Meseci"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4689,7 +4704,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/calendar/quick_create/calendar_quick_create.xml:0
|
||||
msgid "Name:"
|
||||
msgstr ""
|
||||
msgstr "Naziv:"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4753,7 +4768,7 @@ msgstr "Sledeće"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_viewer/file_viewer.xml:0
|
||||
msgid "Next (Right-Arrow)"
|
||||
msgstr ""
|
||||
msgstr "Sledeće (Desna strelica)"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4830,6 +4845,12 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/action_helper.xml:0
|
||||
#: code:addons/web/static/src/views/no_content_helpers.xml:0
|
||||
msgid "No data to display"
|
||||
msgstr "Nema podataka za prikaz"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -4847,7 +4868,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -4899,7 +4920,7 @@ msgstr "Nema pronađenih rezultata"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Nema rezultata"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4924,7 +4945,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/calendar/calendar_controller.js:0
|
||||
#: code:addons/web/static/src/views/view_hook.js:0
|
||||
msgid "No, keep it"
|
||||
msgstr ""
|
||||
msgstr "Ne, zadrži ga"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4972,7 +4993,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
msgstr "U redu"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5110,7 +5131,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.webclient_offline
|
||||
msgid "Offline"
|
||||
msgstr ""
|
||||
msgstr "Offline"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5121,7 +5142,6 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5206,7 +5226,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
msgstr "Otvori"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5536,7 +5556,7 @@ msgstr "Prethodno"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_viewer/file_viewer.xml:0
|
||||
msgid "Previous (Left-Arrow)"
|
||||
msgstr ""
|
||||
msgstr "Prethodno (leva-strelica)"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5604,7 +5624,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/column_progress.xml:0
|
||||
msgid "Progress bar"
|
||||
msgstr ""
|
||||
msgstr "Traka napretka"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5669,7 +5689,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Quarter"
|
||||
msgstr ""
|
||||
msgstr "Kvartal"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5730,13 +5750,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu_basic.js:0
|
||||
msgid "Record"
|
||||
msgstr ""
|
||||
msgstr "Zapis"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/debug_items.js:0
|
||||
msgid "Record Rules"
|
||||
msgstr ""
|
||||
msgstr "Pravila zapisa"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5790,7 +5810,7 @@ msgstr "Referenca"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
msgid "Refresh"
|
||||
msgstr ""
|
||||
msgstr "Osveži"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5915,7 +5935,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/color_picker/color_picker.xml:0
|
||||
#: code:addons/web/static/src/webclient/switch_company_menu/switch_company_menu.xml:0
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
msgstr "Resetuj"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6058,7 +6078,7 @@ msgstr "Sačuvaj"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.xml:0
|
||||
msgid "Save & Close"
|
||||
msgstr ""
|
||||
msgstr "Sačuvaj & zatvori"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6202,7 +6222,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu_basic.js:0
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
msgstr "Bezbednost"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6270,7 +6290,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/selection_box.xml:0
|
||||
msgid "Select all"
|
||||
msgstr ""
|
||||
msgstr "Označi sve"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6482,7 +6502,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/image_url/image_url_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
msgid "Size"
|
||||
msgstr ""
|
||||
msgstr "Veličina"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6490,7 +6510,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/image_url/image_url_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
msgid "Small"
|
||||
msgstr ""
|
||||
msgstr "Malo"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6543,6 +6563,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
|
@ -6619,14 +6640,14 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/form/form_error_dialog/form_error_dialog.xml:0
|
||||
msgid "Stay here"
|
||||
msgstr ""
|
||||
msgstr "Ostani ovde"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/integer/integer_field.js:0
|
||||
msgid "Step"
|
||||
msgstr ""
|
||||
msgstr "Korak"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6644,7 +6665,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Sufiks"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6772,7 +6793,7 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:web.external_layout_striped
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_wave
|
||||
msgid "Tax ID"
|
||||
msgstr ""
|
||||
msgstr "ID takse"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6852,6 +6873,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6875,6 +6902,12 @@ msgid ""
|
|||
"is taking too much time."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7121,13 +7154,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu_basic.js:0
|
||||
msgid "Tools"
|
||||
msgstr ""
|
||||
msgstr "Alati"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/widgets/ribbon/ribbon.js:0
|
||||
msgid "Tooltip"
|
||||
msgstr ""
|
||||
msgstr "Objašnjenje"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7201,7 +7234,7 @@ msgstr "Utorak"
|
|||
#: code:addons/web/static/src/views/fields/float_toggle/float_toggle_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/integer/integer_field.js:0
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
msgstr "Vrsta"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7325,7 +7358,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/fields/many2one/many2one.js:0
|
||||
#: code:addons/web/static/src/views/fields/relational_utils.js:0
|
||||
msgid "Unnamed"
|
||||
msgstr ""
|
||||
msgstr "Neimenovano"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7358,7 +7391,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/list/list_confirmation_dialog.xml:0
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
msgstr "Ažuriraj"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7439,7 +7472,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/user_switch/user_switch.xml:0
|
||||
msgid "Use another user"
|
||||
msgstr ""
|
||||
msgstr "Koristite drugog korisnika"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
|
|
@ -7496,12 +7529,12 @@ msgstr "Korisnik"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu_basic.js:0
|
||||
msgid "User Interface"
|
||||
msgstr ""
|
||||
msgstr "Korisnički interfejs"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Podešavanja korisnika"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7571,7 +7604,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Values"
|
||||
msgstr ""
|
||||
msgstr "Vrijednosti"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7584,7 +7617,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_viewer/file_viewer.xml:0
|
||||
msgid "Video"
|
||||
msgstr ""
|
||||
msgstr "Video"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7592,7 +7625,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/views/list/list_renderer.xml:0
|
||||
#: model:ir.model,name:web.model_ir_ui_view
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
msgstr "Pregled"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7634,7 +7667,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_viewer/file_viewer.xml:0
|
||||
msgid "Viewer"
|
||||
msgstr ""
|
||||
msgstr "Posmatrač"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7665,6 +7698,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Upozorenje"
|
||||
|
||||
|
|
@ -7678,7 +7712,7 @@ msgstr ""
|
|||
#. odoo-python
|
||||
#: code:addons/web/models/models.py:0
|
||||
msgid "Warnings"
|
||||
msgstr ""
|
||||
msgstr "Upozorenja"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7804,7 +7838,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Years"
|
||||
msgstr ""
|
||||
msgstr "Godine"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8449,7 +8483,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/search/search_bar/search_bar.js:0
|
||||
#: code:addons/web/static/src/views/view_components/multi_currency_popover.xml:0
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
msgstr "u"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -11317,7 +11351,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "credit"
|
||||
msgstr ""
|
||||
msgstr "potražuje"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -11863,7 +11897,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "department"
|
||||
msgstr ""
|
||||
msgstr "Odeljenje"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12163,7 +12197,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "document"
|
||||
msgstr ""
|
||||
msgstr "dokument"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -18450,7 +18484,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "name"
|
||||
msgstr ""
|
||||
msgstr "Ime"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19590,7 +19624,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "password"
|
||||
msgstr ""
|
||||
msgstr "lozinka"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
|
|||
|
|
@ -25,21 +25,23 @@
|
|||
# Kim Asplund <kim.asplund@gmail.com>, 2023
|
||||
# Daniel Osser <danielosser@gmail.com>, 2023
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
# Hanna Kharraziha <hakha@odoo.com>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 21:14+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"Language-Team: Swedish <https://translate.odoo.com/projects/odoo-19/web/sv/"
|
||||
">\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-03-06 17:48+0000\n"
|
||||
"Last-Translator: Hanna Kharraziha <hakha@odoo.com>\n"
|
||||
"Language-Team: Swedish <https://translate.odoo.com/projects/odoo-19/web/sv/>"
|
||||
"\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.16.1\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -556,8 +558,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -824,7 +826,7 @@ msgstr "Ace-redigerare"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/debug_items.js:0
|
||||
msgid "Action"
|
||||
msgstr "Åtgärder"
|
||||
msgstr "Åtgärd"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -1679,7 +1681,7 @@ msgstr "Kryssrutor"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/file_input/file_input.xml:0
|
||||
msgid "Choose File"
|
||||
msgstr "Välj fil"
|
||||
msgstr "Markera fil"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2137,7 +2139,7 @@ msgstr "Skapa %s"
|
|||
#. module: web
|
||||
#: model:ir.model,website_form_label:web.model_res_partner
|
||||
msgid "Create a Customer"
|
||||
msgstr ""
|
||||
msgstr "Skapa en kund"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2191,7 +2193,7 @@ msgstr "Valuta"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Valuta fält"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2313,7 +2315,7 @@ msgstr "Datum & tid"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Datumformat"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2706,7 +2708,7 @@ msgstr "Gå inte ännu,"
|
|||
#: code:addons/web/static/src/views/fields/many2many_binary/many2many_binary_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/pdf_viewer/pdf_viewer_field.xml:0
|
||||
msgid "Download"
|
||||
msgstr "Nedladdningar"
|
||||
msgstr "Ladda ner"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.actions.server,name:web.download_contact
|
||||
|
|
@ -2907,7 +2909,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.login
|
||||
msgid "Enter your password"
|
||||
msgstr ""
|
||||
msgstr "Ange ditt lösenord"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3146,7 +3148,7 @@ msgstr "Vänd axel"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Float"
|
||||
msgstr "Flottör"
|
||||
msgstr "Flyttal"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3165,7 +3167,7 @@ msgstr "Vik fält"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.js:0
|
||||
msgid "Foldable"
|
||||
msgstr "Vikbar"
|
||||
msgstr "Går att dölja"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3465,7 +3467,7 @@ msgstr "Startmeny"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Timme"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3489,7 +3491,7 @@ msgstr "Så här hämtar du applikationen"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.xml:0
|
||||
msgid "Hue"
|
||||
msgstr ""
|
||||
msgstr "Färgton"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3567,6 +3569,14 @@ msgstr ""
|
|||
"utgåva att gälla. Färgväljaren kommer alltså inte att visas när du klickar "
|
||||
"på taggen."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4152,13 +4162,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "Senaste 30 dagarna"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "Senaste 7 dagarna"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4176,7 +4186,7 @@ msgstr "Senast uppdaterad den"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Förra månaden"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4319,7 +4329,7 @@ msgstr "Logga ut"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Inloggning"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4333,7 +4343,7 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:web.login_layout
|
||||
#: model_terms:ir.ui.view,arch_db:web.view_base_document_layout
|
||||
msgid "Logo"
|
||||
msgstr "Logotyp"
|
||||
msgstr "Logga"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__logo_primary_color
|
||||
|
|
@ -4525,6 +4535,12 @@ msgstr "Vintergatan"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Minimal precision"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4937,6 +4953,12 @@ msgstr "Ingen data"
|
|||
msgid "No data to display"
|
||||
msgstr "Ingen data att visa"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4952,8 +4974,8 @@ msgstr "Ingen enhet kunde hittas."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Ingen emoji matchar din sökning"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5004,7 +5026,7 @@ msgstr "Inga resultat hittade"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Inga resultat"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5230,7 +5252,6 @@ msgstr "Åh, sjutton också!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5290,7 +5311,7 @@ msgstr "Bara du"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/errors/error_dialogs.xml:0
|
||||
msgid "Oops!"
|
||||
msgstr "Oops!"
|
||||
msgstr "Ojdå!"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5611,7 +5632,7 @@ msgstr "Förhindra färg-utgåva"
|
|||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__preview
|
||||
msgid "Preview"
|
||||
msgstr "Förhandsgranskning"
|
||||
msgstr "Förhandsvisning"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.actions.report,name:web.action_report_externalpreview
|
||||
|
|
@ -5733,7 +5754,7 @@ msgstr "Fastigheter"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_properties_base_definition
|
||||
msgid "Properties Base Definition"
|
||||
msgstr ""
|
||||
msgstr "Egenskaper Bas Definition"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5913,7 +5934,7 @@ msgstr "Referens"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
msgid "Refresh"
|
||||
msgstr "Ladda om"
|
||||
msgstr "Uppdatera"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5943,7 +5964,7 @@ msgstr "Relationell tabell"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/image/image_field.js:0
|
||||
msgid "Reload"
|
||||
msgstr "Ladda om"
|
||||
msgstr "Uppdatera"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6337,7 +6358,7 @@ msgstr "Visa exempel"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
msgid "See technical details"
|
||||
msgstr "Se tekniska detaljer"
|
||||
msgstr "Visa teknisk information"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6395,7 +6416,7 @@ msgstr "Välj en vy"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/view_components/selection_box.xml:0
|
||||
msgid "Select all"
|
||||
msgstr "Välj alla"
|
||||
msgstr "Markera alla"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6650,8 +6671,8 @@ msgid ""
|
|||
"Something went wrong... If you really are stuck, share the report with your "
|
||||
"friendly support service"
|
||||
msgstr ""
|
||||
"Någonting gick fel... Om du verkligen har fastnat, dela rapporten med din "
|
||||
"vänliga supporttjänst"
|
||||
"Något verkar ha gått fel... Om du upplever problemet upprepade gånger, kan "
|
||||
"du välja att skicka en felrapport till kundtjänsten"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6668,10 +6689,11 @@ msgstr "Special:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Stackad"
|
||||
|
|
@ -6773,7 +6795,7 @@ msgstr "Stil-fel"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Suffix"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6986,6 +7008,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -7011,6 +7039,12 @@ msgstr ""
|
|||
"Operationen avbröts. Detta innebär vanligtvis att den aktuella operationen "
|
||||
"tar för lång tid."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7663,7 +7697,7 @@ msgstr "Användargränssnitt"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Användarinställningar"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7827,6 +7861,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Varning"
|
||||
|
||||
|
|
@ -8153,7 +8188,7 @@ msgstr "tillbehör"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "accounting"
|
||||
msgstr "redovisning"
|
||||
msgstr "bokföring"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8231,7 +8266,7 @@ msgstr "aesculapius"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "efter"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8686,7 +8721,7 @@ msgstr "automatiserad"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "automobile"
|
||||
msgstr "fordon"
|
||||
msgstr "bil"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -8866,7 +8901,7 @@ msgstr "bageri"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "balance"
|
||||
msgstr "balans"
|
||||
msgstr "saldo"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -9334,7 +9369,7 @@ msgstr "bikini"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "bill"
|
||||
msgstr "räkning"
|
||||
msgstr "leverantörsfaktura"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -12831,7 +12866,7 @@ msgstr "empanadas"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/webclient/actions/blank_component.xml:0
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "tomt"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -19253,7 +19288,7 @@ msgstr "lök"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "oops"
|
||||
msgstr "hoppsan"
|
||||
msgstr "ojdå"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -21472,7 +21507,7 @@ msgstr "religion"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "reload"
|
||||
msgstr "ladda om"
|
||||
msgstr "uppdatera"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -25920,7 +25955,7 @@ msgstr "tjänsteman"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_data.js:0
|
||||
msgid "whoops"
|
||||
msgstr "hoppsan"
|
||||
msgstr "ojdå"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26972,6 +27007,12 @@ msgstr "\"ledig tjänst\""
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Ingen emoji matchar din sökning"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Vinkel"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,13 +12,14 @@
|
|||
# Amin Cheloh <amincheloh@gmail.com>, 2022
|
||||
# Odoo Thaidev <odoothaidev@gmail.com>, 2023
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 21:18+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-11-08 21:57+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Thai <https://translate.odoo.com/projects/odoo-19/web/th/>\n"
|
||||
"Language: th\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -542,8 +543,8 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -2158,7 +2159,7 @@ msgstr "สกุลเงิน"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "ฟิลด์สกุลเงิน"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2279,7 +2280,7 @@ msgstr "วันที่และเวลา"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "รูปแบบวันที่"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3426,7 +3427,7 @@ msgstr "เมนูหลัก"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "ชั่วโมง"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3449,7 +3450,7 @@ msgstr "วิธีรับใบสมัคร"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.xml:0
|
||||
msgid "Hue"
|
||||
msgstr ""
|
||||
msgstr "สี"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3525,6 +3526,14 @@ msgstr ""
|
|||
"โปรดทราบว่าหากตั้งค่าช่องสีไว้ด้วย การแก้ไขแท็กจะมีผลเหนือกว่า ดังนั้น "
|
||||
"ตัวเลือกสีจะไม่ปรากฏขึ้นเมื่อคลิกที่แท็ก"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4099,13 +4108,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "30 วันล่าสุด"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "7 วันล่าสุด"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4123,7 +4132,7 @@ msgstr "อัปเดตครั้งล่าสุดเมื่อ"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "เดือนที่แล้ว"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4266,7 +4275,7 @@ msgstr "ออกระบบ"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "เข้าสู่ระบบ"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4471,6 +4480,12 @@ msgstr "ทางช้างเผือก"
|
|||
msgid "Minimal precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4883,6 +4898,12 @@ msgstr "ไม่มีข้อมูล"
|
|||
msgid "No data to display"
|
||||
msgstr "ไม่มีข้อมูลให้แสดง"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4898,7 +4919,7 @@ msgstr "ไม่พบอุปกรณ์"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -4950,7 +4971,7 @@ msgstr "ไม่พบผลลัพธ์"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "ไม่มีผลลัพธ์"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5174,7 +5195,6 @@ msgstr "โอ้ว!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -6605,10 +6625,11 @@ msgstr "พิเศษ:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "ซ้อนกัน"
|
||||
|
|
@ -6710,7 +6731,7 @@ msgstr "ข้อผิดพลาดในรูปแบบ"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "คำต่อท้าย"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6922,6 +6943,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6945,6 +6972,12 @@ msgid ""
|
|||
"is taking too much time."
|
||||
msgstr "การปฏิบัติการถูกขัดจังหวะ ซึ่งมักจะหมายความว่าการดำเนินการปัจจุบันใช้เวลามากเกินไป"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7305,7 +7338,7 @@ msgstr "ประเภท:"
|
|||
#: code:addons/web/static/src/views/fields/many2many_tags/many2many_tags_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/many2one/many2one_field.js:0
|
||||
msgid "Typeahead search"
|
||||
msgstr ""
|
||||
msgstr "การค้นหาแบบพิมพ์ล่วงหน้า"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7584,7 +7617,7 @@ msgstr "ส่วนติดต่อผู้ใช้"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "การตั้งค่าผู้ใช้"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7748,6 +7781,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "คำเตือน"
|
||||
|
||||
|
|
@ -8146,7 +8180,7 @@ msgstr "เอสคิวลาเปียส"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "หลังจาก"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26887,6 +26921,9 @@ msgstr "“ว่าง”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "มุม"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
31350
odoo-bringout-oca-ocb-web/web/i18n/uz.po
Normal file
31350
odoo-bringout-oca-ocb-web/web/i18n/uz.po
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -11,13 +11,15 @@
|
|||
# Martin Trigaux, 2023
|
||||
# Thi Huong Nguyen, 2023
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# "Thi Huong Nguyen (thng)" <thng@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 04:44+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-12-04 17:51+0000\n"
|
||||
"Last-Translator: \"Thi Huong Nguyen (thng)\" <thng@odoo.com>\n"
|
||||
"Language-Team: Vietnamese <https://translate.odoo.com/projects/odoo-19/web/"
|
||||
"vi/>\n"
|
||||
"Language: vi\n"
|
||||
|
|
@ -25,7 +27,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -302,7 +304,7 @@ msgstr "3.30"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "31/01/%s"
|
||||
msgstr ""
|
||||
msgstr "31/01/%s"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -483,6 +485,18 @@ msgid ""
|
|||
"Temporal mode will merge all samples.<br/>It can lead to partially invalid "
|
||||
"result in case of concurrent profiles.<br/>Use with caution </span>"
|
||||
msgstr ""
|
||||
"<select class=\"form-select\" name=\"profile_aggregation_mode\" "
|
||||
"id=\"profile_aggregation_mode\">\n"
|
||||
" <option value=\"tabs\">Tách biệt "
|
||||
"(một cho mỗi tab)</option>\n"
|
||||
" <option value=\"temporal\">Tạm thời "
|
||||
"(thử nghiệm)</option>\n"
|
||||
" </select>\n"
|
||||
" <span id=\"temporal_warning\" "
|
||||
"class=\"alert alert-warning\" style=\"display:none\"><b> Cảnh báo:</b> Chế "
|
||||
"độ tạm thời sẽ gộp tất cả các mẫu.<br/>Điều này có thể dẫn đến kết quả không "
|
||||
"chính xác một phần trong trường hợp có nhiều hồ sơ đồng thời.<br/>Hãy sử "
|
||||
"dụng cẩn thận </span>"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -542,8 +556,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -2176,7 +2190,7 @@ msgstr "Tiền tệ"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "Trường tiền tệ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2299,7 +2313,7 @@ msgstr "Ngày & giờ"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "Định dạng Ngày"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2548,7 +2562,7 @@ msgstr "Huỷ bỏ mọi thay đổi"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/form/form_error_dialog/form_error_dialog.xml:0
|
||||
msgid "Discard changes"
|
||||
msgstr "Loại bỏ những thay đổi"
|
||||
msgstr "Huỷ bỏ thay đổi"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__display_name
|
||||
|
|
@ -3210,6 +3224,8 @@ msgid ""
|
|||
"For example, if the value is \"1\" and you enter \"+=2\", it will be updated "
|
||||
"to \"3\"."
|
||||
msgstr ""
|
||||
"Ví dụ, nếu giá trị là \"1\" và bạn nhập \"+=2\", nó sẽ được cập nhật thành "
|
||||
"\"3\"."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3387,6 +3403,9 @@ msgid ""
|
|||
"click the %(upload_icon)s button now to ensure your work is saved before you "
|
||||
"exit this tab."
|
||||
msgstr ""
|
||||
"Cảnh báo! Các thay đổi gần đây của bạn quá lớn để lưu tự động. Vui lòng nhấn "
|
||||
"nút %(upload_icon)s ngay để đảm bảo công việc của bạn được lưu trước khi "
|
||||
"thoát khỏi tab này."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3455,7 +3474,7 @@ msgstr "Menu Chính"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Giờ"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3557,6 +3576,14 @@ msgstr ""
|
|||
"tiếp. Lưu ý rằng nếu trường màu cũng được thiết lập, phiên bản thẻ sẽ được "
|
||||
"ưu tiên. Vì vậy, bộ chọn màu sẽ không được hiển thị khi nhấp vào thẻ."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4137,13 +4164,13 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "30 ngày qua"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "7 ngày qua"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4161,7 +4188,7 @@ msgstr "Cập nhật lần cuối vào"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "Tháng trước"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4304,7 +4331,7 @@ msgstr "Đăng xuất"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Đăng nhập"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4509,6 +4536,12 @@ msgstr "Dải Ngân Hà"
|
|||
msgid "Minimal precision"
|
||||
msgstr "Độ chính xác tối thiểu"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4921,6 +4954,12 @@ msgstr "Không có dữ liệu"
|
|||
msgid "No data to display"
|
||||
msgstr "Không có dữ liệu để hiển thị"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4936,8 +4975,8 @@ msgstr "Không tìm thấy thiết bị nào."
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "Không có biểu tượng cảm xúc nào phù hợp với tìm kiếm của bạn"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4988,7 +5027,7 @@ msgstr "Không có kết quả nào"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Không có kết quả"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5212,7 +5251,6 @@ msgstr "Ôi chao!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -5571,12 +5609,12 @@ msgstr "Vui lòng quét lại!"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.brand_promotion_message
|
||||
msgid "Powered by %s%s"
|
||||
msgstr "Cung cấp bởi %s%s"
|
||||
msgstr "Được hỗ trợ bởi %s%s"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.login_layout
|
||||
msgid "Powered by <span>Odoo</span>"
|
||||
msgstr "Cung cấp bởi <span>Odoo</span>"
|
||||
msgstr "Được hỗ trợ bởi <span>Odoo</span>"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6655,10 +6693,11 @@ msgstr "Đặc biệt:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "Speedscope"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "Chồng"
|
||||
|
|
@ -6760,7 +6799,7 @@ msgstr "Lỗi kiểu"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "Hậu tố"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6972,6 +7011,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6997,6 +7042,12 @@ msgstr ""
|
|||
"Thao tác bị gián đoạn. Điều này thường có nghĩa là hoạt động hiện tại cần "
|
||||
"nhiều thời gian hơn để xử lý."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7317,6 +7368,8 @@ msgid ""
|
|||
"Try to add some records, or make sure that there is no\n"
|
||||
" active filter in the search bar."
|
||||
msgstr ""
|
||||
"Hãy thử thêm một số bản ghi, hoặc đảm bảo rằng không có\n"
|
||||
"bộ lọc nào đang hoạt động trong thanh tìm kiếm."
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7366,7 +7419,7 @@ msgstr "Loại:"
|
|||
#: code:addons/web/static/src/views/fields/many2many_tags/many2many_tags_field.js:0
|
||||
#: code:addons/web/static/src/views/fields/many2one/many2one_field.js:0
|
||||
msgid "Typeahead search"
|
||||
msgstr ""
|
||||
msgstr "Tìm kiếm theo kiểu gõ trước"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -7653,7 +7706,7 @@ msgstr "Giao diện Người dùng"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "Cài đặt của người dùng"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7817,6 +7870,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Cảnh báo"
|
||||
|
||||
|
|
@ -8219,7 +8273,7 @@ msgstr "cây gậy của Asclepius"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "sau"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26960,6 +27014,12 @@ msgstr "“vacancy”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "Không có biểu tượng cảm xúc nào phù hợp với tìm kiếm của bạn"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "Góc độ"
|
||||
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-30 18:36+0000\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-02-27 18:38+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
|
@ -510,7 +510,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -3459,6 +3459,14 @@ msgid ""
|
|||
"prevail. So, the color picker will not be displayed on click on the tag."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4390,6 +4398,12 @@ msgstr ""
|
|||
msgid "Minimal precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4802,6 +4816,12 @@ msgstr ""
|
|||
msgid "No data to display"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4817,7 +4837,7 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
|
|
@ -5091,7 +5111,6 @@ msgstr ""
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -6511,6 +6530,7 @@ msgstr ""
|
|||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
|
@ -6820,6 +6840,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6843,6 +6869,12 @@ msgid ""
|
|||
" is taking too much time."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7630,6 +7662,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -15,13 +15,14 @@
|
|||
# Emily Jia <eji@odoo.com>, 2023
|
||||
# Martin Trigaux, 2023
|
||||
# "Tiffany Chang (tic)" <tic@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 15:32+0000\n"
|
||||
"Last-Translator: \"Tiffany Chang (tic)\" <tic@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2025-11-08 21:57+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Chinese (Simplified Han script) <https://translate.odoo.com/"
|
||||
"projects/odoo-19/web/zh_Hans/>\n"
|
||||
"Language: zh_CN\n"
|
||||
|
|
@ -546,8 +547,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -2159,7 +2160,7 @@ msgstr "币别"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "币别字段"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2280,7 +2281,7 @@ msgstr "日期和时间"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "日期格式"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3427,7 +3428,7 @@ msgstr "主页菜单"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "小时"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3450,7 +3451,7 @@ msgstr "如何获取申请表"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.xml:0
|
||||
msgid "Hue"
|
||||
msgstr ""
|
||||
msgstr "色调"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3525,6 +3526,14 @@ msgstr ""
|
|||
"如果选中,点击标签将打开一个可以直接编辑它的表单。请注意,如果还设置了颜色字"
|
||||
"段,则标签编辑将优先。因此,点击标签时不会显示颜色选择器。"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4092,19 +4101,19 @@ msgstr "大"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "过去 12 个月"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "最近30天"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "最近7天"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4122,7 +4131,7 @@ msgstr "上次更新日期"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "上月"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4265,7 +4274,7 @@ msgstr "登出"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "登录"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4470,6 +4479,12 @@ msgstr "银河"
|
|||
msgid "Minimal precision"
|
||||
msgstr "最小精度"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4882,6 +4897,12 @@ msgstr "无数据"
|
|||
msgid "No data to display"
|
||||
msgstr "无数据显示"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4897,8 +4918,8 @@ msgstr "找不到任何设备。"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "没有符合您搜索的表情符号"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4949,7 +4970,7 @@ msgstr "找不到结果"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "没有结果"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5172,7 +5193,6 @@ msgstr "哦,快!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -6602,10 +6622,11 @@ msgstr "特殊:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "测速仪"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "堆叠"
|
||||
|
|
@ -6707,7 +6728,7 @@ msgstr "样式错误"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "后缀"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6917,6 +6938,12 @@ msgstr "域名涉及非字母。它们的评估可能会失败。"
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr "域名不应涉及非字母"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6940,6 +6967,12 @@ msgid ""
|
|||
"is taking too much time."
|
||||
msgstr "操作被中断了。这通常意味着当前的操作花费了太多时间。"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7575,7 +7608,7 @@ msgstr "用户界面"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "用户设置"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7739,6 +7772,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "警告"
|
||||
|
||||
|
|
@ -8136,7 +8170,7 @@ msgstr "医神"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "之后"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26877,6 +26911,12 @@ msgstr "“空缺”"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "没有符合您搜索的表情符号"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "角度"
|
||||
|
||||
|
|
|
|||
|
|
@ -8,13 +8,15 @@
|
|||
# Tony Ng, 2025
|
||||
#
|
||||
# "Dylan Kiss (dyki)" <dyki@odoo.com>, 2025.
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
# "Tony Ng (ngto)" <ngto@odoo.com>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~18.3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 18:36+0000\n"
|
||||
"PO-Revision-Date: 2025-09-16 08:12+0000\n"
|
||||
"Last-Translator: \"Dylan Kiss (dyki)\" <dyki@odoo.com>\n"
|
||||
"POT-Creation-Date: 2026-02-27 18:38+0000\n"
|
||||
"PO-Revision-Date: 2026-01-14 11:38+0000\n"
|
||||
"Last-Translator: \"Tony Ng (ngto)\" <ngto@odoo.com>\n"
|
||||
"Language-Team: Chinese (Traditional Han script) <https://translate.odoo.com/"
|
||||
"projects/odoo-19/web/zh_Hant/>\n"
|
||||
"Language: zh_TW\n"
|
||||
|
|
@ -22,7 +24,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -538,8 +540,8 @@ msgstr "<span id=\"line_tax_ids\">15%</span>"
|
|||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
msgid "<span itemprop=\"name\">Acme Corporation</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.report_invoice_wizard_preview
|
||||
|
|
@ -2149,7 +2151,7 @@ msgstr "貨幣"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Currency field"
|
||||
msgstr ""
|
||||
msgstr "貨幣欄位"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -2270,7 +2272,7 @@ msgstr "日期及時間"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/datetime/datetime_field.js:0
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
msgstr "日期格式"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3097,7 +3099,7 @@ msgstr "篩選"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/pivot/pivot_controller.xml:0
|
||||
msgid "Flip axis"
|
||||
msgstr "翻轉軸"
|
||||
msgstr "對調數軸"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3166,9 +3168,9 @@ msgid ""
|
|||
"\n"
|
||||
"Tip: try to flip axis, filter further or reduce the number of measures."
|
||||
msgstr ""
|
||||
"對於 Excel 兼容性,如果列數超過 16384,則無法匯出資料。\n"
|
||||
"為兼容 Excel,若有超過 16384 個直欄,便無法匯出資料。\n"
|
||||
"\n"
|
||||
"提示:嘗試翻轉軸,進一步過濾或減少所選資料"
|
||||
"提示:你可嘗試對調數軸、進一步篩選資料,或減少量度項目。"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3418,7 +3420,7 @@ msgstr "首頁功能表"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/search/utils/dates.js:0
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "小時"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
|
|
@ -3441,7 +3443,7 @@ msgstr "如何取得應用程式"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.xml:0
|
||||
msgid "Hue"
|
||||
msgstr ""
|
||||
msgstr "色調"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -3516,6 +3518,14 @@ msgstr ""
|
|||
"若勾選,按下標籤會開啟允許直接編輯它的表單。請留意,如果也有設定顏色欄位,會"
|
||||
"以標籤版本先行。因此,按下標籤時,不會顯示顏色選擇器。"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
msgid ""
|
||||
"If checked, the checkboxes will be displayed in a column. Otherwise, they "
|
||||
"will be inlined."
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.js:0
|
||||
|
|
@ -4079,19 +4089,19 @@ msgstr "大"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 12 months"
|
||||
msgstr ""
|
||||
msgstr "過去 12 個月"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 30 days"
|
||||
msgstr ""
|
||||
msgstr "最近30天"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last 7 days"
|
||||
msgstr ""
|
||||
msgstr "最近7天"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model.fields,field_description:web.field_base_document_layout__write_uid
|
||||
|
|
@ -4109,7 +4119,7 @@ msgstr "最後更新於"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_components.js:0
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
msgstr "上個月"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4252,7 +4262,7 @@ msgstr "登出"
|
|||
#. odoo-python
|
||||
#: code:addons/web/controllers/home.py:0
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "登入"
|
||||
|
||||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.external_layout_bold
|
||||
|
|
@ -4457,6 +4467,12 @@ msgstr "銀河"
|
|||
msgid "Minimal precision"
|
||||
msgstr "最小精確度"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/float/float_field.js:0
|
||||
msgid "Minimum Digits"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/timezone_mismatch/timezone_mismatch_field.js:0
|
||||
|
|
@ -4869,6 +4885,12 @@ msgstr "沒有資料"
|
|||
msgid "No data to display"
|
||||
msgstr "無資料可供顯示"
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/controllers/pivot.py:0
|
||||
msgid "No data to export"
|
||||
msgstr "沒有數據可匯出"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/debug/debug_menu.js:0
|
||||
|
|
@ -4884,8 +4906,8 @@ msgstr "找不到任何裝置。"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/emoji_picker/emoji_picker.xml:0
|
||||
msgid "No emoji matches your search"
|
||||
msgstr "沒有表情符號符合你的搜尋"
|
||||
msgid "No emojis match your search"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -4936,7 +4958,7 @@ msgstr "找不到結果"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/select_menu/select_menu.xml:0
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "沒有結果"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -5160,7 +5182,6 @@ msgstr "出錯了!"
|
|||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/confirmation_dialog/confirmation_dialog.js:0
|
||||
#: code:addons/web/static/src/core/dialog/dialog.xml:0
|
||||
#: code:addons/web/static/src/public/error_notifications.js:0
|
||||
#: code:addons/web/static/src/views/calendar/calendar_year/calendar_year_popover.xml:0
|
||||
#: code:addons/web/static/src/views/view_dialogs/form_view_dialog.xml:0
|
||||
|
|
@ -6588,10 +6609,11 @@ msgstr "特殊:"
|
|||
#. module: web
|
||||
#: model_terms:ir.ui.view,arch_db:web.config_speedscope_index
|
||||
msgid "Speedscope"
|
||||
msgstr ""
|
||||
msgstr "速度計"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:0
|
||||
#: code:addons/web/static/src/views/graph/graph_controller.xml:0
|
||||
msgid "Stacked"
|
||||
msgstr "堆疊"
|
||||
|
|
@ -6693,7 +6715,7 @@ msgstr "樣式錯誤"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/properties/property_definition.xml:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "後綴"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -6905,6 +6927,12 @@ msgstr ""
|
|||
msgid "The domain should not involve non-literals"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The file is not an image, resizing is not possible"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-python
|
||||
#: code:addons/web/models/res_users_settings_embedded_action.py:0
|
||||
|
|
@ -6928,6 +6956,12 @@ msgid ""
|
|||
"is taking too much time."
|
||||
msgstr "操作被中斷了。這通常意味著目前的操作花費了太多時間。"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/utils/files.js:0
|
||||
msgid "The resizing of the image failed"
|
||||
msgstr ""
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/views/fields/signature/signature_field.js:0
|
||||
|
|
@ -7564,7 +7598,7 @@ msgstr "使用者界面"
|
|||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
msgstr "使用者設定"
|
||||
|
||||
#. module: web
|
||||
#: model:ir.model,name:web.model_res_users_settings_embedded_action
|
||||
|
|
@ -7728,6 +7762,7 @@ msgstr "WC"
|
|||
#: code:addons/web/static/src/core/errors/error_dialogs.js:0
|
||||
#: code:addons/web/static/src/search/control_panel/control_panel.js:0
|
||||
#: code:addons/web/static/src/views/fields/domain/domain_field.xml:0
|
||||
#: code:addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "警告"
|
||||
|
||||
|
|
@ -8125,7 +8160,7 @@ msgstr "醫神"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "after"
|
||||
msgstr ""
|
||||
msgstr "之後"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -14561,7 +14596,7 @@ msgstr ""
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "greater than"
|
||||
msgstr ""
|
||||
msgstr "大於"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -15947,13 +15982,13 @@ msgstr "非存在於"
|
|||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "is not set"
|
||||
msgstr ""
|
||||
msgstr "未設定"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
#: code:addons/web/static/src/core/tree_editor/tree_editor_operator_editor.js:0
|
||||
msgid "is set"
|
||||
msgstr ""
|
||||
msgstr "已設定"
|
||||
|
||||
#. module: web
|
||||
#. odoo-javascript
|
||||
|
|
@ -26866,6 +26901,12 @@ msgstr "空缺"
|
|||
msgid "ココ"
|
||||
msgstr "ココ"
|
||||
|
||||
#~ msgid "No emoji matches your search"
|
||||
#~ msgstr "沒有表情符號符合你的搜尋"
|
||||
|
||||
#~ msgid "<span itemprop=\"name\">Deco Addict</span>"
|
||||
#~ msgstr "<span itemprop=\"name\">Deco Addict</span>"
|
||||
|
||||
#~ msgid "Angle"
|
||||
#~ msgstr "角度"
|
||||
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ class IrHttp(models.AbstractModel):
|
|||
'id': comp.id,
|
||||
'name': comp.name,
|
||||
'sequence': comp.sequence,
|
||||
'child_ids': (comp.child_ids & user_companies).ids,
|
||||
'child_ids': (comp.child_ids & all_companies_in_hierarchy_sudo).ids,
|
||||
'parent_id': comp.parent_id.id,
|
||||
'currency_id': comp.currency_id.id,
|
||||
} for comp in user_companies
|
||||
|
|
|
|||
|
|
@ -446,7 +446,7 @@ class Base(models.AbstractModel):
|
|||
all_records = self.browse().union(*recordset_groups)
|
||||
record_mapped = dict(zip(
|
||||
all_records._ids,
|
||||
all_records.web_read(unfold_read_specification),
|
||||
all_records.web_read(unfold_read_specification or {}),
|
||||
strict=True,
|
||||
))
|
||||
|
||||
|
|
@ -561,7 +561,7 @@ class Base(models.AbstractModel):
|
|||
fold = group.pop('__fold', False)
|
||||
|
||||
groupby_value = group[groupby_spec]
|
||||
# For relational/date/datetime field
|
||||
# For relational/date/datetime/property tags field
|
||||
raw_groupby_value = groupby_value[0] if isinstance(groupby_value, tuple) else groupby_value
|
||||
|
||||
limit = unfold_read_default_limit
|
||||
|
|
@ -841,7 +841,7 @@ class Base(models.AbstractModel):
|
|||
):
|
||||
# It doesn't respect the order with aggregates inside
|
||||
expand_groups = self._web_read_group_expand(domain, groups, groupby[0], aggregates, order)
|
||||
if not limit or len(expand_groups) < limit:
|
||||
if not limit or len(expand_groups) <= limit:
|
||||
# Ditch the result of expand_groups because the limit is reached and to avoid
|
||||
# returning inconsistent result inside length of web_read_group
|
||||
groups = expand_groups
|
||||
|
|
@ -1265,7 +1265,7 @@ class Base(models.AbstractModel):
|
|||
|
||||
if property_type == 'tags':
|
||||
tags = definition.get('tags') or []
|
||||
tags = {tag[0]: tag for tag in tags}
|
||||
tags = {tag[0]: tuple(tag) for tag in tags}
|
||||
|
||||
def formatter_property_tags(value):
|
||||
if not value:
|
||||
|
|
@ -1274,7 +1274,7 @@ class Base(models.AbstractModel):
|
|||
AND([[(fullname, 'not in', tag)] for tag in tags]),
|
||||
]) if tags else []
|
||||
|
||||
# replace tag raw value with list of raw value, label and color
|
||||
# replace tag raw value with tuple of raw value, label and color
|
||||
return tags.get(value), [(fullname, 'in', value)]
|
||||
|
||||
return formatter_property_tags
|
||||
|
|
@ -1345,19 +1345,21 @@ class Base(models.AbstractModel):
|
|||
"""
|
||||
Return the values in the image of the provided domain by field_name.
|
||||
|
||||
:param model_domain: domain whose image is returned
|
||||
:param extra_domain: extra domain to use when counting records
|
||||
associated with field values
|
||||
:param field_name: the name of a field (type ``many2one`` or
|
||||
``selection``)
|
||||
:param enable_counters: whether to set the key ``'__count'`` in
|
||||
image values
|
||||
:param only_counters: whether to retrieve information on the
|
||||
``model_domain`` image or only counts based on
|
||||
``model_domain`` and ``extra_domain``. In the later case,
|
||||
the counts are set whatever is enable_counters.
|
||||
:param limit: maximal number of values to fetch
|
||||
:param bool set_limit: whether to use the provided limit (if any)
|
||||
:param kwargs: Keyword arguments:
|
||||
|
||||
* ``model_domain``: domain whose image is returned
|
||||
* ``extra_domain``: extra domain to use when counting records
|
||||
associated with field values
|
||||
* ``enable_counters``: whether to set the key ``'__count'`` in
|
||||
image values
|
||||
* ``only_counters``: whether to retrieve information on the
|
||||
``model_domain`` image or only counts based on
|
||||
``model_domain`` and ``extra_domain``. In the later case,
|
||||
the counts are set whatever is enable_counters.
|
||||
* ``limit``: maximal number of values to fetch
|
||||
* ``set_limit``: whether to use the provided limit (if any)
|
||||
:return: a dict of the form:
|
||||
::
|
||||
|
||||
|
|
@ -1532,14 +1534,16 @@ class Base(models.AbstractModel):
|
|||
Return the values of a field of type selection possibly enriched
|
||||
with counts of associated records in domain.
|
||||
|
||||
:param enable_counters: whether to set the key ``'__count'`` on
|
||||
values returned. Default is ``False``.
|
||||
:param expand: whether to return the full range of values for
|
||||
the selection field or only the field image values. Default
|
||||
is ``False``.
|
||||
:param field_name: the name of a field of type selection
|
||||
:param model_domain: domain used to determine the field image
|
||||
values and counts. Default is an empty list.
|
||||
:param kwargs:
|
||||
|
||||
* model_domain: domain used to determine the field image
|
||||
values and counts. Default is an empty list.
|
||||
* enable_counters: whether to set the key ``'__count'`` on
|
||||
values returned. Default is ``False``.
|
||||
* expand: whether to return the full range of values for
|
||||
the selection field or only the field image values. Default
|
||||
is ``False``.
|
||||
:return: a list of dicts of the form
|
||||
::
|
||||
|
||||
|
|
@ -1585,26 +1589,26 @@ class Base(models.AbstractModel):
|
|||
:param field_name: the name of a field; of type many2one or selection.
|
||||
:param kwargs: additional features
|
||||
|
||||
:param category_domain: domain generated by categories.
|
||||
Default is ``[]``.
|
||||
:param comodel_domain: domain of field values (if relational).
|
||||
Default is ``[]``.
|
||||
:param enable_counters: whether to count records by value.
|
||||
Default is ``False``.
|
||||
:param expand: whether to return the full range of field values in
|
||||
comodel_domain or only the field image values (possibly
|
||||
filtered and/or completed with parents if hierarchize is set).
|
||||
Default is ``False``.
|
||||
:param filter_domain: domain generated by filters.
|
||||
Default is ``[]``.
|
||||
:param hierarchize: determines if the categories must be displayed
|
||||
hierarchically (if possible). If set to true and
|
||||
``_parent_name`` is set on the comodel field, the information
|
||||
necessary for the hierarchization will be returned.
|
||||
Default is ``True``.
|
||||
:param limit: integer, maximal number of values to fetch.
|
||||
Default is ``None`` (no limit).
|
||||
:param search_domain: base domain of search. Default is ``[]``.
|
||||
* category_domain: domain generated by categories.
|
||||
Default is ``[]``.
|
||||
* comodel_domain: domain of field values (if relational).
|
||||
Default is ``[]``.
|
||||
* enable_counters: whether to count records by value.
|
||||
Default is ``False``.
|
||||
* expand: whether to return the full range of field values in
|
||||
comodel_domain or only the field image values (possibly
|
||||
filtered and/or completed with parents if hierarchize is set).
|
||||
Default is ``False``.
|
||||
* filter_domain: domain generated by filters.
|
||||
Default is ``[]``.
|
||||
* hierarchize: determines if the categories must be displayed
|
||||
hierarchically (if possible). If set to true and
|
||||
``_parent_name`` is set on the comodel field, the information
|
||||
necessary for the hierarchization will be returned.
|
||||
Default is ``True``.
|
||||
* limit: integer, maximal number of values to fetch.
|
||||
Default is ``None`` (no limit).
|
||||
* search_domain: base domain of search. Default is ``[]``.
|
||||
|
||||
:return: ::
|
||||
|
||||
|
|
|
|||
|
|
@ -22,14 +22,17 @@ class ResUsersSettings(models.Model):
|
|||
embedded_actions_config = self.env['res.users.settings.embedded.action'].search([
|
||||
('user_setting_id', '=', self.id), ('action_id', '=', action_id), ('res_id', '=', res_id)
|
||||
], limit=1)
|
||||
new_vals = {}
|
||||
for field, value in vals.items():
|
||||
if field in ('embedded_actions_order', 'embedded_actions_visibility'):
|
||||
vals[field] = ','.join('false' if action_id is False else str(action_id) for action_id in value)
|
||||
new_vals[field] = ','.join('false' if action_id is False else str(action_id) for action_id in value)
|
||||
else:
|
||||
new_vals[field] = value
|
||||
if embedded_actions_config:
|
||||
embedded_actions_config.write(vals)
|
||||
embedded_actions_config.write(new_vals)
|
||||
else:
|
||||
self.env['res.users.settings.embedded.action'].create({
|
||||
**vals,
|
||||
**new_vals,
|
||||
'user_setting_id': self.id,
|
||||
'action_id': action_id,
|
||||
'res_id': res_id,
|
||||
|
|
|
|||
|
|
@ -34,7 +34,16 @@ $lato-font-path: './lato';
|
|||
font-style: $style;
|
||||
unicode-range: U+0600-06FF, U+0750-077F, U+08A0-08FF;
|
||||
}
|
||||
|
||||
// Telugu: U+0C00-0C7F
|
||||
@font-face {
|
||||
font-family: 'Odoo Unicode Support Noto';
|
||||
src: url('https://fonts.odoocdn.com/fonts/noto/NotoSansTelugu-#{$type}.woff2') format('woff2'),
|
||||
url('https://fonts.odoocdn.com/fonts/noto/NotoSansTelugu-#{$type}.woff') format('woff'),
|
||||
url('https://fonts.odoocdn.com/fonts/noto/NotoSansTelugu-#{$type}.ttf') format('truetype');
|
||||
font-weight: $weight;
|
||||
font-style: $style;
|
||||
unicode-range: U+0C00-0C7F;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
src: url('#{$lato-font-path}/Lato-#{$type}-webfont.eot');
|
||||
|
|
|
|||
|
|
@ -59,10 +59,10 @@ import { waitUntil } from "./time";
|
|||
*
|
||||
* @typedef {{
|
||||
* contains?: string;
|
||||
* count?: number;
|
||||
* displayed?: boolean;
|
||||
* empty?: boolean;
|
||||
* eq?: number;
|
||||
* exact?: number;
|
||||
* first?: boolean;
|
||||
* focusable?: boolean;
|
||||
* has?: boolean;
|
||||
|
|
@ -90,6 +90,10 @@ import { waitUntil } from "./time";
|
|||
* raw?: boolean;
|
||||
* }} QueryTextOptions
|
||||
*
|
||||
* @typedef {{
|
||||
* raw?: boolean;
|
||||
* }} QueryValueOptions
|
||||
*
|
||||
* @typedef {"both" | "x" | "y"} ScrollAxis
|
||||
*
|
||||
* @typedef {import("./time").WaitOptions} WaitOptions
|
||||
|
|
@ -116,11 +120,9 @@ const {
|
|||
innerWidth,
|
||||
innerHeight,
|
||||
Map,
|
||||
MutationObserver,
|
||||
Number: { isInteger: $isInteger, isNaN: $isNaN, parseInt: $parseInt, parseFloat: $parseFloat },
|
||||
Object: { entries: $entries, keys: $keys, values: $values },
|
||||
RegExp,
|
||||
Set,
|
||||
String: { raw: $raw },
|
||||
window,
|
||||
} = globalThis;
|
||||
|
|
@ -326,6 +328,13 @@ function getFiltersDescription(modifierInfo) {
|
|||
return description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Node} node
|
||||
*/
|
||||
function getInlineNodeText(node) {
|
||||
return getNodeText(node, { inline: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @returns {NodeValue}
|
||||
|
|
@ -337,7 +346,7 @@ function getNodeContent(node) {
|
|||
case "textarea":
|
||||
return getNodeValue(node);
|
||||
case "select":
|
||||
return [...node.selectedOptions].map(getNodeValue).join(",");
|
||||
return [...node.selectedOptions].map((node) => getNodeValue(node)).join(",");
|
||||
}
|
||||
return getNodeText(node);
|
||||
}
|
||||
|
|
@ -355,6 +364,30 @@ function getNodeShadowRoot(node) {
|
|||
return node.shadowRoot;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} pseudoClass
|
||||
*/
|
||||
function getQueryFilter(pseudoClass, content) {
|
||||
const makeQueryFilter = customPseudoClasses.get(pseudoClass);
|
||||
try {
|
||||
return makeQueryFilter(content);
|
||||
} catch (err) {
|
||||
let message = `error while parsing pseudo-class ':${pseudoClass}'`;
|
||||
const cause = String(err?.message || err);
|
||||
if (cause) {
|
||||
message += `: ${cause}`;
|
||||
}
|
||||
throw new HootDomError(message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Node} node
|
||||
*/
|
||||
function getRawValue(node) {
|
||||
return node.value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} string
|
||||
*/
|
||||
|
|
@ -374,6 +407,17 @@ function getWaitForNoneMessage() {
|
|||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {number} count
|
||||
* @param {Parameters<NodeFilter>[0]} _node
|
||||
* @param {Parameters<NodeFilter>[1]} _i
|
||||
* @param {Parameters<NodeFilter>[2]} nodes
|
||||
*/
|
||||
function hasNodeCount(count, _node, _i, nodes) {
|
||||
return count === nodes.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} [char]
|
||||
*/
|
||||
|
|
@ -477,28 +521,27 @@ function isWhiteSpace(char) {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {string} pseudoClass
|
||||
* @param {(node: Node) => NodeValue} getContent
|
||||
* @param {(node: Node) => string} getContent
|
||||
* @param {boolean} exact
|
||||
*/
|
||||
function makePatternBasedPseudoClass(pseudoClass, getContent) {
|
||||
return (content) => {
|
||||
let regex;
|
||||
try {
|
||||
regex = parseRegExp(content);
|
||||
} catch (err) {
|
||||
throw selectorError(pseudoClass, err.message);
|
||||
}
|
||||
function makePseudoClassMatcher(getContent, exact) {
|
||||
return function makePartialMatcher(content) {
|
||||
const regex = parseRegExp(content);
|
||||
if (isInstanceOf(regex, RegExp)) {
|
||||
return function containsRegExp(node) {
|
||||
return regex.test(String(getContent(node)));
|
||||
return function stringMatches(node) {
|
||||
return regex.test(getContent(node));
|
||||
};
|
||||
} else {
|
||||
const lowerContent = content.toLowerCase();
|
||||
return function containsString(node) {
|
||||
return getStringContent(String(getContent(node)))
|
||||
.toLowerCase()
|
||||
.includes(lowerContent);
|
||||
};
|
||||
if (exact) {
|
||||
return function stringEquals(node) {
|
||||
return getContent(node).toLowerCase() === lowerContent;
|
||||
};
|
||||
} else {
|
||||
return function stringContains(node) {
|
||||
return getContent(node).toLowerCase().includes(lowerContent);
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -709,7 +752,6 @@ function parseSelector(selector) {
|
|||
if (currentPseudo) {
|
||||
if (parens[0] === parens[1]) {
|
||||
const [pseudo, content] = currentPseudo;
|
||||
const makeFilter = customPseudoClasses.get(pseudo);
|
||||
if (pseudo === "iframe" && !currentPart[0].startsWith("iframe")) {
|
||||
// Special case: to optimise the ":iframe" pseudo class, we
|
||||
// always select actual `iframe` elements.
|
||||
|
|
@ -717,7 +759,7 @@ function parseSelector(selector) {
|
|||
// but this pseudo won't work on non-iframe elements anyway.
|
||||
currentPart[0] = `iframe${currentPart[0]}`;
|
||||
}
|
||||
const filter = makeFilter(getStringContent(content));
|
||||
const filter = getQueryFilter(pseudo, getStringContent(content));
|
||||
selectorFilterDescriptors.set(filter, [pseudo, content]);
|
||||
currentPart.push(filter);
|
||||
currentPseudo = null;
|
||||
|
|
@ -872,14 +914,6 @@ function registerQueryMessage(filteredNodes, expectedCount) {
|
|||
return invalidCount ? lastQueryMessage : "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} pseudoClass
|
||||
* @param {string} message
|
||||
*/
|
||||
function selectorError(pseudoClass, message) {
|
||||
return new HootDomError(`invalid selector \`:${pseudoClass}\`: ${message}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper around '_queryAll' calls to ensure global variables are properly cleaned
|
||||
* up on any thrown error.
|
||||
|
|
@ -906,7 +940,10 @@ function _guardedQueryAll(target, options) {
|
|||
function _queryAll(target, options) {
|
||||
queryAllLevel++;
|
||||
|
||||
const { exact, root, ...modifiers } = options || {};
|
||||
const { count, root, ...modifiers } = options || {};
|
||||
if (count !== null && count !== undefined && (!$isInteger(count) || count <= 0)) {
|
||||
throw new HootDomError(`invalid 'count' option: should be a positive integer`);
|
||||
}
|
||||
|
||||
/** @type {Node[]} */
|
||||
let nodes = [];
|
||||
|
|
@ -946,15 +983,14 @@ function _queryAll(target, options) {
|
|||
if (content === false || !customPseudoClasses.has(modifier)) {
|
||||
continue;
|
||||
}
|
||||
const makeFilter = customPseudoClasses.get(modifier);
|
||||
const filter = makeFilter(content);
|
||||
const filter = getQueryFilter(modifier, content);
|
||||
modifierFilters.push(filter);
|
||||
globalFilterDescriptors.set(filter, [modifier, content]);
|
||||
}
|
||||
const filteredNodes = applyFilters(modifierFilters, nodes);
|
||||
|
||||
// Register query message (if needed), and/or throw an error accordingly
|
||||
const message = registerQueryMessage(filteredNodes, exact);
|
||||
const message = registerQueryMessage(filteredNodes, count);
|
||||
if (message) {
|
||||
throw new HootDomError(message);
|
||||
}
|
||||
|
|
@ -969,7 +1005,7 @@ function _queryAll(target, options) {
|
|||
* @param {QueryOptions} options
|
||||
*/
|
||||
function _queryOne(target, options) {
|
||||
return _guardedQueryAll(target, { ...options, exact: 1 })[0];
|
||||
return _guardedQueryAll(target, { ...options, count: 1 })[0];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1081,13 +1117,20 @@ let queryAllLevel = 0;
|
|||
const customPseudoClasses = new Map();
|
||||
|
||||
customPseudoClasses
|
||||
.set("contains", makePatternBasedPseudoClass("contains", getNodeText))
|
||||
.set("contains", makePseudoClassMatcher(getInlineNodeText, false))
|
||||
.set("count", (strCount) => {
|
||||
const count = $parseInt(strCount);
|
||||
if (!$isInteger(count) || count <= 0) {
|
||||
throw new HootDomError(`expected count to be a positive integer (got "${strCount}")`);
|
||||
}
|
||||
return hasNodeCount.bind(null, count);
|
||||
})
|
||||
.set("displayed", () => isNodeDisplayed)
|
||||
.set("empty", () => isEmpty)
|
||||
.set("eq", (strIndex) => {
|
||||
const index = $parseInt(strIndex);
|
||||
if (!$isInteger(index)) {
|
||||
throw selectorError("eq", `expected index to be an integer (got ${strIndex})`);
|
||||
throw new HootDomError(`expected index to be an integer (got "${strIndex}")`);
|
||||
}
|
||||
return index;
|
||||
})
|
||||
|
|
@ -1103,7 +1146,8 @@ customPseudoClasses
|
|||
.set("scrollable", (axis) => isNodeScrollable.bind(null, axis))
|
||||
.set("selected", () => isNodeSelected)
|
||||
.set("shadow", () => getNodeShadowRoot)
|
||||
.set("value", makePatternBasedPseudoClass("value", getNodeValue))
|
||||
.set("text", makePseudoClassMatcher(getInlineNodeText, true))
|
||||
.set("value", makePseudoClassMatcher(getRawValue, false))
|
||||
.set("viewPort", () => isNodeInViewPort)
|
||||
.set("visible", () => isNodeVisible);
|
||||
|
||||
|
|
@ -1167,9 +1211,13 @@ export function getNodeAttribute(node, attribute) {
|
|||
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @param {QueryValueOptions} [options]
|
||||
* @returns {NodeValue}
|
||||
*/
|
||||
export function getNodeValue(node) {
|
||||
export function getNodeValue(node, options) {
|
||||
if (options?.raw) {
|
||||
return getRawValue(node);
|
||||
}
|
||||
switch (node.type) {
|
||||
case "checkbox":
|
||||
case "radio":
|
||||
|
|
@ -1185,8 +1233,9 @@ export function getNodeValue(node) {
|
|||
case "time":
|
||||
case "week":
|
||||
return node.valueAsDate.toISOString();
|
||||
default:
|
||||
return node.value || "";
|
||||
}
|
||||
return node.value;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1801,51 +1850,6 @@ export function matches(target, selector) {
|
|||
return elementsMatch(_guardedQueryAll(target), selector);
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens for DOM mutations on a given target.
|
||||
*
|
||||
* This helper has 2 main advantages over directly calling the native MutationObserver:
|
||||
* - it ensures a single observer is created for a given target, even if multiple
|
||||
* callbacks are registered;
|
||||
* - it keeps track of these observers, which allows to check whether an observer
|
||||
* is still running while it should not, and to disconnect all running observers
|
||||
* at once.
|
||||
*
|
||||
* @param {HTMLElement} target
|
||||
* @param {MutationCallback} callback
|
||||
*/
|
||||
export function observe(target, callback) {
|
||||
if (observers.has(target)) {
|
||||
observers.get(target).callbacks.add(callback);
|
||||
} else {
|
||||
const callbacks = new Set([callback]);
|
||||
const observer = new MutationObserver((mutations, observer) => {
|
||||
for (const callback of callbacks) {
|
||||
callback(mutations, observer);
|
||||
}
|
||||
});
|
||||
observer.observe(target, {
|
||||
attributes: true,
|
||||
characterData: true,
|
||||
childList: true,
|
||||
subtree: true,
|
||||
});
|
||||
observers.set(target, { callbacks, observer });
|
||||
}
|
||||
|
||||
return function disconnect() {
|
||||
if (!observers.has(target)) {
|
||||
return;
|
||||
}
|
||||
const { callbacks, observer } = observers.get(target);
|
||||
callbacks.delete(callback);
|
||||
if (!callbacks.size) {
|
||||
observer.disconnect();
|
||||
observers.delete(target);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of nodes matching the given {@link Target}.
|
||||
* This function can either be used as a **template literal tag** (only supports
|
||||
|
|
@ -1859,12 +1863,11 @@ export function observe(target, callback) {
|
|||
* This function allows all string selectors supported by the native {@link Element.querySelector}
|
||||
* along with some additional custom pseudo-classes:
|
||||
*
|
||||
* - `:contains(text)`: matches nodes whose *content* matches the given *text*;
|
||||
* * given *text* supports regular expression syntax (e.g. `:contains(/^foo.+/)`)
|
||||
* and is case-insensitive;
|
||||
* * given *text* will be matched against:
|
||||
* - an `<input>`, `<textarea>` or `<select>` element's **value**;
|
||||
* - or any other element's **inner text**.
|
||||
* - `:contains(text)`: matches nodes whose *text content* includes the given *text*.
|
||||
* * The match is **partial** and **case-insensitive**;
|
||||
* * Given *text* also supports regular expressions (e.g. `:contains(/^foo.+/)`).
|
||||
* - `:count`: return nodes if their count match the given *count*.
|
||||
* If not matching, an error is thrown;
|
||||
* - `:displayed`: matches nodes that are "displayed" (see {@link isDisplayed});
|
||||
* - `:empty`: matches nodes that have an empty *content* (**value** or **inner text**);
|
||||
* - `:eq(n)`: matches the *nth* node (0-based index);
|
||||
|
|
@ -1880,22 +1883,23 @@ export function observe(target, callback) {
|
|||
* - `:selected`: matches nodes that are selected (e.g. `<option>` elements);
|
||||
* - `:shadow`: matches nodes that have shadow roots, and returns their shadow root;
|
||||
* - `:scrollable(axis)`: matches nodes that are scrollable (see {@link isScrollable});
|
||||
* - `:text(text)`: matches nodes whose *content* is strictly equal to the given *text*;
|
||||
* * The match is **exact**, and **case-insensitive**;
|
||||
* * Given *text* also supports regular expressions (e.g. `:text(/^foo.+/)`).
|
||||
* - `:value(value)`: matches nodes whose *value* is strictly equal to the given *value*;
|
||||
* * The match is **partial**, and **case-insensitive**;
|
||||
* * Given *value* also supports regular expressions (e.g. `:value(/^foo.+/)`).
|
||||
* - `:viewPort`: matches nodes that are contained in the current view port (see
|
||||
* {@link isInViewPort});
|
||||
* - `:visible`: matches nodes that are "visible" (see {@link isVisible});
|
||||
*
|
||||
* An `options` object can be specified to filter[1] the results:
|
||||
* - `displayed`: whether the nodes must be "displayed" (see {@link isDisplayed});
|
||||
* - `exact`: the exact number of nodes to match (throws an error if the number of
|
||||
* nodes doesn't match);
|
||||
* - `focusable`: whether the nodes must be "focusable" (see {@link isFocusable});
|
||||
* - `root`: the root node to query the selector in (defaults to the current fixture);
|
||||
* - `viewPort`: whether the nodes must be partially visible in the current viewport
|
||||
* (see {@link isInViewPort});
|
||||
* - `visible`: whether the nodes must be "visible" (see {@link isVisible}).
|
||||
* * This option implies `displayed`
|
||||
* - any of the *custom pseudo-classes* can be given as an option, with the value
|
||||
* being a boolean for standalone pseudo-classes (e.g. `{ empty: true }`), or a
|
||||
* string for the others (e.g. `{ contains: "text" }`).
|
||||
*
|
||||
* [1] these filters (except for `exact` and `root`) achieve the same result as
|
||||
* [1] these filters (except for `count` and `root`) achieve the same result as
|
||||
* using their homonym pseudo-classes on the final group of the given selector
|
||||
* string (e.g. ```queryAll`ul > li:visible`;``` = ```queryAll("ul > li", { visible: true })```).
|
||||
*
|
||||
|
|
@ -1917,10 +1921,11 @@ export function observe(target, callback) {
|
|||
* queryAll`#editor:shadow div`; // -> [div, div, ...] (inside shadow DOM)
|
||||
* @example
|
||||
* // with options
|
||||
* queryAll(`div:first`, { exact: 1 }); // -> [div]
|
||||
* queryAll(`div:first`, { count: 1 }); // -> [div]
|
||||
* queryAll(`div`, { root: queryOne`iframe` }); // -> [div, div, ...]
|
||||
* // redundant, but possible
|
||||
* queryAll(`button:visible`, { visible: true }); // -> [button, button, ...]
|
||||
* // the next 2 queries will return the same results
|
||||
* queryAll(`button:visible`); // -> [button, button, ...]
|
||||
* queryAll(`button`, { visible: true }); // -> [button, button, ...]
|
||||
*/
|
||||
export function queryAll(target, options) {
|
||||
[target, options] = parseRawArgs(arguments);
|
||||
|
|
@ -1989,12 +1994,12 @@ export function queryAllTexts(target, options) {
|
|||
* *values* of the matching nodes.
|
||||
*
|
||||
* @param {Target} target
|
||||
* @param {QueryOptions} [options]
|
||||
* @param {QueryOptions & QueryValueOptions} [options]
|
||||
* @returns {NodeValue[]}
|
||||
*/
|
||||
export function queryAllValues(target, options) {
|
||||
[target, options] = parseRawArgs(arguments);
|
||||
return _guardedQueryAll(target, options).map(getNodeValue);
|
||||
return _guardedQueryAll(target, options).map((node) => getNodeValue(node, options));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -2039,20 +2044,20 @@ export function queryFirst(target, options) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Performs a {@link queryAll} with the given arguments, along with a forced `exact: 1`
|
||||
* Performs a {@link queryAll} with the given arguments, along with a forced `count: 1`
|
||||
* option to ensure only one node matches the given {@link Target}.
|
||||
*
|
||||
* The returned value is a single node instead of a list of nodes.
|
||||
*
|
||||
* @param {Target} target
|
||||
* @param {Omit<QueryOptions, "exact">} [options]
|
||||
* @param {Omit<QueryOptions, "count">} [options]
|
||||
* @returns {Element}
|
||||
*/
|
||||
export function queryOne(target, options) {
|
||||
[target, options] = parseRawArgs(arguments);
|
||||
if ($isInteger(options?.exact)) {
|
||||
if ($isInteger(options?.count)) {
|
||||
throw new HootDomError(
|
||||
`cannot call \`queryOne\` with 'exact'=${options.exact}: did you mean to use \`queryAll\`?`
|
||||
`cannot call \`queryOne\` with 'count'=${options.count}: did you mean to use \`queryAll\`?`
|
||||
);
|
||||
}
|
||||
return _queryOne(target, options);
|
||||
|
|
@ -2094,12 +2099,12 @@ export function queryText(target, options) {
|
|||
* the matching node.
|
||||
*
|
||||
* @param {Target} target
|
||||
* @param {QueryOptions} [options]
|
||||
* @param {QueryOptions & QueryValueOptions} [options]
|
||||
* @returns {NodeValue}
|
||||
*/
|
||||
export function queryValue(target, options) {
|
||||
[target, options] = parseRawArgs(arguments);
|
||||
return getNodeValue(_queryOne(target, options));
|
||||
return getNodeValue(_queryOne(target, options), options);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ import {
|
|||
setDimensions,
|
||||
toSelector,
|
||||
} from "./dom";
|
||||
import { microTick } from "./time";
|
||||
|
||||
/**
|
||||
* @typedef {Target | Promise<Target>} AsyncTarget
|
||||
|
|
@ -78,6 +77,10 @@ import { microTick } from "./time";
|
|||
*
|
||||
* @typedef {EventOptions & KeyboardEventInit} KeyboardOptions
|
||||
*
|
||||
* @typedef {{
|
||||
* fullClear?: boolean;
|
||||
* }} KeyDownOptions
|
||||
*
|
||||
* @typedef {string | string[]} KeyStrokes
|
||||
*
|
||||
* @typedef {EventOptions & QueryOptions & {
|
||||
|
|
@ -101,6 +104,11 @@ import { microTick } from "./time";
|
|||
* @typedef {"bottom" | "left" | "right" | "top"} Side
|
||||
*/
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* @typedef {T | () => T} Resolver
|
||||
*/
|
||||
|
||||
/**
|
||||
* @template [T=EventInit]
|
||||
* @typedef {T & {
|
||||
|
|
@ -137,6 +145,7 @@ const {
|
|||
File,
|
||||
FocusEvent,
|
||||
HashChangeEvent,
|
||||
HTMLElement,
|
||||
KeyboardEvent,
|
||||
Math: { ceil: $ceil, max: $max, min: $min },
|
||||
MouseEvent,
|
||||
|
|
@ -160,6 +169,22 @@ const {
|
|||
const $createRange = document.createRange.bind(document);
|
||||
const $toString = Object.prototype.toString;
|
||||
|
||||
const $blur = HTMLElement.prototype.blur;
|
||||
HTMLElement.prototype.blur = function mockBlur() {
|
||||
if (runTime.changeTarget && runTime.changeTarget === this) {
|
||||
triggerChange();
|
||||
}
|
||||
return $blur.call(this, ...arguments);
|
||||
};
|
||||
|
||||
const $focus = HTMLElement.prototype.focus;
|
||||
HTMLElement.prototype.focus = function mockFocus() {
|
||||
if (runTime.changeTarget && runTime.changeTarget !== this) {
|
||||
triggerChange();
|
||||
}
|
||||
return $focus.call(this, ...arguments);
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Internal
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -266,7 +291,7 @@ function deleteSelection(target) {
|
|||
* target: T;
|
||||
* events: EventType[];
|
||||
* additionalEvents?: EventType[];
|
||||
* callback?: (target: T) => any;
|
||||
* callback?: () => any;
|
||||
* options?: EventInit;
|
||||
* }} params
|
||||
*/
|
||||
|
|
@ -274,9 +299,7 @@ async function dispatchAndIgnore({ target, events, additionalEvents = [], callba
|
|||
for (const eventType of [...events, ...additionalEvents]) {
|
||||
runTime.eventsToIgnore.push(eventType);
|
||||
}
|
||||
if (callback) {
|
||||
callback(target);
|
||||
}
|
||||
callback?.();
|
||||
for (const eventType of events) {
|
||||
await _dispatch(target, eventType, options);
|
||||
}
|
||||
|
|
@ -325,12 +348,19 @@ async function dispatchRelatedEvents(events, eventType, eventInit) {
|
|||
}
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* @template T, [R=T]
|
||||
* @param {MaybeIterable<T>} value
|
||||
* @param {(item: T) => R} [mapFn]
|
||||
* @returns {T[]}
|
||||
*/
|
||||
function ensureArray(value) {
|
||||
return isIterable(value) ? [...value] : [value];
|
||||
function ensureArray(value, mapFn) {
|
||||
if (Array.isArray(value)) {
|
||||
return mapFn ? value.map(mapFn) : value;
|
||||
}
|
||||
if (isIterable(value)) {
|
||||
return Array.from(value, mapFn);
|
||||
}
|
||||
return [mapFn ? mapFn(value) : value];
|
||||
}
|
||||
|
||||
function getCurrentEvents() {
|
||||
|
|
@ -344,13 +374,20 @@ function getCurrentEvents() {
|
|||
|
||||
function getDefaultRunTimeValue() {
|
||||
return {
|
||||
isComposing: false,
|
||||
|
||||
// Data transfers
|
||||
// Keyboard & data transfers
|
||||
/** @type {HTMLElement | null} */
|
||||
changeTarget: null,
|
||||
/** @type {(() => any)[]} */
|
||||
changeTargetListeners: [],
|
||||
/** @type {DataTransfer | null} */
|
||||
clipboardData: null,
|
||||
/** @type {DataTransfer | null} */
|
||||
dataTransfer: null,
|
||||
/** @type {string | null} */
|
||||
initialValue: null,
|
||||
isComposing: false,
|
||||
/** @type {string | null} */
|
||||
key: null,
|
||||
|
||||
// Drag & drop
|
||||
canStartDrag: false,
|
||||
|
|
@ -359,7 +396,6 @@ function getDefaultRunTimeValue() {
|
|||
|
||||
// Pointer
|
||||
clickCount: 0,
|
||||
key: null,
|
||||
/** @type {HTMLElement | null} */
|
||||
pointerDownTarget: null,
|
||||
pointerDownTimeout: 0,
|
||||
|
|
@ -567,18 +603,22 @@ function getFirstCommonParent(a, b) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the interactive pointer target from a given element, unless the element
|
||||
* is falsy, or the 'interactive' option is set to `false`.
|
||||
*
|
||||
* If an 'originalTarget' is given, the helper will deliberately throw an error if
|
||||
* no interactive elements are found.
|
||||
*
|
||||
* @param {HTMLElement} element
|
||||
* @param {Target} originalTarget
|
||||
* @param {QueryOptions} options
|
||||
* @param {AsyncTarget} [originalTarget]
|
||||
*/
|
||||
function getPointerTarget(element, originalTarget, options) {
|
||||
if (options?.interactive === false) {
|
||||
// Explicit 'interactive: false' option
|
||||
// -> element can be a non-interactive element
|
||||
function getPointerTarget(element, options, originalTarget) {
|
||||
if (!element || options?.interactive === false) {
|
||||
return element;
|
||||
}
|
||||
const interactiveElement = getInteractiveNode(element);
|
||||
if (!interactiveElement) {
|
||||
if (!interactiveElement && originalTarget) {
|
||||
queryAny(originalTarget, { ...options, interactive: true }); // Will throw if no elements are found
|
||||
}
|
||||
return interactiveElement;
|
||||
|
|
@ -662,7 +702,7 @@ function getStringSelection(target) {
|
|||
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @param {...string} tagNames
|
||||
* @param {...string} tagNames
|
||||
*/
|
||||
function hasTagName(node, ...tagNames) {
|
||||
return tagNames.includes(getTag(node));
|
||||
|
|
@ -716,7 +756,7 @@ function isPrevented(event) {
|
|||
* @returns {KeyboardEventInit}
|
||||
*/
|
||||
function parseKeyStrokes(keyStrokes, options) {
|
||||
return (isIterable(keyStrokes) ? [...keyStrokes] : [keyStrokes]).map((key) => {
|
||||
return ensureArray(keyStrokes, (key) => {
|
||||
const lower = key.toLowerCase();
|
||||
return {
|
||||
...options,
|
||||
|
|
@ -789,8 +829,9 @@ function registerButton(eventInit, toggle) {
|
|||
* @param {Event} ev
|
||||
*/
|
||||
function registerFileInput({ target }) {
|
||||
if (getTag(target) === "input" && target.type === "file") {
|
||||
runTime.fileInput = target;
|
||||
const actualTarget = target.shadowRoot ? target.shadowRoot.activeElement : target;
|
||||
if (getTag(actualTarget) === "input" && actualTarget.type === "file") {
|
||||
runTime.fileInput = actualTarget;
|
||||
} else {
|
||||
runTime.fileInput = null;
|
||||
}
|
||||
|
|
@ -798,46 +839,32 @@ function registerFileInput({ target }) {
|
|||
|
||||
/**
|
||||
* @param {EventTarget} target
|
||||
* @param {string} initialValue
|
||||
* @param {ConfirmAction} confirmAction
|
||||
*/
|
||||
async function registerForChange(target, initialValue, confirmAction) {
|
||||
function dispatchChange() {
|
||||
return target.value !== initialValue && _dispatch(target, "change");
|
||||
}
|
||||
|
||||
async function registerForChange(target, confirmAction) {
|
||||
confirmAction &&= confirmAction.toLowerCase();
|
||||
if (confirmAction === "auto") {
|
||||
confirmAction = getTag(target) === "input" ? "enter" : "blur";
|
||||
}
|
||||
if (getTag(target) === "input") {
|
||||
changeTargetListeners.push(
|
||||
on(target, "keydown", (ev) => {
|
||||
if (isPrevented(ev) || ev.key !== "Enter") {
|
||||
return;
|
||||
}
|
||||
removeChangeTargetListeners();
|
||||
afterNextDispatch = dispatchChange;
|
||||
})
|
||||
);
|
||||
} else if (confirmAction === "enter") {
|
||||
|
||||
const parentDocument = getDocument(target);
|
||||
const parentView = parentDocument.defaultView;
|
||||
if (confirmAction === "enter" && getTag(target) !== "input") {
|
||||
throw new HootInteractionError(
|
||||
`"enter" confirm action is only supported on <input/> elements`
|
||||
);
|
||||
}
|
||||
|
||||
changeTargetListeners.push(
|
||||
on(target, "blur", () => {
|
||||
removeChangeTargetListeners();
|
||||
dispatchChange();
|
||||
}),
|
||||
on(target, "change", removeChangeTargetListeners)
|
||||
runTime.changeTarget = target;
|
||||
runTime.changeTargetListeners.push(
|
||||
on(parentView, "focusout", triggerChange),
|
||||
on(parentView, "change", removeChangeTargetListeners)
|
||||
);
|
||||
|
||||
switch (confirmAction) {
|
||||
case "blur": {
|
||||
await _hover(
|
||||
getDocument(target).body,
|
||||
parentDocument.body,
|
||||
{ position: { x: 0, y: 0 } },
|
||||
{ originalTarget: target }
|
||||
);
|
||||
|
|
@ -881,19 +908,31 @@ function registerSpecialKey(eventInit, toggle) {
|
|||
}
|
||||
|
||||
function removeChangeTargetListeners() {
|
||||
while (changeTargetListeners.length) {
|
||||
changeTargetListeners.pop()();
|
||||
for (const listener of runTime.changeTargetListeners) {
|
||||
listener();
|
||||
}
|
||||
runTime.changeTarget = null;
|
||||
runTime.changeTargetListeners = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* @param {Resolver<T>} resolver
|
||||
* @returns {T}
|
||||
*/
|
||||
function resolve(resolver) {
|
||||
return typeof resolver === "function" ? resolver() : resolver;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {HTMLElement | null} target
|
||||
* @param {QueryOptions} [options]
|
||||
*/
|
||||
function setPointerDownTarget(target) {
|
||||
function setPointerDownTarget(target, options) {
|
||||
if (runTime.pointerDownTarget) {
|
||||
runTime.previousPointerDownTarget = runTime.pointerDownTarget;
|
||||
}
|
||||
runTime.pointerDownTarget = target;
|
||||
runTime.pointerDownTarget = getPointerTarget(target, options);
|
||||
runTime.canStartDrag = false;
|
||||
}
|
||||
|
||||
|
|
@ -991,6 +1030,16 @@ function toEventPosition(clientX, clientY, position) {
|
|||
};
|
||||
}
|
||||
|
||||
async function triggerChange() {
|
||||
const target = runTime.changeTarget;
|
||||
const hasValueChanged = runTime.initialValue !== target.value;
|
||||
runTime.initialValue = null;
|
||||
removeChangeTargetListeners();
|
||||
if (target && hasValueChanged) {
|
||||
return _dispatch(target, "change");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {EventTarget} target
|
||||
* @param {PointerEventInit} pointerInit
|
||||
|
|
@ -1057,10 +1106,13 @@ async function triggerFocus(target) {
|
|||
return;
|
||||
}
|
||||
if (previous !== target.ownerDocument.body) {
|
||||
if (runTime.changeTarget) {
|
||||
await triggerChange();
|
||||
}
|
||||
await dispatchAndIgnore({
|
||||
target: previous,
|
||||
events: ["blur", "focusout"],
|
||||
callback: (el) => el.blur(),
|
||||
callback: $blur.bind(previous),
|
||||
options: { relatedTarget: target },
|
||||
});
|
||||
}
|
||||
|
|
@ -1070,7 +1122,7 @@ async function triggerFocus(target) {
|
|||
target,
|
||||
events: ["focus", "focusin"],
|
||||
additionalEvents: ["select"],
|
||||
callback: (el) => el.focus(),
|
||||
callback: $focus.bind(target),
|
||||
options: { relatedTarget: previous },
|
||||
});
|
||||
if (previousSelection && previousSelection === getStringSelection(target)) {
|
||||
|
|
@ -1080,22 +1132,17 @@ async function triggerFocus(target) {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {EventTarget} target
|
||||
* @param {Resolver<EventTarget>} targetResolver
|
||||
* @param {FillOptions} [options]
|
||||
*/
|
||||
async function _clear(target, options) {
|
||||
// Inputs and text areas
|
||||
const initialValue = target.value;
|
||||
|
||||
async function _clear(targetResolver, options) {
|
||||
// Simulates 2 key presses:
|
||||
// - Control + A: selects all the text
|
||||
// - Backspace: deletes the text
|
||||
fullClear = true;
|
||||
await _press(target, { ctrlKey: true, key: "a" });
|
||||
await _press(target, { key: "Backspace" });
|
||||
fullClear = false;
|
||||
await _press(targetResolver, { ctrlKey: true, key: "a" });
|
||||
await _press(targetResolver, { key: "Backspace" }, { fullClear: true });
|
||||
|
||||
await registerForChange(target, initialValue, options?.confirm);
|
||||
await registerForChange(resolve(targetResolver), options?.confirm);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1143,45 +1190,41 @@ async function _dispatch(target, type, eventInit) {
|
|||
const event = new Constructor(type, params);
|
||||
|
||||
target.dispatchEvent(event);
|
||||
|
||||
await Promise.resolve();
|
||||
|
||||
getCurrentEvents().push(event);
|
||||
|
||||
if (afterNextDispatch) {
|
||||
const callback = afterNextDispatch;
|
||||
afterNextDispatch = null;
|
||||
await microTick().then(callback);
|
||||
}
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {EventTarget} target
|
||||
* @param {Resolver<EventTarget>} targetResolver
|
||||
* @param {InputValue} value
|
||||
* @param {FillOptions} [options]
|
||||
*/
|
||||
async function _fill(target, value, options) {
|
||||
const initialValue = target.value;
|
||||
async function _fill(targetResolver, value, options) {
|
||||
const initialTarget = resolve(targetResolver);
|
||||
|
||||
if (getTag(target) === "input") {
|
||||
switch (target.type) {
|
||||
case "color": {
|
||||
target.value = String(value);
|
||||
await _dispatch(target, "input");
|
||||
await _dispatch(target, "change");
|
||||
if (getTag(initialTarget) === "input") {
|
||||
switch (initialTarget.type) {
|
||||
case "color":
|
||||
case "time": {
|
||||
initialTarget.value = String(value);
|
||||
await _dispatch(initialTarget, "input");
|
||||
await _dispatch(initialTarget, "change");
|
||||
return;
|
||||
}
|
||||
case "file": {
|
||||
const files = ensureArray(value);
|
||||
if (files.length > 1 && !target.multiple) {
|
||||
if (files.length > 1 && !initialTarget.multiple) {
|
||||
throw new HootInteractionError(
|
||||
`input[type="file"] does not support multiple files`
|
||||
);
|
||||
}
|
||||
target.files = createDataTransfer({ files }).files;
|
||||
initialTarget.files = createDataTransfer({ files }).files;
|
||||
|
||||
await _dispatch(target, "change");
|
||||
await _dispatch(initialTarget, "change");
|
||||
return;
|
||||
}
|
||||
case "range": {
|
||||
|
|
@ -1190,9 +1233,9 @@ async function _fill(target, value, options) {
|
|||
throw new TypeError(`input[type="range"] only accept 'number' values`);
|
||||
}
|
||||
|
||||
target.value = String(numberValue);
|
||||
await _dispatch(target, "input");
|
||||
await _dispatch(target, "change");
|
||||
initialTarget.value = String(numberValue);
|
||||
await _dispatch(initialTarget, "input");
|
||||
await _dispatch(initialTarget, "change");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -1201,25 +1244,25 @@ async function _fill(target, value, options) {
|
|||
if (options?.instantly) {
|
||||
// Simulates filling the clipboard with the value (can be from external source)
|
||||
globalThis.navigator.clipboard.writeText(value).catch();
|
||||
await _press(target, { ctrlKey: true, key: "v" });
|
||||
await _press(targetResolver, { ctrlKey: true, key: "v" });
|
||||
} else {
|
||||
if (options?.composition) {
|
||||
runTime.isComposing = true;
|
||||
// Simulates the start of a composition
|
||||
await _dispatch(target, "compositionstart");
|
||||
await _dispatch(initialTarget, "compositionstart");
|
||||
}
|
||||
for (const char of String(value)) {
|
||||
const key = char.toLowerCase();
|
||||
await _press(target, { key, shiftKey: key !== char });
|
||||
await _press(targetResolver, { key, shiftKey: key !== char });
|
||||
}
|
||||
if (options?.composition) {
|
||||
runTime.isComposing = false;
|
||||
// Simulates the end of a composition
|
||||
await _dispatch(target, "compositionend");
|
||||
await _dispatch(initialTarget, "compositionend");
|
||||
}
|
||||
}
|
||||
|
||||
await registerForChange(target, initialValue, options?.confirm);
|
||||
await registerForChange(resolve(targetResolver), options?.confirm);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1228,7 +1271,7 @@ async function _fill(target, value, options) {
|
|||
* @param {{ implicit?: boolean, originalTarget: AsyncTarget }} hoverOptions
|
||||
*/
|
||||
async function _hover(target, options, hoverOptions) {
|
||||
const pointerTarget = target && getPointerTarget(target, hoverOptions.originalTarget, options);
|
||||
const pointerTarget = getPointerTarget(target, options, hoverOptions.originalTarget);
|
||||
const position = target && getPosition(target, options);
|
||||
|
||||
const previousPT = runTime.pointerTarget;
|
||||
|
|
@ -1340,17 +1383,22 @@ async function _hover(target, options, hoverOptions) {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {EventTarget} target
|
||||
* @param {Resolver<EventTarget>} targetResolver
|
||||
* @param {KeyboardEventInit} eventInit
|
||||
* @param {KeyDownOptions} [options]
|
||||
*/
|
||||
async function _keyDown(target, eventInit) {
|
||||
async function _keyDown(targetResolver, eventInit, options) {
|
||||
eventInit = { ...eventInit, ...currentEventInit.keydown };
|
||||
registerSpecialKey(eventInit, true);
|
||||
|
||||
const keyDownTarget = resolve(targetResolver);
|
||||
const repeat =
|
||||
typeof eventInit.repeat === "boolean" ? eventInit.repeat : runTime.key === eventInit.key;
|
||||
runTime.key = eventInit.key;
|
||||
const keyDownEvent = await _dispatch(target, "keydown", { ...eventInit, repeat });
|
||||
const keyDownEvent = await _dispatch(keyDownTarget, "keydown", {
|
||||
...eventInit,
|
||||
repeat,
|
||||
});
|
||||
|
||||
if (isPrevented(keyDownEvent)) {
|
||||
return;
|
||||
|
|
@ -1361,10 +1409,11 @@ async function _keyDown(target, eventInit) {
|
|||
* @param {string} type
|
||||
*/
|
||||
function insertValue(toInsert, type) {
|
||||
const { selectionStart, selectionEnd, value } = target;
|
||||
const { selectionStart, selectionEnd, value } = inputTarget;
|
||||
inputData = toInsert;
|
||||
inputType = type;
|
||||
if (isNil(selectionStart) && isNil(selectionEnd)) {
|
||||
nextValue ||= inputTarget.value;
|
||||
nextValue += toInsert;
|
||||
} else {
|
||||
nextValue = value.slice(0, selectionStart) + toInsert + value.slice(selectionEnd);
|
||||
|
|
@ -1375,21 +1424,27 @@ async function _keyDown(target, eventInit) {
|
|||
}
|
||||
|
||||
const { ctrlKey, key, shiftKey } = keyDownEvent;
|
||||
const initialValue = target.value;
|
||||
const inputTarget = resolve(targetResolver);
|
||||
let inputData = null;
|
||||
let inputType = null;
|
||||
let nextSelectionEnd = null;
|
||||
let nextSelectionStart = null;
|
||||
let nextValue = initialValue;
|
||||
let nextValue = null;
|
||||
let triggerSelect = false;
|
||||
|
||||
if (isEditable(target)) {
|
||||
if (runTime.initialValue === null || keyDownTarget !== inputTarget) {
|
||||
// If the 'keydown' event changes the target:
|
||||
// -> initial value needs to be re-evaluated from the new target
|
||||
runTime.initialValue = inputTarget.value;
|
||||
}
|
||||
|
||||
if (isEditable(inputTarget)) {
|
||||
switch (key) {
|
||||
case "ArrowDown":
|
||||
case "ArrowLeft":
|
||||
case "ArrowUp":
|
||||
case "ArrowRight": {
|
||||
const { selectionStart, selectionEnd, value } = target;
|
||||
const { selectionStart, selectionEnd, value } = inputTarget;
|
||||
if (isNil(selectionStart) || isNil(selectionEnd)) {
|
||||
break;
|
||||
}
|
||||
|
|
@ -1410,9 +1465,11 @@ async function _keyDown(target, eventInit) {
|
|||
break;
|
||||
}
|
||||
case "Backspace": {
|
||||
const { selectionStart, selectionEnd, value } = target;
|
||||
if (fullClear) {
|
||||
// Remove all characters
|
||||
const { selectionStart, selectionEnd, value } = inputTarget;
|
||||
if (options?.fullClear) {
|
||||
// Remove all characters, regardless of the selection. This
|
||||
// is to be used to ensure that an input without selection properties
|
||||
// (e.g. input[type="number"]) can still be properly cleared.
|
||||
nextValue = "";
|
||||
} else if (isNil(selectionStart) || isNil(selectionEnd)) {
|
||||
// Remove last character
|
||||
|
|
@ -1422,17 +1479,14 @@ async function _keyDown(target, eventInit) {
|
|||
nextValue = value.slice(0, selectionStart - 1) + value.slice(selectionEnd);
|
||||
} else {
|
||||
// Remove current selection from target value
|
||||
nextValue = deleteSelection(target);
|
||||
nextValue = deleteSelection(inputTarget);
|
||||
}
|
||||
inputType = "deleteContentBackward";
|
||||
break;
|
||||
}
|
||||
case "Delete": {
|
||||
const { selectionStart, selectionEnd, value } = target;
|
||||
if (fullClear) {
|
||||
// Remove all characters
|
||||
nextValue = "";
|
||||
} else if (isNil(selectionStart) || isNil(selectionEnd)) {
|
||||
const { selectionStart, selectionEnd, value } = inputTarget;
|
||||
if (isNil(selectionStart) || isNil(selectionEnd)) {
|
||||
// Remove first character
|
||||
nextValue = value.slice(1);
|
||||
} else if (selectionStart === selectionEnd) {
|
||||
|
|
@ -1440,18 +1494,11 @@ async function _keyDown(target, eventInit) {
|
|||
nextValue = value.slice(0, selectionStart) + value.slice(selectionEnd + 1);
|
||||
} else {
|
||||
// Remove current selection from target value
|
||||
nextValue = deleteSelection(target);
|
||||
nextValue = deleteSelection(inputTarget);
|
||||
}
|
||||
inputType = "deleteContentForward";
|
||||
break;
|
||||
}
|
||||
case "Enter": {
|
||||
if (target.tagName === "TEXTAREA") {
|
||||
// Insert new line
|
||||
insertValue("\n", "insertLineBreak");
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
if (key.length === 1 && !ctrlKey) {
|
||||
// Character coming from the keystroke
|
||||
|
|
@ -1469,14 +1516,14 @@ async function _keyDown(target, eventInit) {
|
|||
case "a": {
|
||||
if (ctrlKey) {
|
||||
// Select all
|
||||
if (isEditable(target)) {
|
||||
if (isEditable(inputTarget)) {
|
||||
nextSelectionStart = 0;
|
||||
nextSelectionEnd = target.value.length;
|
||||
nextSelectionEnd = inputTarget.value.length;
|
||||
triggerSelect = true;
|
||||
} else {
|
||||
const selection = globalThis.getSelection();
|
||||
const range = $createRange();
|
||||
range.selectNodeContents(target);
|
||||
range.selectNodeContents(inputTarget);
|
||||
selection.removeAllRanges();
|
||||
selection.addRange(range);
|
||||
}
|
||||
|
|
@ -1495,14 +1542,21 @@ async function _keyDown(target, eventInit) {
|
|||
globalThis.navigator.clipboard.writeText(text).catch();
|
||||
|
||||
runTime.clipboardData = createDataTransfer(eventInit);
|
||||
await _dispatch(target, "copy", { clipboardData: runTime.clipboardData });
|
||||
await _dispatch(inputTarget, "copy", { clipboardData: runTime.clipboardData });
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "Enter": {
|
||||
const tag = getTag(target);
|
||||
const parentForm = target.closest("form");
|
||||
if (parentForm && target.type !== "button") {
|
||||
if (runTime.changeTarget) {
|
||||
await triggerChange();
|
||||
}
|
||||
if (inputTarget.tagName === "TEXTAREA" && isEditable(inputTarget)) {
|
||||
// Insert new line
|
||||
insertValue("\n", "insertLineBreak");
|
||||
}
|
||||
const tag = getTag(inputTarget);
|
||||
const parentForm = inputTarget.closest("form");
|
||||
if (parentForm && inputTarget.type !== "button") {
|
||||
/**
|
||||
* Special action: <form> 'Enter'
|
||||
* On: unprevented 'Enter' keydown on any element that
|
||||
|
|
@ -1512,14 +1566,16 @@ async function _keyDown(target, eventInit) {
|
|||
await _dispatch(parentForm, "submit");
|
||||
} else if (
|
||||
!keyDownEvent.repeat &&
|
||||
(tag === "a" || tag === "button" || (tag === "input" && target.type === "button"))
|
||||
(tag === "a" ||
|
||||
tag === "button" ||
|
||||
(tag === "input" && inputTarget.type === "button"))
|
||||
) {
|
||||
/**
|
||||
* Special action: <a>, <button> or <input type="button"> 'Enter'
|
||||
* On: unprevented and unrepeated 'Enter' keydown on mentioned elements
|
||||
* Do: triggers a 'click' event on the element
|
||||
*/
|
||||
await _dispatch(target, "click", { button: btn.LEFT });
|
||||
await _dispatch(inputTarget, "click", { button: btn.LEFT });
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -1548,7 +1604,7 @@ async function _keyDown(target, eventInit) {
|
|||
* Do: paste current clipboard content to current element
|
||||
*/
|
||||
case "v": {
|
||||
if (ctrlKey && isEditable(target)) {
|
||||
if (ctrlKey && isEditable(inputTarget)) {
|
||||
// Set target value (if possible)
|
||||
try {
|
||||
nextValue = await globalThis.navigator.clipboard.readText();
|
||||
|
|
@ -1557,7 +1613,7 @@ async function _keyDown(target, eventInit) {
|
|||
}
|
||||
inputType = "insertFromPaste";
|
||||
|
||||
await _dispatch(target, "paste", {
|
||||
await _dispatch(inputTarget, "paste", {
|
||||
clipboardData: runTime.clipboardData || createDataTransfer(eventInit),
|
||||
});
|
||||
runTime.clipboardData = null;
|
||||
|
|
@ -1570,59 +1626,64 @@ async function _keyDown(target, eventInit) {
|
|||
* Do: cut current selection to clipboard and remove selection
|
||||
*/
|
||||
case "x": {
|
||||
if (ctrlKey && isEditable(target)) {
|
||||
if (ctrlKey && isEditable(inputTarget)) {
|
||||
// Get selection from window
|
||||
const text = globalThis.getSelection().toString();
|
||||
globalThis.navigator.clipboard.writeText(text).catch();
|
||||
|
||||
nextValue = deleteSelection(target);
|
||||
nextValue = deleteSelection(inputTarget);
|
||||
inputType = "deleteByCut";
|
||||
|
||||
runTime.clipboardData = createDataTransfer(eventInit);
|
||||
await _dispatch(target, "cut", { clipboardData: runTime.clipboardData });
|
||||
await _dispatch(inputTarget, "cut", { clipboardData: runTime.clipboardData });
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (initialValue !== nextValue) {
|
||||
target.value = nextValue;
|
||||
if (nextValue !== null) {
|
||||
inputTarget.value = nextValue;
|
||||
const inputEventInit = {
|
||||
data: inputData,
|
||||
inputType,
|
||||
};
|
||||
const beforeInputEvent = await _dispatch(target, "beforeinput", inputEventInit);
|
||||
const beforeInputEvent = await _dispatch(inputTarget, "beforeinput", inputEventInit);
|
||||
if (!isPrevented(beforeInputEvent)) {
|
||||
await _dispatch(target, "input", inputEventInit);
|
||||
await _dispatch(inputTarget, "input", inputEventInit);
|
||||
}
|
||||
}
|
||||
changeSelection(target, nextSelectionStart, nextSelectionEnd);
|
||||
changeSelection(inputTarget, nextSelectionStart, nextSelectionEnd);
|
||||
if (triggerSelect) {
|
||||
await dispatchAndIgnore({
|
||||
target,
|
||||
target: inputTarget,
|
||||
events: ["select"],
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {EventTarget} target
|
||||
* @param {Resolver<EventTarget>} targetResolver
|
||||
* @param {KeyboardEventInit} eventInit
|
||||
*/
|
||||
async function _keyUp(target, eventInit) {
|
||||
async function _keyUp(targetResolver, eventInit) {
|
||||
eventInit = { ...eventInit, ...currentEventInit.keyup };
|
||||
await _dispatch(target, "keyup", eventInit);
|
||||
await _dispatch(resolve(targetResolver), "keyup", eventInit);
|
||||
|
||||
runTime.key = null;
|
||||
registerSpecialKey(eventInit, false);
|
||||
|
||||
if (eventInit.key === " " && getTag(target) === "input" && target.type === "checkbox") {
|
||||
const finalTarget = resolve(targetResolver);
|
||||
if (
|
||||
eventInit.key === " " &&
|
||||
getTag(finalTarget) === "input" &&
|
||||
finalTarget.type === "checkbox"
|
||||
) {
|
||||
/**
|
||||
* Special action: input[type=checkbox] 'Space'
|
||||
* On: unprevented ' ' keydown on an <input type="checkbox"/>
|
||||
* Do: triggers a 'click' event on the input
|
||||
*/
|
||||
await triggerClick(target, { button: btn.LEFT });
|
||||
await triggerClick(finalTarget, { button: btn.LEFT });
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1630,7 +1691,7 @@ async function _keyUp(target, eventInit) {
|
|||
* @param {DragOptions} [options]
|
||||
*/
|
||||
async function _pointerDown(options) {
|
||||
setPointerDownTarget(runTime.pointerTarget);
|
||||
setPointerDownTarget(runTime.pointerTarget, options);
|
||||
|
||||
if (options?.dataTransfer || options?.files || options?.items) {
|
||||
runTime.dataTransfer = createDataTransfer(options);
|
||||
|
|
@ -1690,6 +1751,7 @@ async function _pointerUp(options) {
|
|||
const target = runTime.pointerTarget;
|
||||
const isLongTap = globalThis.Date.now() - runTime.touchStartTimeOffset > LONG_TAP_DELAY;
|
||||
const pointerDownTarget = runTime.pointerDownTarget;
|
||||
const pointerUpTarget = getPointerTarget(target, options);
|
||||
const eventInit = {
|
||||
...runTime.position,
|
||||
...currentEventInit.pointerup,
|
||||
|
|
@ -1709,10 +1771,10 @@ async function _pointerUp(options) {
|
|||
* - On: pointer up after a prevented 'dragover' or 'dragenter'
|
||||
* - Do: triggers a 'drop' event on the target
|
||||
*/
|
||||
await _dispatch(target, "drop", eventInitWithDT);
|
||||
await _dispatch(pointerUpTarget, "drop", eventInitWithDT);
|
||||
}
|
||||
|
||||
await _dispatch(target, "dragend", eventInitWithDT);
|
||||
await _dispatch(pointerUpTarget, "dragend", eventInitWithDT);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1720,8 +1782,8 @@ async function _pointerUp(options) {
|
|||
...eventInit,
|
||||
detail: runTime.clickCount + 1,
|
||||
};
|
||||
await dispatchPointerEvent(target, "pointerup", eventInit, {
|
||||
mouse: !target.disabled && ["mouseup", mouseEventInit],
|
||||
await dispatchPointerEvent(pointerUpTarget, "pointerup", eventInit, {
|
||||
mouse: !pointerUpTarget.disabled && ["mouseup", mouseEventInit],
|
||||
touch: ["touchend"],
|
||||
});
|
||||
|
||||
|
|
@ -1737,9 +1799,9 @@ async function _pointerUp(options) {
|
|||
|
||||
let clickTarget;
|
||||
if (hasTouch()) {
|
||||
clickTarget = pointerDownTarget === target && target;
|
||||
clickTarget = pointerDownTarget === pointerUpTarget && pointerUpTarget;
|
||||
} else {
|
||||
clickTarget = getFirstCommonParent(target, pointerDownTarget);
|
||||
clickTarget = getFirstCommonParent(pointerUpTarget, pointerDownTarget);
|
||||
}
|
||||
if (clickTarget) {
|
||||
await triggerClick(clickTarget, mouseEventInit);
|
||||
|
|
@ -1751,7 +1813,7 @@ async function _pointerUp(options) {
|
|||
}
|
||||
}
|
||||
|
||||
setPointerDownTarget(null);
|
||||
setPointerDownTarget(null, options);
|
||||
if (runTime.pointerDownTimeout) {
|
||||
globalThis.clearTimeout(runTime.pointerDownTimeout);
|
||||
}
|
||||
|
|
@ -1764,12 +1826,13 @@ async function _pointerUp(options) {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {EventTarget} target
|
||||
* @param {Resolver<EventTarget>} targetResolver
|
||||
* @param {KeyboardEventInit} eventInit
|
||||
* @param {KeyDownOptions} [options]
|
||||
*/
|
||||
async function _press(target, eventInit) {
|
||||
await _keyDown(target, eventInit);
|
||||
await _keyUp(target, eventInit);
|
||||
async function _press(targetResolver, eventInit, options) {
|
||||
await _keyDown(targetResolver, eventInit, options);
|
||||
await _keyUp(targetResolver, eventInit);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1777,7 +1840,7 @@ async function _press(target, eventInit) {
|
|||
* @param {string | number | (string | number)[]} value
|
||||
*/
|
||||
async function _select(target, value) {
|
||||
const values = ensureArray(value).map(String);
|
||||
const values = ensureArray(value, String);
|
||||
let found = false;
|
||||
for (const option of target.options) {
|
||||
option.selected = values.includes(option.value);
|
||||
|
|
@ -1880,13 +1943,7 @@ const currentEvents = $create(null);
|
|||
const currentEventInit = $create(null);
|
||||
/** @type {string[]} */
|
||||
const currentEventTypes = [];
|
||||
/** @type {(() => Promise<void>) | null} */
|
||||
let afterNextDispatch = null;
|
||||
let allowLogs = false;
|
||||
let fullClear = false;
|
||||
|
||||
// Keyboard global variables
|
||||
const changeTargetListeners = [];
|
||||
|
||||
// Other global variables
|
||||
const runTime = getDefaultRunTimeValue();
|
||||
|
|
@ -2063,19 +2120,19 @@ export function cleanupEvents() {
|
|||
*/
|
||||
export async function clear(options) {
|
||||
const finalizeEvents = setupEvents("clear", options);
|
||||
const element = getActiveElement();
|
||||
const activeElement = getActiveElement();
|
||||
|
||||
if (!hasTagName(element, "select") && !isEditable(element)) {
|
||||
if (!hasTagName(activeElement, "select") && !isEditable(activeElement)) {
|
||||
throw new HootInteractionError(
|
||||
`cannot call \`clear()\`: target should be editable or a <select> element`
|
||||
);
|
||||
}
|
||||
|
||||
if (isEditable(element)) {
|
||||
await _clear(element, options);
|
||||
if (isEditable(activeElement)) {
|
||||
await _clear(getActiveElement, options);
|
||||
} else {
|
||||
// Selects
|
||||
await _select(element, "");
|
||||
await _select(activeElement, "");
|
||||
}
|
||||
|
||||
return finalizeEvents();
|
||||
|
|
@ -2311,15 +2368,15 @@ export async function drag(target, options) {
|
|||
*/
|
||||
export async function edit(value, options) {
|
||||
const finalizeEvents = setupEvents("edit", options);
|
||||
const element = getActiveElement();
|
||||
if (!isEditable(element)) {
|
||||
const activeElement = getActiveElement();
|
||||
if (!isEditable(activeElement)) {
|
||||
throw new HootInteractionError(`cannot call \`edit()\`: target should be editable`);
|
||||
}
|
||||
|
||||
if (getNodeValue(element)) {
|
||||
await _clear(element);
|
||||
if (getNodeValue(activeElement)) {
|
||||
await _clear(getActiveElement);
|
||||
}
|
||||
await _fill(element, value, options);
|
||||
await _fill(getActiveElement, value, options);
|
||||
|
||||
return finalizeEvents();
|
||||
}
|
||||
|
|
@ -2358,13 +2415,12 @@ export function enableEventLogs(toggle) {
|
|||
*/
|
||||
export async function fill(value, options) {
|
||||
const finalizeEvents = setupEvents("fill", options);
|
||||
const element = getActiveElement();
|
||||
|
||||
if (!isEditable(element)) {
|
||||
if (!isEditable(getActiveElement())) {
|
||||
throw new HootInteractionError(`cannot call \`fill()\`: target should be editable`);
|
||||
}
|
||||
|
||||
await _fill(element, value, options);
|
||||
await _fill(getActiveElement, value, options);
|
||||
|
||||
return finalizeEvents();
|
||||
}
|
||||
|
|
@ -2422,7 +2478,7 @@ export async function keyDown(keyStrokes, options) {
|
|||
const finalizeEvents = setupEvents("keyDown", options);
|
||||
const eventInits = parseKeyStrokes(keyStrokes, options);
|
||||
for (const eventInit of eventInits) {
|
||||
await _keyDown(getActiveElement(), eventInit);
|
||||
await _keyDown(getActiveElement, eventInit);
|
||||
}
|
||||
|
||||
return finalizeEvents();
|
||||
|
|
@ -2444,7 +2500,7 @@ export async function keyUp(keyStrokes, options) {
|
|||
const finalizeEvents = setupEvents("keyUp", options);
|
||||
const eventInits = parseKeyStrokes(keyStrokes, options);
|
||||
for (const eventInit of eventInits) {
|
||||
await _keyUp(getActiveElement(), eventInit);
|
||||
await _keyUp(getActiveElement, eventInit);
|
||||
}
|
||||
|
||||
return finalizeEvents();
|
||||
|
|
@ -2597,13 +2653,12 @@ export async function pointerUp(target, options) {
|
|||
export async function press(keyStrokes, options) {
|
||||
const finalizeEvents = setupEvents("press", options);
|
||||
const eventInits = parseKeyStrokes(keyStrokes, options);
|
||||
const activeElement = getActiveElement();
|
||||
|
||||
for (const eventInit of eventInits) {
|
||||
await _keyDown(activeElement, eventInit);
|
||||
await _keyDown(getActiveElement, eventInit);
|
||||
}
|
||||
for (const eventInit of eventInits.reverse()) {
|
||||
await _keyUp(activeElement, eventInit);
|
||||
await _keyUp(getActiveElement, eventInit);
|
||||
}
|
||||
|
||||
return finalizeEvents();
|
||||
|
|
@ -2729,7 +2784,7 @@ export async function scroll(target, position, options) {
|
|||
await dispatchAndIgnore({
|
||||
target: element,
|
||||
events: ["scroll", "scrollend"],
|
||||
callback: (el) => el.scrollTo(scrollTopOptions),
|
||||
callback: () => element.scrollTo(scrollTopOptions),
|
||||
});
|
||||
}
|
||||
if (initiator === "keyboard") {
|
||||
|
|
@ -2740,8 +2795,8 @@ export async function scroll(target, position, options) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Performs a selection event sequence current **active element**. This helper is
|
||||
* intended for `<select>` elements only.
|
||||
* Performs a selection event sequence on the current **active element**. This helper
|
||||
* is intended for `<select>` elements only.
|
||||
*
|
||||
* The event sequence is as follows:
|
||||
* - `change`
|
||||
|
|
@ -2755,8 +2810,8 @@ export async function scroll(target, position, options) {
|
|||
*/
|
||||
export async function select(value, options) {
|
||||
const finalizeEvents = setupEvents("select", options);
|
||||
const target = options?.target || getActiveElement();
|
||||
const element = queryAny(await target);
|
||||
const manualTarget = options?.target;
|
||||
const element = manualTarget ? queryAny(await manualTarget) : getActiveElement();
|
||||
|
||||
if (!hasTagName(element, "select")) {
|
||||
throw new HootInteractionError(
|
||||
|
|
@ -2764,12 +2819,12 @@ export async function select(value, options) {
|
|||
);
|
||||
}
|
||||
|
||||
if (options?.target) {
|
||||
await _hover(element, null, { implicit: true, originalTarget: target });
|
||||
if (manualTarget) {
|
||||
await _hover(element, null, { implicit: true, originalTarget: manualTarget });
|
||||
await _pointerDown();
|
||||
}
|
||||
await _select(element, value);
|
||||
if (options?.target) {
|
||||
if (manualTarget) {
|
||||
await _pointerUp();
|
||||
}
|
||||
|
||||
|
|
@ -2896,7 +2951,7 @@ export async function uncheck(target, options) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Triggers a "beforeunload" event the current **window**.
|
||||
* Triggers a "beforeunload" event on the current **window**.
|
||||
*
|
||||
* @param {EventOptions} [options]
|
||||
* @returns {Promise<EventList>}
|
||||
|
|
|
|||
|
|
@ -71,7 +71,6 @@ export {
|
|||
//-----------------------------------------------------------------------------
|
||||
|
||||
// DOM
|
||||
export const observe = interactor("query", dom.observe);
|
||||
export const waitFor = interactor("query", dom.waitFor);
|
||||
export const waitForNone = interactor("query", dom.waitForNone);
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* | "symbol"
|
||||
* | "undefined"} ArgumentPrimitive
|
||||
*
|
||||
* @typedef {[string, any[], any]} InteractionDetails
|
||||
* @typedef {[string, string | undefined, any[], any]} InteractionDetails
|
||||
*
|
||||
* @typedef {"interaction" | "query" | "server" | "time"} InteractionType
|
||||
*/
|
||||
|
|
@ -55,27 +55,28 @@ const $toString = Object.prototype.toString;
|
|||
* @param {InteractionType} type
|
||||
* @param {T} fn
|
||||
* @param {string} name
|
||||
* @param {string} [alias]
|
||||
* @returns {T}
|
||||
*/
|
||||
function makeInteractorFn(type, fn, name) {
|
||||
function makeInteractorFn(type, fn, name, alias) {
|
||||
return {
|
||||
[name](...args) {
|
||||
[alias || name](...args) {
|
||||
const result = fn(...args);
|
||||
if (isInstanceOf(result, Promise)) {
|
||||
if (isPromise(result)) {
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
if (isInstanceOf(args[i], Promise)) {
|
||||
if (isPromise(args[i])) {
|
||||
// Get promise result for async arguments if possible
|
||||
args[i].then((result) => (args[i] = result));
|
||||
}
|
||||
}
|
||||
return result.then((promiseResult) =>
|
||||
dispatchInteraction(type, name, args, promiseResult)
|
||||
dispatchInteraction(type, name, alias, args, promiseResult)
|
||||
);
|
||||
} else {
|
||||
return dispatchInteraction(type, name, args, result);
|
||||
return dispatchInteraction(type, name, alias, args, result);
|
||||
}
|
||||
},
|
||||
}[name];
|
||||
}[alias || name];
|
||||
}
|
||||
|
||||
function polyfillIsError(value) {
|
||||
|
|
@ -237,20 +238,21 @@ export function addInteractionListener(types, callback) {
|
|||
/**
|
||||
* @param {InteractionType} type
|
||||
* @param {string} name
|
||||
* @param {string | undefined} alias
|
||||
* @param {any[]} args
|
||||
* @param {any} returnValue
|
||||
*/
|
||||
export function dispatchInteraction(type, name, args, returnValue) {
|
||||
export function dispatchInteraction(type, name, alias, args, returnValue) {
|
||||
interactionBus.dispatchEvent(
|
||||
new CustomEvent(type, {
|
||||
detail: [name, args, returnValue],
|
||||
detail: [name, alias, args, returnValue],
|
||||
})
|
||||
);
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {...any} helpers
|
||||
* @param {...any} helpers
|
||||
*/
|
||||
export function exposeHelpers(...helpers) {
|
||||
let nameSpaceIndex = 1;
|
||||
|
|
@ -299,7 +301,7 @@ export function getTag(node) {
|
|||
export function interactor(type, fn) {
|
||||
return $assign(makeInteractorFn(type, fn, fn.name), {
|
||||
as(alias) {
|
||||
return makeInteractorFn(type, fn, alias);
|
||||
return makeInteractorFn(type, fn, fn.name, alias);
|
||||
},
|
||||
get silent() {
|
||||
return fn;
|
||||
|
|
@ -314,6 +316,16 @@ export function isFirefox() {
|
|||
return /firefox/i.test($userAgent);
|
||||
}
|
||||
|
||||
Array.isArray;
|
||||
|
||||
/**
|
||||
* @param {any} instance
|
||||
* @returns {instance is Promise<any>}
|
||||
*/
|
||||
export function isPromise(instance) {
|
||||
return instance && typeof instance.then === "function";
|
||||
}
|
||||
|
||||
/**
|
||||
* Cross-realm equivalent to 'instanceof'.
|
||||
* Can be called with multiple constructors, and will return true if the given object
|
||||
|
|
@ -412,7 +424,7 @@ export function toSelector(node, options) {
|
|||
|
||||
export class HootDebugHelpers {
|
||||
/**
|
||||
* @param {...any} helpers
|
||||
* @param {...any} helpers
|
||||
*/
|
||||
constructor(...helpers) {
|
||||
$assign(this, ...helpers);
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ import {
|
|||
S_NONE,
|
||||
strictEqual,
|
||||
} from "../hoot_utils";
|
||||
import { mockFetch } from "../mock/network";
|
||||
import { logger } from "./logger";
|
||||
import { Test } from "./test";
|
||||
|
||||
|
|
@ -134,6 +135,7 @@ const {
|
|||
Array: { isArray: $isArray },
|
||||
clearTimeout,
|
||||
Error,
|
||||
Intl: { ListFormat },
|
||||
Math: { abs: $abs, floor: $floor },
|
||||
Object: { assign: $assign, create: $create, entries: $entries, keys: $keys },
|
||||
parseFloat,
|
||||
|
|
@ -177,7 +179,7 @@ function detailsFromValues(...args) {
|
|||
* @param {...unknown} args
|
||||
*/
|
||||
function detailsFromValuesWithDiff(...args) {
|
||||
return [...detailsFromValues(...args), Markup.diff(...args)];
|
||||
return detailsFromValues(...args).concat([Markup.diff(...args)]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -446,6 +448,7 @@ export function makeExpect(params) {
|
|||
if (currentResult.currentSteps.length) {
|
||||
currentResult.registerEvent("assertion", {
|
||||
label: "step",
|
||||
docLabel: "expect.step",
|
||||
pass: false,
|
||||
failedDetails: detailsFromEntries([["Steps:", currentResult.currentSteps]]),
|
||||
reportMessage: [r`unverified steps`],
|
||||
|
|
@ -456,6 +459,7 @@ export function makeExpect(params) {
|
|||
if (!(assertionCount + queryCount)) {
|
||||
currentResult.registerEvent("assertion", {
|
||||
label: "assertions",
|
||||
docLabel: "expect.assertions",
|
||||
pass: false,
|
||||
reportMessage: [
|
||||
r`expected at least`,
|
||||
|
|
@ -469,6 +473,7 @@ export function makeExpect(params) {
|
|||
) {
|
||||
currentResult.registerEvent("assertion", {
|
||||
label: "assertions",
|
||||
docLabel: "expect.assertions",
|
||||
pass: false,
|
||||
reportMessage: [
|
||||
r`expected`,
|
||||
|
|
@ -484,6 +489,7 @@ export function makeExpect(params) {
|
|||
if (currentResult.currentErrors.length) {
|
||||
currentResult.registerEvent("assertion", {
|
||||
label: "errors",
|
||||
docLabel: "expect.errors",
|
||||
pass: false,
|
||||
reportMessage: [currentResult.currentErrors.length, r`unverified error(s)`],
|
||||
});
|
||||
|
|
@ -493,6 +499,7 @@ export function makeExpect(params) {
|
|||
if (currentResult.expectedErrors && currentResult.expectedErrors !== errorCount) {
|
||||
currentResult.registerEvent("assertion", {
|
||||
label: "errors",
|
||||
docLabel: "expect.errors",
|
||||
pass: false,
|
||||
reportMessage: [
|
||||
r`expected`,
|
||||
|
|
@ -539,6 +546,7 @@ export function makeExpect(params) {
|
|||
/** @type {import("../hoot_utils").Reporting} */
|
||||
const report = {
|
||||
assertions: assertionCount,
|
||||
duration: test.lastResults?.duration || 0,
|
||||
tests: 1,
|
||||
};
|
||||
if (!currentResult.pass) {
|
||||
|
|
@ -562,6 +570,12 @@ export function makeExpect(params) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Expects the current test to have the `expected` amount of assertions. This
|
||||
* number cannot be less than 1.
|
||||
*
|
||||
* Note that it is generally preferred to use `expect.step` and `expect.verifySteps`
|
||||
* instead as it is more reliable and allows to test more extensively.
|
||||
*
|
||||
* @param {number} expected
|
||||
*/
|
||||
function assertions(expected) {
|
||||
|
|
@ -605,10 +619,10 @@ export function makeExpect(params) {
|
|||
return false;
|
||||
}
|
||||
const { errors, options } = resolver;
|
||||
const actualErrors = currentResult.currentErrors;
|
||||
const { currentErrors } = currentResult;
|
||||
const pass =
|
||||
actualErrors.length === errors.length &&
|
||||
actualErrors.every(
|
||||
currentErrors.length === errors.length &&
|
||||
currentErrors.every(
|
||||
(error, i) =>
|
||||
match(error, errors[i]) || (error.cause && match(error.cause, errors[i]))
|
||||
);
|
||||
|
|
@ -623,12 +637,13 @@ export function makeExpect(params) {
|
|||
: "expected the following errors";
|
||||
const assertion = {
|
||||
label: "verifyErrors",
|
||||
docLabel: "expect.verifyErrors",
|
||||
message: options?.message,
|
||||
pass,
|
||||
reportMessage,
|
||||
};
|
||||
if (!pass) {
|
||||
const fActual = actualErrors.map(formatError);
|
||||
const fActual = currentErrors.map(formatError);
|
||||
const fExpected = errors.map(formatError);
|
||||
assertion.failedDetails = detailsFromValuesWithDiff(fExpected, fActual);
|
||||
assertion.stack = getStack(1);
|
||||
|
|
@ -662,6 +677,7 @@ export function makeExpect(params) {
|
|||
: "expected the following steps";
|
||||
const assertion = {
|
||||
label: "verifySteps",
|
||||
docLabel: "expect.verifySteps",
|
||||
message: options?.message,
|
||||
pass,
|
||||
reportMessage,
|
||||
|
|
@ -677,6 +693,11 @@ export function makeExpect(params) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Expects the current test to have the `expected` amount of errors.
|
||||
*
|
||||
* This also means that from the moment this function is called, the test will
|
||||
* accept that amount of errors before being considered as failed.
|
||||
*
|
||||
* @param {number} expected
|
||||
*/
|
||||
function errors(expected) {
|
||||
|
|
@ -718,6 +739,9 @@ export function makeExpect(params) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Registers a step for the current test, that can be consumed by `expect.verifySteps`.
|
||||
* Unconsumed steps will fail the test.
|
||||
*
|
||||
* @param {unknown} value
|
||||
*/
|
||||
function step(value) {
|
||||
|
|
@ -748,6 +772,11 @@ export function makeExpect(params) {
|
|||
throw scopeError("expect.verifyErrors");
|
||||
}
|
||||
ensureArguments(arguments, "any[]", ["object", null]);
|
||||
if (errors.length > currentResult.expectedErrors) {
|
||||
throw new HootError(
|
||||
`cannot call \`expect.verifyErrors()\` without calling \`expect.errors()\` beforehand`
|
||||
);
|
||||
}
|
||||
|
||||
return checkErrors({ errors, options }, true);
|
||||
}
|
||||
|
|
@ -761,6 +790,8 @@ export function makeExpect(params) {
|
|||
* @param {VerifierOptions} [options]
|
||||
* @returns {boolean}
|
||||
* @example
|
||||
* expect.step("web_read_group");
|
||||
* expect.step([1, 2]);
|
||||
* expect.verifySteps(["web_read_group", "web_search_read"]);
|
||||
*/
|
||||
function verifySteps(steps, options) {
|
||||
|
|
@ -988,6 +1019,9 @@ export class CaseResult {
|
|||
this.counts[type]++;
|
||||
switch (type) {
|
||||
case "assertion": {
|
||||
if (value && this.headless) {
|
||||
delete value.docLabel; // Only required in UI
|
||||
}
|
||||
caseEvent = new Assertion(this.counts.assertion, value);
|
||||
this.pass &&= caseEvent.pass;
|
||||
break;
|
||||
|
|
@ -2032,13 +2066,15 @@ export class Matcher {
|
|||
* - contain file objects matching the given `files` list.
|
||||
*
|
||||
* @param {ReturnType<typeof getNodeValue>} [value]
|
||||
* @param {ExpectOptions} [options]
|
||||
* @param {ExpectOptions & { raw?: boolean }} [options]
|
||||
* @example
|
||||
* expect("input[type=email]").toHaveValue("john@doe.com");
|
||||
* expect("input[name=age]").toHaveValue(29);
|
||||
* @example
|
||||
* expect("input[type=file]").toHaveValue(new File(["foo"], "foo.txt"));
|
||||
* @example
|
||||
* expect("select[multiple]").toHaveValue(["foo", "bar"]);
|
||||
* @example
|
||||
* expect("input[name=age]").toHaveValue("29", { raw: true });
|
||||
*/
|
||||
toHaveValue(value, options) {
|
||||
this._ensureArguments(arguments, [
|
||||
|
|
@ -2055,7 +2091,7 @@ export class Matcher {
|
|||
return this._resolve(() => ({
|
||||
name: "toHaveValue",
|
||||
acceptedType: ["string", "node", "node[]"],
|
||||
mapElements: (el) => getNodeValue(el),
|
||||
mapElements: (el) => getNodeValue(el, options?.raw),
|
||||
predicate: (elValue, el) => {
|
||||
if (isCheckable(el)) {
|
||||
throw new HootError(
|
||||
|
|
@ -2201,10 +2237,17 @@ export class Matcher {
|
|||
|
||||
const types = ensureArray(acceptedType);
|
||||
if (!types.some((type) => isOfType(this._received, type))) {
|
||||
const joinedTypes =
|
||||
types.length > 1
|
||||
? new ListFormat("en-GB", {
|
||||
type: "disjunction",
|
||||
style: "long",
|
||||
}).format(types)
|
||||
: types[0];
|
||||
throw new TypeError(
|
||||
`expected received value to be of type ${listJoin(types, ",", "or").join(
|
||||
" "
|
||||
)}, got ${formatHumanReadable(this._received)}`
|
||||
`expected received value to be of type ${joinedTypes}, got ${formatHumanReadable(
|
||||
this._received
|
||||
)}`
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -2300,11 +2343,14 @@ export class CaseEvent {
|
|||
export class Assertion extends CaseEvent {
|
||||
/** @type {string | null | undefined} */
|
||||
additionalMessage;
|
||||
/** @type {string | undefined} */
|
||||
docLabel;
|
||||
type = CASE_EVENT_TYPES.assertion.value;
|
||||
|
||||
/**
|
||||
* @param {number} number
|
||||
* @param {Partial<Assertion & {
|
||||
* docLabel?: string;
|
||||
* message: AssertionMessage,
|
||||
* reportMessage: AssertionReportMessage,
|
||||
* }>} values
|
||||
|
|
@ -2312,6 +2358,7 @@ export class Assertion extends CaseEvent {
|
|||
constructor(number, values) {
|
||||
super();
|
||||
|
||||
this.docLabel = values.docLabel;
|
||||
this.label = values.label;
|
||||
this.flags = values.flags || 0;
|
||||
this.pass = values.pass || false;
|
||||
|
|
@ -2388,11 +2435,16 @@ export class DOMCaseEvent extends CaseEvent {
|
|||
* @param {InteractionType} type
|
||||
* @param {InteractionDetails} details
|
||||
*/
|
||||
constructor(type, [name, args, returnValue]) {
|
||||
constructor(type, [name, alias, args, returnValue]) {
|
||||
super();
|
||||
|
||||
this.type = CASE_EVENT_TYPES[type].value;
|
||||
this.label = name;
|
||||
this.label = alias || name;
|
||||
if (type === "server") {
|
||||
this.docLabel = mockFetch.name;
|
||||
} else {
|
||||
this.docLabel = name;
|
||||
}
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
if (args[i] !== undefined && (i === 0 || typeof args[i] !== "object")) {
|
||||
this.message.push(makeLabelOrString(args[i]));
|
||||
|
|
@ -2419,12 +2471,20 @@ export class CaseError extends CaseEvent {
|
|||
this.message = error.message.split(R_WHITE_SPACE);
|
||||
/** @type {string} */
|
||||
this.stack = error.stack;
|
||||
|
||||
// Ensures that the stack contains the error name & message.
|
||||
// This can happen when setting the 'message' after creating the error.
|
||||
const errorNameAndMessage = String(error);
|
||||
if (!this.stack.startsWith(errorNameAndMessage)) {
|
||||
this.stack = errorNameAndMessage + this.stack.slice(error.name.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export class Step extends CaseEvent {
|
||||
type = CASE_EVENT_TYPES.step.value;
|
||||
label = "step";
|
||||
docLabel = "expect.step";
|
||||
|
||||
/**
|
||||
* @param {any} value
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@ import { getViewPortHeight, getViewPortWidth } from "../mock/window";
|
|||
// Global
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
const { customElements, document, getSelection, HTMLElement, Promise, WeakSet } = globalThis;
|
||||
const { customElements, document, getSelection, HTMLElement, MutationObserver, Promise, WeakSet } =
|
||||
globalThis;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Internal
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/** @odoo-module */
|
||||
|
||||
import { getColorHex } from "../../hoot-dom/hoot_dom_utils";
|
||||
import { stringify } from "../hoot_utils";
|
||||
import { isNil, stringify } from "../hoot_utils";
|
||||
import { urlParams } from "./url";
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -123,13 +123,13 @@ class Logger {
|
|||
$groupEnd();
|
||||
}
|
||||
/**
|
||||
* @param {...any} args
|
||||
* @param {...any} args
|
||||
*/
|
||||
table(...args) {
|
||||
$table(...args);
|
||||
}
|
||||
/**
|
||||
* @param {...any} args
|
||||
* @param {...any} args
|
||||
*/
|
||||
trace(...args) {
|
||||
$trace(...args);
|
||||
|
|
@ -190,7 +190,7 @@ class Logger {
|
|||
`(${withArgs.shift()}`,
|
||||
...withArgs,
|
||||
"time:",
|
||||
suite.jobs.reduce((acc, job) => acc + (job.duration || 0), 0),
|
||||
suite.reporting.duration,
|
||||
"ms)"
|
||||
);
|
||||
}
|
||||
|
|
@ -203,16 +203,7 @@ class Logger {
|
|||
if (!this.canLog("tests")) {
|
||||
return;
|
||||
}
|
||||
const { fullName, lastResults } = test;
|
||||
$log(
|
||||
...styledArguments([
|
||||
`Test ${stringify(fullName)} passed (assertions:`,
|
||||
lastResults.counts.assertion || 0,
|
||||
`/ time:`,
|
||||
lastResults.duration,
|
||||
`ms)`,
|
||||
])
|
||||
);
|
||||
$log(...styledArguments([`Running test ${stringify(test.fullName)}`]));
|
||||
}
|
||||
/**
|
||||
* @param {[label: string, color: string]} prefix
|
||||
|
|
@ -285,32 +276,56 @@ let nextNetworkLogId = 1;
|
|||
*/
|
||||
export function makeNetworkLogger(prefix, title) {
|
||||
const id = nextNetworkLogId++;
|
||||
const slicedTitle =
|
||||
title.length > 128 ? title.slice(0, 128) + " (click to show full input)" : title;
|
||||
return {
|
||||
/**
|
||||
* Request logger: blue-ish.
|
||||
* @param {() => any} getData
|
||||
* Request logger: blue lotus.
|
||||
* @param {() => any[]} getData
|
||||
*/
|
||||
async logRequest(getData) {
|
||||
logRequest(getData) {
|
||||
if (!logger.canLog("debug")) {
|
||||
return;
|
||||
}
|
||||
const color = `color: #66e`;
|
||||
const styles = [`${color}; font-weight: bold;`, color];
|
||||
$groupCollapsed(`-> %c${prefix}#${id}%c<${title}>`, ...styles, await getData());
|
||||
$trace("request trace");
|
||||
const color = `color: #6960ec`;
|
||||
const args = [`${color}; font-weight: bold;`, color];
|
||||
const [dataHeader, ...otherData] = getData();
|
||||
if (!isNil(dataHeader)) {
|
||||
args.push(dataHeader);
|
||||
}
|
||||
$groupCollapsed(`-> %c${prefix}#${id}%c ${slicedTitle}`, ...args);
|
||||
if (slicedTitle !== title) {
|
||||
$log(title);
|
||||
}
|
||||
for (const data of otherData) {
|
||||
$log(data);
|
||||
}
|
||||
$trace("Request trace:");
|
||||
$groupEnd();
|
||||
},
|
||||
/**
|
||||
* Response logger: orange.
|
||||
* @param {() => any} getData
|
||||
* Response logger: dark orange.
|
||||
* @param {() => any[]} getData
|
||||
*/
|
||||
async logResponse(getData) {
|
||||
logResponse(getData) {
|
||||
if (!logger.canLog("debug")) {
|
||||
return;
|
||||
}
|
||||
const color = `color: #f80`;
|
||||
const styles = [`${color}; font-weight: bold;`, color];
|
||||
$log(`<- %c${prefix}#${id}%c<${title}>`, ...styles, await getData());
|
||||
const color = `color: #ff8c00`;
|
||||
const args = [`${color}; font-weight: bold;`, color];
|
||||
const [dataHeader, ...otherData] = getData();
|
||||
if (!isNil(dataHeader)) {
|
||||
args.push(dataHeader);
|
||||
}
|
||||
$groupCollapsed(`<- %c${prefix}#${id}%c ${slicedTitle}`, ...args);
|
||||
if (slicedTitle !== title) {
|
||||
$log(title);
|
||||
}
|
||||
for (const data of otherData) {
|
||||
$log(data);
|
||||
}
|
||||
$trace("Response trace:");
|
||||
$groupEnd();
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ import {
|
|||
import { cleanupAnimations } from "../mock/animation";
|
||||
import { cleanupDate } from "../mock/date";
|
||||
import { internalRandom } from "../mock/math";
|
||||
import { cleanupNavigator, mockUserAgent } from "../mock/navigator";
|
||||
import { cleanupNavigator } from "../mock/navigator";
|
||||
import { cleanupNetwork, throttleNetwork } from "../mock/network";
|
||||
import {
|
||||
cleanupWindow,
|
||||
|
|
@ -50,8 +50,16 @@ import { Test, testError } from "./test";
|
|||
import { EXCLUDE_PREFIX, createUrlFromId, setParams } from "./url";
|
||||
|
||||
// Import all helpers for debug mode
|
||||
import * as hootDom from "@odoo/hoot-dom";
|
||||
import * as hootMock from "@odoo/hoot-mock";
|
||||
import * as _hootDom from "@odoo/hoot-dom";
|
||||
import * as _animation from "../mock/animation";
|
||||
import * as _date from "../mock/date";
|
||||
import * as _math from "../mock/math";
|
||||
import * as _navigator from "../mock/navigator";
|
||||
import * as _network from "../mock/network";
|
||||
import * as _notification from "../mock/notification";
|
||||
import * as _window from "../mock/window";
|
||||
|
||||
const { isPrevented, mockPreventDefault } = _window;
|
||||
|
||||
/**
|
||||
* @typedef {{
|
||||
|
|
@ -115,7 +123,7 @@ const {
|
|||
Number: { parseFloat: $parseFloat },
|
||||
Object: {
|
||||
assign: $assign,
|
||||
defineProperties: $defineProperties,
|
||||
defineProperty: $defineProperty,
|
||||
entries: $entries,
|
||||
freeze: $freeze,
|
||||
fromEntries: $fromEntries,
|
||||
|
|
@ -163,8 +171,11 @@ function formatIncludes(values) {
|
|||
*/
|
||||
function formatAssertions(assertions) {
|
||||
const lines = [];
|
||||
for (const { failedDetails, label, message, number } of assertions) {
|
||||
for (const { additionalMessage, failedDetails, label, message, number } of assertions) {
|
||||
const formattedMessage = message.map((part) => (isLabel(part) ? part[0] : String(part)));
|
||||
if (additionalMessage) {
|
||||
formattedMessage.push(`(${additionalMessage})`);
|
||||
}
|
||||
lines.push(`\n${number}. [${label}] ${formattedMessage.join(" ")}`);
|
||||
if (failedDetails) {
|
||||
for (const detail of failedDetails) {
|
||||
|
|
@ -191,15 +202,6 @@ function formatAssertions(assertions) {
|
|||
return lines;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Event} ev
|
||||
*/
|
||||
function safePrevent(ev) {
|
||||
if (ev.cancelable) {
|
||||
ev.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* @param {T[]} array
|
||||
|
|
@ -832,6 +834,7 @@ export class Runner {
|
|||
}
|
||||
|
||||
manualStart() {
|
||||
this._canStartDef ||= Promise.withResolvers();
|
||||
this._canStartDef.resolve(true);
|
||||
}
|
||||
|
||||
|
|
@ -981,6 +984,8 @@ export class Runner {
|
|||
continue;
|
||||
}
|
||||
|
||||
logger.logTest(test);
|
||||
|
||||
// Suppress console errors and warnings if test is in "todo" mode
|
||||
// (and not in debug).
|
||||
const restoreConsole = handleConsoleIssues(test, !this.debug);
|
||||
|
|
@ -1048,14 +1053,7 @@ export class Runner {
|
|||
|
||||
// Log test errors and increment counters
|
||||
this.expectHooks.after(this);
|
||||
if (lastResults.pass) {
|
||||
logger.logTest(test);
|
||||
|
||||
if (this.state.failedIds.has(test.id)) {
|
||||
this.state.failedIds.delete(test.id);
|
||||
storageSet(STORAGE.failed, [...this.state.failedIds]);
|
||||
}
|
||||
} else {
|
||||
if (!lastResults.pass) {
|
||||
this._failed++;
|
||||
|
||||
const failReasons = [];
|
||||
|
|
@ -1088,6 +1086,9 @@ export class Runner {
|
|||
this.state.failedIds.add(test.id);
|
||||
storageSet(STORAGE.failed, [...this.state.failedIds]);
|
||||
}
|
||||
} else if (this.state.failedIds.has(test.id)) {
|
||||
this.state.failedIds.delete(test.id);
|
||||
storageSet(STORAGE.failed, [...this.state.failedIds]);
|
||||
}
|
||||
|
||||
await this._callbacks.call("after-post-test", test, handleError);
|
||||
|
|
@ -1151,6 +1152,17 @@ export class Runner {
|
|||
|
||||
await this._callbacks.call("after-all", this, logger.error);
|
||||
|
||||
if (this.headless) {
|
||||
// Log root suite results in headless
|
||||
const restoreLogLevel = logger.setLogLevel("suites");
|
||||
for (const suite of this.suites.values()) {
|
||||
if (!suite.parent) {
|
||||
logger.logSuite(suite);
|
||||
}
|
||||
}
|
||||
restoreLogLevel();
|
||||
}
|
||||
|
||||
const { passed, failed, assertions } = this.reporting;
|
||||
if (failed > 0) {
|
||||
const errorMessage = ["Some tests failed: see above for details"];
|
||||
|
|
@ -1317,17 +1329,16 @@ export class Runner {
|
|||
/** @type {Configurators} */
|
||||
const configurators = { ...configuratorGetters, ...configuratorMethods };
|
||||
|
||||
const properties = {};
|
||||
for (const [key, getter] of $entries(configuratorGetters)) {
|
||||
properties[key] = { get: getter };
|
||||
$defineProperty(configurableFn, key, { get: getter });
|
||||
}
|
||||
for (const [key, getter] of $entries(configuratorMethods)) {
|
||||
properties[key] = { value: getter };
|
||||
$defineProperty(configurableFn, key, { value: getter });
|
||||
}
|
||||
|
||||
/** @type {{ tags: Tag[], [key: string]: any }} */
|
||||
let currentConfig = { tags: [] };
|
||||
return $defineProperties(configurableFn, properties);
|
||||
return configurableFn;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1395,7 +1406,7 @@ export class Runner {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {...string} tagNames
|
||||
* @param {...string} tagNames
|
||||
*/
|
||||
const addTagsToCurrent = (...tagNames) => {
|
||||
const current = getCurrent();
|
||||
|
|
@ -1425,7 +1436,6 @@ export class Runner {
|
|||
* @param {boolean} [canEraseParent]
|
||||
*/
|
||||
_erase(job, canEraseParent = false) {
|
||||
job.minimize();
|
||||
if (job instanceof Suite) {
|
||||
if (!job.reporting.failed) {
|
||||
this.suites.delete(job.id);
|
||||
|
|
@ -1435,6 +1445,7 @@ export class Runner {
|
|||
this.tests.delete(job.id);
|
||||
}
|
||||
}
|
||||
job.minimize();
|
||||
if (canEraseParent && job.parent) {
|
||||
const jobIndex = job.parent.jobs.indexOf(job);
|
||||
if (jobIndex >= 0) {
|
||||
|
|
@ -1694,9 +1705,6 @@ export class Runner {
|
|||
if (preset.tags?.length) {
|
||||
this._include(this.state.includeSpecs.tag, preset.tags, INCLUDE_LEVEL.preset);
|
||||
}
|
||||
if (preset.platform) {
|
||||
mockUserAgent(preset.platform);
|
||||
}
|
||||
if (typeof preset.touch === "boolean") {
|
||||
this.beforeEach(() => mockTouch(preset.touch));
|
||||
}
|
||||
|
|
@ -1731,7 +1739,7 @@ export class Runner {
|
|||
this._populateState = false;
|
||||
|
||||
if (!this.state.tests.length) {
|
||||
throw new HootError(`no tests to run`, { level: "critical" });
|
||||
logger.logGlobal(`no tests to run`);
|
||||
}
|
||||
|
||||
// Reduce non-included suites & tests info to a miminum
|
||||
|
|
@ -1778,7 +1786,7 @@ export class Runner {
|
|||
const error = ensureError(ev);
|
||||
if (handledErrors.has(error)) {
|
||||
// Already handled
|
||||
return safePrevent(ev);
|
||||
return ev.preventDefault();
|
||||
}
|
||||
handledErrors.add(error);
|
||||
|
||||
|
|
@ -1786,27 +1794,32 @@ export class Runner {
|
|||
ev = new ErrorEvent("error", { error });
|
||||
}
|
||||
|
||||
mockPreventDefault(ev);
|
||||
|
||||
if (error.message.includes(RESIZE_OBSERVER_MESSAGE)) {
|
||||
// Stop event
|
||||
ev.stopImmediatePropagation();
|
||||
if (ev.bubbles) {
|
||||
ev.stopPropagation();
|
||||
}
|
||||
return safePrevent(ev);
|
||||
return ev.preventDefault();
|
||||
}
|
||||
|
||||
if (this.state.currentTest && !(error instanceof HootError)) {
|
||||
if (this.state.currentTest) {
|
||||
// Handle the error in the current test
|
||||
const handled = this._handleErrorInTest(ev, error);
|
||||
if (handled) {
|
||||
return safePrevent(ev);
|
||||
if (!(error instanceof HootError)) {
|
||||
ev.preventDefault();
|
||||
}
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
this._handleGlobalError(ev, error);
|
||||
}
|
||||
|
||||
// Prevent error event
|
||||
safePrevent(ev);
|
||||
ev.preventDefault();
|
||||
|
||||
// Log error
|
||||
if (error.level) {
|
||||
|
|
@ -1826,7 +1839,7 @@ export class Runner {
|
|||
_handleErrorInTest(ev, error) {
|
||||
for (const callbackRegistry of this._getCallbackChain(this.state.currentTest)) {
|
||||
callbackRegistry.callSync("error", ev, logger.error);
|
||||
if (ev.defaultPrevented) {
|
||||
if (isPrevented(ev)) {
|
||||
// Prevented in tests
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1875,7 +1888,7 @@ export class Runner {
|
|||
async _setupStart() {
|
||||
this._startTime = $now();
|
||||
if (this.config.manual) {
|
||||
this._canStartDef = Promise.withResolvers();
|
||||
this._canStartDef ||= Promise.withResolvers();
|
||||
}
|
||||
|
||||
// Config log
|
||||
|
|
@ -1903,10 +1916,21 @@ export class Runner {
|
|||
this.config.debugTest = false;
|
||||
this.debug = false;
|
||||
} else {
|
||||
const nameSpace = exposeHelpers(hootDom, hootMock, {
|
||||
destroy,
|
||||
getFixture: this.fixture.get,
|
||||
});
|
||||
const nameSpace = exposeHelpers(
|
||||
_hootDom,
|
||||
_animation,
|
||||
_date,
|
||||
_math,
|
||||
_navigator,
|
||||
_network,
|
||||
_notification,
|
||||
_window,
|
||||
{
|
||||
__debug__: this,
|
||||
destroy,
|
||||
getFixture: this.fixture.get,
|
||||
}
|
||||
);
|
||||
logger.setLogLevel("debug");
|
||||
logger.logDebug(
|
||||
`Debug mode is active: Hoot helpers available from \`window.${nameSpace}\``
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ export function getTagSimilarities() {
|
|||
* Used in Hoot internal tests to remove tags introduced within a test.
|
||||
*
|
||||
* @private
|
||||
* @param {Iterable<string>} tagKeys
|
||||
* @param {Iterable<string>} tagKeys
|
||||
*/
|
||||
export function undefineTags(tagKeys) {
|
||||
for (const tagKey of tagKeys) {
|
||||
|
|
|
|||
|
|
@ -1,33 +1,84 @@
|
|||
/** @odoo-module alias=@odoo/hoot-mock default=false */
|
||||
|
||||
/**
|
||||
* @typedef {import("./mock/network").ServerWebSocket} ServerWebSocket
|
||||
*/
|
||||
import * as _hootDom from "@odoo/hoot-dom";
|
||||
import * as _animation from "./mock/animation";
|
||||
import * as _date from "./mock/date";
|
||||
import * as _math from "./mock/math";
|
||||
import * as _navigator from "./mock/navigator";
|
||||
import * as _network from "./mock/network";
|
||||
import * as _notification from "./mock/notification";
|
||||
import * as _window from "./mock/window";
|
||||
|
||||
export {
|
||||
advanceFrame,
|
||||
advanceTime,
|
||||
animationFrame,
|
||||
cancelAllTimers,
|
||||
Deferred,
|
||||
delay,
|
||||
freezeTime,
|
||||
microTick,
|
||||
runAllTimers,
|
||||
setFrameRate,
|
||||
tick,
|
||||
unfreezeTime,
|
||||
} from "@odoo/hoot-dom";
|
||||
export { disableAnimations, enableTransitions } from "./mock/animation";
|
||||
export { mockDate, mockLocale, mockTimeZone, onTimeZoneChange } from "./mock/date";
|
||||
export { makeSeededRandom } from "./mock/math";
|
||||
export { mockPermission, mockSendBeacon, mockUserAgent, mockVibrate } from "./mock/navigator";
|
||||
export { mockFetch, mockLocation, mockWebSocket, mockWorker } from "./mock/network";
|
||||
export { flushNotifications } from "./mock/notification";
|
||||
export {
|
||||
mockMatchMedia,
|
||||
mockTouch,
|
||||
watchAddedNodes,
|
||||
watchKeys,
|
||||
watchListeners,
|
||||
} from "./mock/window";
|
||||
/** @deprecated use `import { advanceFrame } from "@odoo/hoot";` */
|
||||
export const advanceFrame = _hootDom.advanceFrame;
|
||||
/** @deprecated use `import { advanceTime } from "@odoo/hoot";` */
|
||||
export const advanceTime = _hootDom.advanceTime;
|
||||
/** @deprecated use `import { animationFrame } from "@odoo/hoot";` */
|
||||
export const animationFrame = _hootDom.animationFrame;
|
||||
/** @deprecated use `import { cancelAllTimers } from "@odoo/hoot";` */
|
||||
export const cancelAllTimers = _hootDom.cancelAllTimers;
|
||||
/** @deprecated use `import { Deferred } from "@odoo/hoot";` */
|
||||
export const Deferred = _hootDom.Deferred;
|
||||
/** @deprecated use `import { delay } from "@odoo/hoot";` */
|
||||
export const delay = _hootDom.delay;
|
||||
/** @deprecated use `import { freezeTime } from "@odoo/hoot";` */
|
||||
export const freezeTime = _hootDom.freezeTime;
|
||||
/** @deprecated use `import { microTick } from "@odoo/hoot";` */
|
||||
export const microTick = _hootDom.microTick;
|
||||
/** @deprecated use `import { runAllTimers } from "@odoo/hoot";` */
|
||||
export const runAllTimers = _hootDom.runAllTimers;
|
||||
/** @deprecated use `import { setFrameRate } from "@odoo/hoot";` */
|
||||
export const setFrameRate = _hootDom.setFrameRate;
|
||||
/** @deprecated use `import { tick } from "@odoo/hoot";` */
|
||||
export const tick = _hootDom.tick;
|
||||
/** @deprecated use `import { unfreezeTime } from "@odoo/hoot";` */
|
||||
export const unfreezeTime = _hootDom.unfreezeTime;
|
||||
|
||||
/** @deprecated use `import { disableAnimations } from "@odoo/hoot";` */
|
||||
export const disableAnimations = _animation.disableAnimations;
|
||||
/** @deprecated use `import { enableTransitions } from "@odoo/hoot";` */
|
||||
export const enableTransitions = _animation.enableTransitions;
|
||||
|
||||
/** @deprecated use `import { mockDate } from "@odoo/hoot";` */
|
||||
export const mockDate = _date.mockDate;
|
||||
/** @deprecated use `import { mockLocale } from "@odoo/hoot";` */
|
||||
export const mockLocale = _date.mockLocale;
|
||||
/** @deprecated use `import { mockTimeZone } from "@odoo/hoot";` */
|
||||
export const mockTimeZone = _date.mockTimeZone;
|
||||
/** @deprecated use `import { onTimeZoneChange } from "@odoo/hoot";` */
|
||||
export const onTimeZoneChange = _date.onTimeZoneChange;
|
||||
|
||||
/** @deprecated use `import { makeSeededRandom } from "@odoo/hoot";` */
|
||||
export const makeSeededRandom = _math.makeSeededRandom;
|
||||
|
||||
/** @deprecated use `import { mockPermission } from "@odoo/hoot";` */
|
||||
export const mockPermission = _navigator.mockPermission;
|
||||
/** @deprecated use `import { mockSendBeacon } from "@odoo/hoot";` */
|
||||
export const mockSendBeacon = _navigator.mockSendBeacon;
|
||||
/** @deprecated use `import { mockUserAgent } from "@odoo/hoot";` */
|
||||
export const mockUserAgent = _navigator.mockUserAgent;
|
||||
/** @deprecated use `import { mockVibrate } from "@odoo/hoot";` */
|
||||
export const mockVibrate = _navigator.mockVibrate;
|
||||
|
||||
/** @deprecated use `import { mockFetch } from "@odoo/hoot";` */
|
||||
export const mockFetch = _network.mockFetch;
|
||||
/** @deprecated use `import { mockLocation } from "@odoo/hoot";` */
|
||||
export const mockLocation = _network.mockLocation;
|
||||
/** @deprecated use `import { mockWebSocket } from "@odoo/hoot";` */
|
||||
export const mockWebSocket = _network.mockWebSocket;
|
||||
/** @deprecated use `import { mockWorker } from "@odoo/hoot";` */
|
||||
export const mockWorker = _network.mockWorker;
|
||||
|
||||
/** @deprecated use `import { flushNotifications } from "@odoo/hoot";` */
|
||||
export const flushNotifications = _notification.flushNotifications;
|
||||
|
||||
/** @deprecated use `import { mockMatchMedia } from "@odoo/hoot";` */
|
||||
export const mockMatchMedia = _window.mockMatchMedia;
|
||||
/** @deprecated use `import { mockTouch } from "@odoo/hoot";` */
|
||||
export const mockTouch = _window.mockTouch;
|
||||
/** @deprecated use `import { watchAddedNodes } from "@odoo/hoot";` */
|
||||
export const watchAddedNodes = _window.watchAddedNodes;
|
||||
/** @deprecated use `import { watchKeys } from "@odoo/hoot";` */
|
||||
export const watchKeys = _window.watchKeys;
|
||||
/** @deprecated use `import { watchListeners } from "@odoo/hoot";` */
|
||||
export const watchListeners = _window.watchListeners;
|
||||
|
|
|
|||
|
|
@ -3,11 +3,29 @@
|
|||
import { logger } from "./core/logger";
|
||||
import { Runner } from "./core/runner";
|
||||
import { urlParams } from "./core/url";
|
||||
import { makeRuntimeHook } from "./hoot_utils";
|
||||
import { copyAndBind, makeRuntimeHook } from "./hoot_utils";
|
||||
import { setRunner } from "./main_runner";
|
||||
import { setupHootUI } from "./ui/setup_hoot_ui";
|
||||
|
||||
/**
|
||||
* @typedef {import("../hoot-dom/helpers/dom").Dimensions} Dimensions
|
||||
* @typedef {import("../hoot-dom/helpers/dom").FormatXmlOptions} FormatXmlOptions
|
||||
* @typedef {import("../hoot-dom/helpers/dom").Position} Position
|
||||
* @typedef {import("../hoot-dom/helpers/dom").QueryOptions} QueryOptions
|
||||
* @typedef {import("../hoot-dom/helpers/dom").QueryRectOptions} QueryRectOptions
|
||||
* @typedef {import("../hoot-dom/helpers/dom").QueryTextOptions} QueryTextOptions
|
||||
* @typedef {import("../hoot-dom/helpers/dom").Target} Target
|
||||
*
|
||||
* @typedef {import("../hoot-dom/helpers/events").DragHelpers} DragHelpers
|
||||
* @typedef {import("../hoot-dom/helpers/events").DragOptions} DragOptions
|
||||
* @typedef {import("../hoot-dom/helpers/events").EventType} EventType
|
||||
* @typedef {import("../hoot-dom/helpers/events").FillOptions} FillOptions
|
||||
* @typedef {import("../hoot-dom/helpers/events").InputValue} InputValue
|
||||
* @typedef {import("../hoot-dom/helpers/events").KeyStrokes} KeyStrokes
|
||||
* @typedef {import("../hoot-dom/helpers/events").PointerOptions} PointerOptions
|
||||
*
|
||||
* @typedef {import("./mock/network").ServerWebSocket} ServerWebSocket
|
||||
*
|
||||
* @typedef {{
|
||||
* runner: Runner;
|
||||
* ui: import("./ui/setup_hoot_ui").UiState
|
||||
|
|
@ -26,19 +44,12 @@ setRunner(runner);
|
|||
// Exports
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @param {...unknown} values
|
||||
*/
|
||||
export function registerDebugInfo(...values) {
|
||||
logger.logDebug(...values);
|
||||
}
|
||||
|
||||
// Main test API
|
||||
export const describe = runner.describe;
|
||||
export const expect = runner.expect;
|
||||
export const test = runner.test;
|
||||
|
||||
// Hooks
|
||||
// Test hooks
|
||||
export const after = makeRuntimeHook("after");
|
||||
export const afterEach = makeRuntimeHook("afterEach");
|
||||
export const before = makeRuntimeHook("before");
|
||||
|
|
@ -48,7 +59,7 @@ export const onError = makeRuntimeHook("onError");
|
|||
// Fixture
|
||||
export const getFixture = runner.fixture.get;
|
||||
|
||||
// Other functions
|
||||
// Other test runner functions
|
||||
export const definePreset = runner.exportFn(runner.definePreset);
|
||||
export const dryRun = runner.exportFn(runner.dryRun);
|
||||
export const getCurrent = runner.exportFn(runner.getCurrent);
|
||||
|
|
@ -61,59 +72,102 @@ export { defineTags } from "./core/tag";
|
|||
export { createJobScopedGetter } from "./hoot_utils";
|
||||
|
||||
// Constants
|
||||
export const globals = {
|
||||
AbortController: globalThis.AbortController,
|
||||
Array: globalThis.Array,
|
||||
Boolean: globalThis.Boolean,
|
||||
DataTransfer: globalThis.DataTransfer,
|
||||
Date: globalThis.Date,
|
||||
Document: globalThis.Document,
|
||||
Element: globalThis.Element,
|
||||
Error: globalThis.Error,
|
||||
ErrorEvent: globalThis.ErrorEvent,
|
||||
EventTarget: globalThis.EventTarget,
|
||||
Map: globalThis.Map,
|
||||
MutationObserver: globalThis.MutationObserver,
|
||||
Number: globalThis.Number,
|
||||
Object: globalThis.Object,
|
||||
ProgressEvent: globalThis.ProgressEvent,
|
||||
Promise: globalThis.Promise,
|
||||
PromiseRejectionEvent: globalThis.PromiseRejectionEvent,
|
||||
Proxy: globalThis.Proxy,
|
||||
RegExp: globalThis.RegExp,
|
||||
Request: globalThis.Request,
|
||||
Response: globalThis.Response,
|
||||
Set: globalThis.Set,
|
||||
SharedWorker: globalThis.SharedWorker,
|
||||
String: globalThis.String,
|
||||
TypeError: globalThis.TypeError,
|
||||
URIError: globalThis.URIError,
|
||||
URL: globalThis.URL,
|
||||
URLSearchParams: globalThis.URLSearchParams,
|
||||
WebSocket: globalThis.WebSocket,
|
||||
Window: globalThis.Window,
|
||||
Worker: globalThis.Worker,
|
||||
XMLHttpRequest: globalThis.XMLHttpRequest,
|
||||
cancelAnimationFrame: globalThis.cancelAnimationFrame,
|
||||
clearInterval: globalThis.clearInterval,
|
||||
clearTimeout: globalThis.clearTimeout,
|
||||
console: globalThis.console,
|
||||
document: globalThis.document,
|
||||
fetch: globalThis.fetch,
|
||||
history: globalThis.history,
|
||||
JSON: globalThis.JSON,
|
||||
localStorage: globalThis.localStorage,
|
||||
location: globalThis.location,
|
||||
matchMedia: globalThis.matchMedia,
|
||||
Math: globalThis.Math,
|
||||
navigator: globalThis.navigator,
|
||||
ontouchstart: globalThis.ontouchstart,
|
||||
performance: globalThis.performance,
|
||||
requestAnimationFrame: globalThis.requestAnimationFrame,
|
||||
sessionStorage: globalThis.sessionStorage,
|
||||
setInterval: globalThis.setInterval,
|
||||
setTimeout: globalThis.setTimeout,
|
||||
};
|
||||
export const globals = copyAndBind(globalThis);
|
||||
export const isHootReady = setupHootUI();
|
||||
|
||||
// Mock
|
||||
export { disableAnimations, enableTransitions } from "./mock/animation";
|
||||
export { mockDate, mockLocale, mockTimeZone, onTimeZoneChange } from "./mock/date";
|
||||
export { makeSeededRandom } from "./mock/math";
|
||||
export { mockPermission, mockSendBeacon, mockUserAgent, mockVibrate } from "./mock/navigator";
|
||||
export { mockFetch, mockLocation, mockWebSocket, mockWorker, withFetch } from "./mock/network";
|
||||
export { flushNotifications } from "./mock/notification";
|
||||
export {
|
||||
mockMatchMedia,
|
||||
mockTouch,
|
||||
watchAddedNodes,
|
||||
watchKeys,
|
||||
watchListeners,
|
||||
} from "./mock/window";
|
||||
|
||||
// HOOT-DOM
|
||||
export {
|
||||
advanceFrame,
|
||||
advanceTime,
|
||||
animationFrame,
|
||||
cancelAllTimers,
|
||||
check,
|
||||
clear,
|
||||
click,
|
||||
dblclick,
|
||||
Deferred,
|
||||
delay,
|
||||
drag,
|
||||
edit,
|
||||
fill,
|
||||
formatXml,
|
||||
freezeTime,
|
||||
getActiveElement,
|
||||
getFocusableElements,
|
||||
getNextFocusableElement,
|
||||
getParentFrame,
|
||||
getPreviousFocusableElement,
|
||||
hover,
|
||||
isDisplayed,
|
||||
isEditable,
|
||||
isFocusable,
|
||||
isInDOM,
|
||||
isInViewPort,
|
||||
isScrollable,
|
||||
isVisible,
|
||||
keyDown,
|
||||
keyUp,
|
||||
leave,
|
||||
manuallyDispatchProgrammaticEvent,
|
||||
matches,
|
||||
microTick,
|
||||
middleClick,
|
||||
on,
|
||||
pointerDown,
|
||||
pointerUp,
|
||||
press,
|
||||
queryAll,
|
||||
queryAllAttributes,
|
||||
queryAllProperties,
|
||||
queryAllRects,
|
||||
queryAllTexts,
|
||||
queryAllValues,
|
||||
queryAny,
|
||||
queryAttribute,
|
||||
queryFirst,
|
||||
queryOne,
|
||||
queryRect,
|
||||
queryText,
|
||||
queryValue,
|
||||
resize,
|
||||
rightClick,
|
||||
runAllTimers,
|
||||
scroll,
|
||||
select,
|
||||
setFrameRate,
|
||||
setInputFiles,
|
||||
setInputRange,
|
||||
tick,
|
||||
uncheck,
|
||||
unfreezeTime,
|
||||
unload,
|
||||
waitFor,
|
||||
waitForNone,
|
||||
waitUntil,
|
||||
} from "@odoo/hoot-dom";
|
||||
|
||||
// Debug
|
||||
export { exposeHelpers } from "../hoot-dom/hoot_dom_utils";
|
||||
export const __debug__ = runner;
|
||||
|
||||
export const isHootReady = setupHootUI();
|
||||
/**
|
||||
* @param {...unknown} values
|
||||
*/
|
||||
export function registerDebugInfo(...values) {
|
||||
logger.logDebug(...values);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import { isNode } from "@web/../lib/hoot-dom/helpers/dom";
|
|||
import {
|
||||
isInstanceOf,
|
||||
isIterable,
|
||||
isPromise,
|
||||
parseRegExp,
|
||||
R_WHITE_SPACE,
|
||||
toSelector,
|
||||
|
|
@ -114,6 +115,7 @@ const {
|
|||
TypeError,
|
||||
URL,
|
||||
URLSearchParams,
|
||||
WeakMap,
|
||||
WeakSet,
|
||||
window,
|
||||
} = globalThis;
|
||||
|
|
@ -165,10 +167,21 @@ function getGenericSerializer(value) {
|
|||
}
|
||||
|
||||
function makeObjectCache() {
|
||||
const cache = new Set();
|
||||
const cache = new WeakSet();
|
||||
return {
|
||||
add: (...values) => values.forEach((value) => cache.add(value)),
|
||||
has: (...values) => values.every((value) => cache.has(value)),
|
||||
add: (...values) => {
|
||||
for (const value of values) {
|
||||
cache.add(value);
|
||||
}
|
||||
},
|
||||
has: (...values) => {
|
||||
for (const value of values) {
|
||||
if (!cache.has(value)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -178,11 +191,7 @@ function makeObjectCache() {
|
|||
* @returns {T}
|
||||
*/
|
||||
function resolve(value) {
|
||||
if (typeof value === "function") {
|
||||
return value();
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
return typeof value === "function" ? value() : value;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -205,6 +214,51 @@ function truncate(value, length = MAX_HUMAN_READABLE_SIZE) {
|
|||
return strValue.length <= length ? strValue : strValue.slice(0, length) + ELLIPSIS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* @param {T} value
|
||||
* @param {ReturnType<makeObjectCache>} cache
|
||||
* @returns {T}
|
||||
*/
|
||||
function _deepCopy(value, cache) {
|
||||
if (!value) {
|
||||
return value;
|
||||
}
|
||||
if (typeof value === "function") {
|
||||
if (value.name) {
|
||||
return `<function ${value.name}>`;
|
||||
} else {
|
||||
return "<anonymous function>";
|
||||
}
|
||||
}
|
||||
if (typeof value === "object" && !Markup.isMarkup(value)) {
|
||||
if (isInstanceOf(value, String, Number, Boolean)) {
|
||||
return value;
|
||||
}
|
||||
if (isNode(value)) {
|
||||
// Nodes
|
||||
return value.cloneNode(true);
|
||||
} else if (isInstanceOf(value, Date, RegExp)) {
|
||||
// Dates & regular expressions
|
||||
return new (getConstructor(value))(value);
|
||||
} else if (isIterable(value)) {
|
||||
const isArray = $isArray(value);
|
||||
const valueArray = isArray ? value : [...value];
|
||||
// Iterables
|
||||
const values = valueArray.map((item) => _deepCopy(item, cache));
|
||||
return $isArray(value) ? values : new (getConstructor(value))(values);
|
||||
} else {
|
||||
// Other objects
|
||||
if (cache.has(value)) {
|
||||
return S_CIRCULAR;
|
||||
}
|
||||
cache.add(value);
|
||||
return $fromEntries($ownKeys(value).map((key) => [key, _deepCopy(value[key], cache)]));
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {unknown} a
|
||||
* @param {unknown} b
|
||||
|
|
@ -521,6 +575,8 @@ class QueryPartialString extends QueryString {
|
|||
compareFn = getFuzzyScore;
|
||||
}
|
||||
|
||||
const EMPTY_CONSTRUCTOR = { name: null };
|
||||
|
||||
/** @type {Map<Function, (value: unknown) => string>} */
|
||||
const GENERIC_SERIALIZERS = new Map([
|
||||
[BigInt, (v) => v.valueOf()],
|
||||
|
|
@ -551,10 +607,12 @@ const R_NAMED_FUNCTION = /^\s*(async\s+)?function/;
|
|||
const R_INVISIBLE_CHARACTERS = /[\u00a0\u200b-\u200d\ufeff]/g;
|
||||
const R_OBJECT = /^\[object ([\w-]+)\]$/;
|
||||
|
||||
const labelObjects = new WeakSet();
|
||||
const objectConstructors = new Map();
|
||||
/** @type {(KeyboardEventInit & { callback: (ev: KeyboardEvent) => any })[]} */
|
||||
const hootKeys = [];
|
||||
const labelObjects = new WeakSet();
|
||||
const objectConstructors = new Map();
|
||||
/** @type {WeakMap<unknown, unknown>} */
|
||||
const syncValues = new WeakMap();
|
||||
const windowTarget = {
|
||||
addEventListener: window.addEventListener.bind(window),
|
||||
removeEventListener: window.removeEventListener.bind(window),
|
||||
|
|
@ -597,6 +655,22 @@ export function callHootKey(ev) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* @param {T} object
|
||||
* @returns {T}
|
||||
*/
|
||||
export function copyAndBind(object) {
|
||||
const copy = {};
|
||||
for (const [key, desc] of $entries($getOwnPropertyDescriptors(object))) {
|
||||
if (key !== "constructor" && typeof desc.value === "function") {
|
||||
desc.value = desc.value.bind(object);
|
||||
}
|
||||
$defineProperty(copy, key, desc);
|
||||
}
|
||||
return copy;
|
||||
}
|
||||
|
||||
/**
|
||||
* @template {(previous: any, ...args: any[]) => any} T
|
||||
* @param {T} instanceGetter
|
||||
|
|
@ -666,6 +740,7 @@ export function createReporting(parentReporting) {
|
|||
|
||||
const reporting = reactive({
|
||||
assertions: 0,
|
||||
duration: 0,
|
||||
failed: 0,
|
||||
passed: 0,
|
||||
skipped: 0,
|
||||
|
|
@ -714,45 +789,6 @@ export function createMock(target, descriptors) {
|
|||
return mock;
|
||||
}
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* @param {T} value
|
||||
* @returns {T}
|
||||
*/
|
||||
export function deepCopy(value) {
|
||||
if (!value) {
|
||||
return value;
|
||||
}
|
||||
if (typeof value === "function") {
|
||||
if (value.name) {
|
||||
return `<function ${value.name}>`;
|
||||
} else {
|
||||
return "<anonymous function>";
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof value === "object" && !Markup.isMarkup(value)) {
|
||||
if (isInstanceOf(value, String, Number, Boolean)) {
|
||||
return value;
|
||||
}
|
||||
if (isNode(value)) {
|
||||
// Nodes
|
||||
return value.cloneNode(true);
|
||||
} else if (isInstanceOf(value, Date, RegExp)) {
|
||||
// Dates & regular expressions
|
||||
return new (getConstructor(value))(value);
|
||||
} else if (isIterable(value)) {
|
||||
// Iterables
|
||||
const values = [...value].map(deepCopy);
|
||||
return $isArray(value) ? values : new (getConstructor(value))(values);
|
||||
} else {
|
||||
// Other objects
|
||||
return $fromEntries($ownKeys(value).map((key) => [key, deepCopy(value[key])]));
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @template {(...args: any[]) => any} T
|
||||
* @param {T} fn
|
||||
|
|
@ -801,6 +837,15 @@ export function debounce(fn, delay) {
|
|||
}[name];
|
||||
}
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* @param {T} value
|
||||
* @returns {T}
|
||||
*/
|
||||
export function deepCopy(value) {
|
||||
return _deepCopy(value, makeObjectCache());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {unknown} a
|
||||
* @param {unknown} b
|
||||
|
|
@ -955,7 +1000,7 @@ export function generateHash(...strings) {
|
|||
export function getConstructor(value) {
|
||||
const { constructor } = value;
|
||||
if (constructor !== Object) {
|
||||
return constructor || { name: null };
|
||||
return constructor || EMPTY_CONSTRUCTOR;
|
||||
}
|
||||
const str = value.toString();
|
||||
const match = str.match(R_OBJECT);
|
||||
|
|
@ -1021,6 +1066,30 @@ export function getFuzzyScore(pattern, string) {
|
|||
return score;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value associated to the given object.
|
||||
* If 'toStringValue' is set, the result will concatenate any inner object that
|
||||
* also has an associated sync value. This is typically useful for nested Blobs.
|
||||
*
|
||||
* @param {unknown} object
|
||||
* @param {boolean} toStringValue
|
||||
*/
|
||||
export function getSyncValue(object, toStringValue) {
|
||||
const result = syncValues.get(object);
|
||||
if (!toStringValue) {
|
||||
return result;
|
||||
}
|
||||
let textResult = "";
|
||||
if (isIterable(result)) {
|
||||
for (const part of result) {
|
||||
textResult += syncValues.has(part) ? getSyncValue(part, toStringValue) : String(part);
|
||||
}
|
||||
} else {
|
||||
textResult += String(result);
|
||||
}
|
||||
return textResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {unknown} value
|
||||
* @returns {ArgumentType}
|
||||
|
|
@ -1389,6 +1458,14 @@ export async function paste() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {unknown} object
|
||||
* @param {unknown} value
|
||||
*/
|
||||
export function setSyncValue(object, value) {
|
||||
syncValues.set(object, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} key
|
||||
*/
|
||||
|
|
@ -1591,7 +1668,7 @@ export class Callbacks {
|
|||
* @param {boolean} [once]
|
||||
*/
|
||||
add(type, callback, once) {
|
||||
if (isInstanceOf(callback, Promise)) {
|
||||
if (isPromise(callback)) {
|
||||
const promiseValue = callback;
|
||||
callback = function waitForPromise() {
|
||||
return Promise.resolve(promiseValue).then(resolve);
|
||||
|
|
@ -1994,9 +2071,12 @@ export const INCLUDE_LEVEL = {
|
|||
};
|
||||
|
||||
export const MIME_TYPE = {
|
||||
formData: "multipart/form-data",
|
||||
blob: "application/octet-stream",
|
||||
html: "text/html",
|
||||
json: "application/json",
|
||||
text: "text/plain",
|
||||
xml: "text/xml",
|
||||
};
|
||||
|
||||
export const STORAGE = {
|
||||
|
|
@ -2006,6 +2086,7 @@ export const STORAGE = {
|
|||
};
|
||||
|
||||
export const S_ANY = Symbol("any value");
|
||||
export const S_CIRCULAR = Symbol("circular object");
|
||||
export const S_NONE = Symbol("no value");
|
||||
|
||||
export const R_QUERY_EXACT = new RegExp(
|
||||
|
|
|
|||
|
|
@ -11,6 +11,15 @@ let runner;
|
|||
// Exports
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @param {string} funcName
|
||||
*/
|
||||
export function ensureTest(funcName) {
|
||||
if (!runner?.getCurrent().test) {
|
||||
throw new Error(`Cannot call '${funcName}' from outside a test`);
|
||||
}
|
||||
}
|
||||
|
||||
export function getRunner() {
|
||||
return runner;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import { on } from "@odoo/hoot-dom";
|
||||
import { MockEventTarget } from "../hoot_utils";
|
||||
import { ensureTest } from "../main_runner";
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global
|
||||
|
|
@ -95,6 +96,7 @@ export function cleanupAnimations() {
|
|||
* @param {boolean} [enable=false]
|
||||
*/
|
||||
export function disableAnimations(enable = false) {
|
||||
ensureTest("disableAnimations");
|
||||
allowAnimations = enable;
|
||||
}
|
||||
|
||||
|
|
@ -105,6 +107,7 @@ export function disableAnimations(enable = false) {
|
|||
* @param {boolean} [enable=true]
|
||||
*/
|
||||
export function enableTransitions(enable = true) {
|
||||
ensureTest("enableTransitions");
|
||||
allowTransitions = enable;
|
||||
animationChangeBus.dispatchEvent(new CustomEvent("toggle-transitions"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +1,71 @@
|
|||
/** @odoo-module */
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
const {
|
||||
Math: { random: $random, floor: $floor },
|
||||
TextEncoder,
|
||||
} = globalThis;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Internal
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/** @type {SubtleCrypto["decrypt"]} */
|
||||
function decrypt(algorithm, key, data) {
|
||||
return Promise.resolve($encode(data.replace("encrypted data:", "")));
|
||||
}
|
||||
|
||||
/** @type {SubtleCrypto["encrypt"]} */
|
||||
function encrypt(algorithm, key, data) {
|
||||
return Promise.resolve(`encrypted data:${$decode(data)}`);
|
||||
}
|
||||
|
||||
/** @type {Crypto["getRandomValues"]} */
|
||||
function getRandomValues(array) {
|
||||
for (let i = 0; i < array.length; i++) {
|
||||
array[i] = $floor($random() * 256);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
/** @type {SubtleCrypto["importKey"]} */
|
||||
function importKey(format, keyData, algorithm, extractable, keyUsages) {
|
||||
if (arguments.length < 5) {
|
||||
throw new TypeError(
|
||||
`Failed to execute 'importKey' on 'SubtleCrypto': 5 arguments required, but only ${arguments.length} present.`
|
||||
);
|
||||
}
|
||||
if (!keyData || keyData.length === 0) {
|
||||
throw new TypeError(
|
||||
`Failed to execute 'importKey' on 'SubtleCrypto': The provided value cannot be converted to a sequence.`
|
||||
);
|
||||
}
|
||||
const key = Symbol([algorithm, String(extractable), "secret", ...keyUsages].join("/"));
|
||||
return Promise.resolve(key);
|
||||
}
|
||||
|
||||
function randomUUID() {
|
||||
return [4, 2, 2, 2, 6]
|
||||
.map((length) => getRandomValues(new Uint8Array(length)).toHex())
|
||||
.join("-");
|
||||
}
|
||||
|
||||
const $encode = TextEncoder.prototype.encode.bind(new TextEncoder());
|
||||
const $decode = TextDecoder.prototype.decode.bind(new TextDecoder("utf-8"));
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Exports
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
export const mockCrypto = {
|
||||
getRandomValues,
|
||||
randomUUID,
|
||||
subtle: {
|
||||
importKey: (_format, keyData, _algorithm, _extractable, _keyUsages) => {
|
||||
if (!keyData || keyData.length === 0) {
|
||||
throw Error(`KeyData is mandatory`);
|
||||
}
|
||||
return Promise.resolve("I'm a key");
|
||||
},
|
||||
encrypt: (_algorithm, _key, data) =>
|
||||
Promise.resolve(`encrypted data:${new TextDecoder().decode(data)}`),
|
||||
decrypt: (_algorithm, _key, data) =>
|
||||
Promise.resolve(new TextEncoder().encode(data.replace("encrypted data:", ""))),
|
||||
},
|
||||
getRandomValues: (typedArray) => {
|
||||
typedArray.forEach((_element, index) => {
|
||||
typedArray[index] = Math.round(Math.random() * 100);
|
||||
});
|
||||
return typedArray;
|
||||
decrypt,
|
||||
encrypt,
|
||||
importKey,
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import { getTimeOffset, isTimeFrozen, resetTimeOffset } from "@web/../lib/hoot-dom/helpers/time";
|
||||
import { createMock, HootError, isNil } from "../hoot_utils";
|
||||
import { ensureTest } from "../main_runner";
|
||||
|
||||
/**
|
||||
* @typedef DateSpecs
|
||||
|
|
@ -161,7 +162,7 @@ export function cleanupDate() {
|
|||
* @see {@link mockTimeZone} for the time zone params.
|
||||
*
|
||||
* @param {string | DateSpecs} [date]
|
||||
* @param {string | number | null} [tz]
|
||||
* @param {string | number | null} [tz]
|
||||
* @example
|
||||
* mockDate("2023-12-25T20:45:00"); // 2023-12-25 20:45:00 UTC
|
||||
* @example
|
||||
|
|
@ -170,6 +171,7 @@ export function cleanupDate() {
|
|||
* mockDate("2019-02-11 09:30:00.001", +2);
|
||||
*/
|
||||
export function mockDate(date, tz) {
|
||||
ensureTest("mockDate");
|
||||
setDateParams(date ? parseDateParams(date) : DEFAULT_DATE);
|
||||
if (!isNil(tz)) {
|
||||
setTimeZone(tz);
|
||||
|
|
@ -187,6 +189,7 @@ export function mockDate(date, tz) {
|
|||
* mockTimeZone("ja-JP"); // UTC + 9
|
||||
*/
|
||||
export function mockLocale(newLocale) {
|
||||
ensureTest("mockLocale");
|
||||
locale = newLocale;
|
||||
|
||||
if (!isNil(locale) && isNil(timeZoneName)) {
|
||||
|
|
@ -213,6 +216,7 @@ export function mockLocale(newLocale) {
|
|||
* mockTimeZone(null) // Resets to test default (+1)
|
||||
*/
|
||||
export function mockTimeZone(tz) {
|
||||
ensureTest("mockTimeZone");
|
||||
setTimeZone(tz);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,15 @@
|
|||
/** @odoo-module */
|
||||
|
||||
import { isInstanceOf } from "../../hoot-dom/hoot_dom_utils";
|
||||
import { createMock, HootError, MIME_TYPE, MockEventTarget } from "../hoot_utils";
|
||||
import { getSyncValue, setSyncValue } from "./sync_values";
|
||||
import {
|
||||
createMock,
|
||||
getSyncValue,
|
||||
HootError,
|
||||
MIME_TYPE,
|
||||
MockEventTarget,
|
||||
setSyncValue,
|
||||
} from "../hoot_utils";
|
||||
import { ensureTest } from "../main_runner";
|
||||
|
||||
/**
|
||||
* @typedef {"android" | "ios" | "linux" | "mac" | "windows"} Platform
|
||||
|
|
@ -220,7 +227,7 @@ export class MockClipboardItem extends ClipboardItem {
|
|||
// Added synchronous methods to enhance speed in tests
|
||||
|
||||
async getType(type) {
|
||||
return getSyncValue(this)[type];
|
||||
return getSyncValue(this, false)[type];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -264,18 +271,137 @@ export class MockPermissionStatus extends MockEventTarget {
|
|||
}
|
||||
}
|
||||
|
||||
export class MockServiceWorker extends MockEventTarget {
|
||||
static publicListeners = ["error", "message"];
|
||||
|
||||
/** @type {ServiceWorkerState} */
|
||||
state = "activated";
|
||||
|
||||
/**
|
||||
* @param {string} scriptURL
|
||||
*/
|
||||
constructor(scriptURL) {
|
||||
super(...arguments);
|
||||
|
||||
/** @type {string} */
|
||||
this.scriptURL = scriptURL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {any} _message
|
||||
*/
|
||||
postMessage(_message) {}
|
||||
}
|
||||
|
||||
export class MockServiceWorkerContainer extends MockEventTarget {
|
||||
static publicListeners = ["controllerchange", "message", "messageerror"];
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_readyResolved = false;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {Map<string, MockServiceWorkerRegistration>}
|
||||
*/
|
||||
_registrations = new Map();
|
||||
|
||||
/** @type {MockServiceWorker | null} */
|
||||
controller = null;
|
||||
|
||||
get ready() {
|
||||
return this._readyPromise;
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
|
||||
const { promise, resolve } = Promise.withResolvers();
|
||||
/**
|
||||
* @type {Promise<MockServiceWorkerRegistration>}
|
||||
* @private
|
||||
*/
|
||||
this._readyPromise = promise;
|
||||
/**
|
||||
* @type {(value: MockServiceWorkerRegistration) => void}
|
||||
* @private
|
||||
*/
|
||||
this._resolveReady = resolve;
|
||||
}
|
||||
|
||||
async getRegistration(scope = "/") {
|
||||
return this._registrations.get(scope);
|
||||
}
|
||||
|
||||
async getRegistrations() {
|
||||
return Array.from(this._registrations.values());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} scriptURL
|
||||
* @param {{ scope?: string }} [options]
|
||||
*/
|
||||
async register(scriptURL, options = {}) {
|
||||
const scope = options.scope ?? "/";
|
||||
|
||||
const registration = new MockServiceWorkerRegistration(scriptURL, scope);
|
||||
this._registrations.set(scope, registration);
|
||||
|
||||
if (!this.controller) {
|
||||
this.controller = registration.active;
|
||||
this.dispatchEvent(new Event("controllerchange"));
|
||||
}
|
||||
|
||||
if (!this._readyResolved) {
|
||||
this._readyResolved = true;
|
||||
this._resolveReady(registration);
|
||||
}
|
||||
|
||||
return registration;
|
||||
}
|
||||
|
||||
startMessages() {}
|
||||
}
|
||||
|
||||
export class MockServiceWorkerRegistration {
|
||||
/** @type {MockServiceWorker | null} */
|
||||
installing = null;
|
||||
/** @type {MockServiceWorker | null} */
|
||||
waiting = null;
|
||||
|
||||
/**
|
||||
* @param {string} scriptURL
|
||||
* @param {string} scope
|
||||
*/
|
||||
constructor(scriptURL, scope) {
|
||||
/** @type {MockServiceWorker | null} */
|
||||
this.active = new MockServiceWorker(scriptURL);
|
||||
/** @type {string} */
|
||||
this.scope = scope;
|
||||
}
|
||||
|
||||
async unregister() {
|
||||
return true;
|
||||
}
|
||||
|
||||
async update() {}
|
||||
}
|
||||
|
||||
export const currentPermissions = getPermissions();
|
||||
|
||||
export const mockClipboard = new MockClipboard();
|
||||
|
||||
export const mockPermissions = new MockPermissions();
|
||||
|
||||
export const mockServiceWorker = new MockServiceWorkerContainer();
|
||||
|
||||
export const mockNavigator = createMock(navigator, {
|
||||
clipboard: { value: mockClipboard },
|
||||
maxTouchPoints: { get: () => (globalThis.ontouchstart === undefined ? 0 : 1) },
|
||||
permissions: { value: mockPermissions },
|
||||
sendBeacon: { get: () => mockValues.sendBeacon },
|
||||
serviceWorker: { get: () => undefined },
|
||||
serviceWorker: { value: mockServiceWorker },
|
||||
userAgent: { get: () => mockValues.userAgent },
|
||||
vibrate: { get: () => mockValues.vibrate },
|
||||
});
|
||||
|
|
@ -291,6 +417,7 @@ export function cleanupNavigator() {
|
|||
* @param {PermissionState} [value]
|
||||
*/
|
||||
export function mockPermission(name, value) {
|
||||
ensureTest("mockPermission");
|
||||
if (!(name in currentPermissions)) {
|
||||
throw new TypeError(
|
||||
`The provided value '${name}' is not a valid enum value of type PermissionName`
|
||||
|
|
@ -310,6 +437,7 @@ export function mockPermission(name, value) {
|
|||
* @param {Navigator["sendBeacon"]} callback
|
||||
*/
|
||||
export function mockSendBeacon(callback) {
|
||||
ensureTest("mockSendBeacon");
|
||||
mockValues.sendBeacon = callback;
|
||||
}
|
||||
|
||||
|
|
@ -317,6 +445,7 @@ export function mockSendBeacon(callback) {
|
|||
* @param {Platform} platform
|
||||
*/
|
||||
export function mockUserAgent(platform = "linux") {
|
||||
ensureTest("mockUserAgent");
|
||||
mockValues.userAgent = makeUserAgent(platform);
|
||||
}
|
||||
|
||||
|
|
@ -324,5 +453,6 @@ export function mockUserAgent(platform = "linux") {
|
|||
* @param {Navigator["vibrate"]} callback
|
||||
*/
|
||||
export function mockVibrate(callback) {
|
||||
ensureTest("mockVibrate");
|
||||
mockValues.vibrate = callback;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,10 +7,22 @@ import {
|
|||
} from "@web/../lib/hoot-dom/helpers/time";
|
||||
import { isInstanceOf } from "../../hoot-dom/hoot_dom_utils";
|
||||
import { makeNetworkLogger } from "../core/logger";
|
||||
import { ensureArray, MIME_TYPE, MockEventTarget } from "../hoot_utils";
|
||||
import { getSyncValue, MockBlob, setSyncValue } from "./sync_values";
|
||||
import {
|
||||
ensureArray,
|
||||
getSyncValue,
|
||||
isNil,
|
||||
MIME_TYPE,
|
||||
MockEventTarget,
|
||||
setSyncValue,
|
||||
} from "../hoot_utils";
|
||||
import { ensureTest } from "../main_runner";
|
||||
|
||||
/**
|
||||
* @typedef {ResponseInit & {
|
||||
* type?: ResponseType;
|
||||
* url?: string;
|
||||
* }} MockResponseInit
|
||||
*
|
||||
* @typedef {AbortController
|
||||
* | MockBroadcastChannel
|
||||
* | MockMessageChannel
|
||||
|
|
@ -28,19 +40,32 @@ import { getSyncValue, MockBlob, setSyncValue } from "./sync_values";
|
|||
|
||||
const {
|
||||
AbortController,
|
||||
Blob,
|
||||
BroadcastChannel,
|
||||
document,
|
||||
fetch,
|
||||
FormData,
|
||||
Headers,
|
||||
Map,
|
||||
Math: { floor: $floor, max: $max, min: $min, random: $random },
|
||||
Object: { assign: $assign, create: $create, entries: $entries },
|
||||
Object: {
|
||||
assign: $assign,
|
||||
create: $create,
|
||||
defineProperty: $defineProperty,
|
||||
entries: $entries,
|
||||
},
|
||||
ProgressEvent,
|
||||
ReadableStream,
|
||||
Request,
|
||||
Response,
|
||||
Set,
|
||||
TextEncoder,
|
||||
Uint8Array,
|
||||
URL,
|
||||
WebSocket,
|
||||
XMLHttpRequest,
|
||||
} = globalThis;
|
||||
const { parse: $parse, stringify: $stringify } = globalThis.JSON;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Internal
|
||||
|
|
@ -86,6 +111,34 @@ async function dispatchMessage(target, data, transfer) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {{ headers?: HeadersInit } | undefined} object
|
||||
* @param {string} content
|
||||
*/
|
||||
function getHeaders(object, content) {
|
||||
/** @type {Headers} */
|
||||
let headers;
|
||||
if (isInstanceOf(object?.headers, Headers)) {
|
||||
headers = object.headers;
|
||||
} else {
|
||||
headers = new Headers(object?.headers);
|
||||
}
|
||||
|
||||
if (content && !headers.has(HEADER.contentType)) {
|
||||
if (typeof content === "string") {
|
||||
headers.set(HEADER.contentType, MIME_TYPE.text);
|
||||
} else if (isInstanceOf(content, Blob)) {
|
||||
headers.set(HEADER.contentType, MIME_TYPE.blob);
|
||||
} else if (isInstanceOf(content, FormData)) {
|
||||
headers.set(HEADER.contentType, MIME_TYPE.formData);
|
||||
} else {
|
||||
headers.set(HEADER.contentType, MIME_TYPE.json);
|
||||
}
|
||||
}
|
||||
return headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {...NetworkInstance} instances
|
||||
*/
|
||||
|
|
@ -111,6 +164,37 @@ function markOpen(instance) {
|
|||
return instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper used to parse JSON-RPC request/response parameters, and to make their
|
||||
* "jsonrpc", "id" and "method" properties non-enumerable, as to make them more
|
||||
* inconspicuous in console logs, effectively highlighting the 'params' or 'result'
|
||||
* keys.
|
||||
*
|
||||
* @param {string} stringParams
|
||||
*/
|
||||
function parseJsonRpcParams(stringParams) {
|
||||
const jsonParams = $assign($create(null), $parse(stringParams));
|
||||
if (jsonParams && "jsonrpc" in jsonParams) {
|
||||
$defineProperty(jsonParams, "jsonrpc", {
|
||||
value: jsonParams.jsonrpc,
|
||||
enumerable: false,
|
||||
});
|
||||
if ("id" in jsonParams) {
|
||||
$defineProperty(jsonParams, "id", {
|
||||
value: jsonParams.id,
|
||||
enumerable: false,
|
||||
});
|
||||
}
|
||||
if ("method" in jsonParams) {
|
||||
$defineProperty(jsonParams, "method", {
|
||||
value: jsonParams.method,
|
||||
enumerable: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
return jsonParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {number} min
|
||||
* @param {number} [max]
|
||||
|
|
@ -130,15 +214,50 @@ function parseNetworkDelay(min, max) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Uint8Array<ArrayBuffer> | string} value
|
||||
* @returns {Uint8Array<ArrayBuffer>}
|
||||
*/
|
||||
function toBytes(value) {
|
||||
return isInstanceOf(value, Uint8Array) ? value : new TextEncoder().encode(value);
|
||||
}
|
||||
|
||||
const DEFAULT_URL = "https://www.hoot.test/";
|
||||
const ENDLESS_PROMISE = new Promise(() => {});
|
||||
const HEADER = {
|
||||
contentLength: "Content-Length",
|
||||
contentType: "Content-Type",
|
||||
};
|
||||
const R_EQUAL = /\s*=\s*/;
|
||||
const R_INTERNAL_URL = /^(blob|data|file):/;
|
||||
const R_INTERNAL_URL = /^(blob|data):/;
|
||||
const R_SEMICOLON = /\s*;\s*/;
|
||||
|
||||
const requestResponseMixin = {
|
||||
async arrayBuffer() {
|
||||
return toBytes(this._readValue("arrayBuffer", true)).buffer;
|
||||
},
|
||||
async blob() {
|
||||
const value = this._readValue("blob", false);
|
||||
return isInstanceOf(value, Blob) ? value : new MockBlob([value]);
|
||||
},
|
||||
async bytes() {
|
||||
return toBytes(this._readValue("bytes", true));
|
||||
},
|
||||
async formData() {
|
||||
const data = this._readValue("formData", false);
|
||||
if (!isInstanceOf(data, FormData)) {
|
||||
throw new TypeError("Failed to fetch");
|
||||
}
|
||||
return data;
|
||||
},
|
||||
async json() {
|
||||
return $parse(this._readValue("json", true));
|
||||
},
|
||||
async text() {
|
||||
return this._readValue("text", true);
|
||||
},
|
||||
};
|
||||
|
||||
/** @type {Set<NetworkInstance>} */
|
||||
const openNetworkInstances = new Set();
|
||||
|
||||
|
|
@ -148,8 +267,8 @@ let getNetworkDelay = null;
|
|||
let mockFetchFn = null;
|
||||
/** @type {((websocket: ServerWebSocket) => any) | null} */
|
||||
let mockWebSocketConnection = null;
|
||||
/** @type {Array<(worker: MockSharedWorker | MockWorker) => any>} */
|
||||
let mockWorkerConnection = [];
|
||||
/** @type {((worker: MockSharedWorker | MockWorker) => any)[]} */
|
||||
const mockWorkerConnections = [];
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Exports
|
||||
|
|
@ -159,7 +278,7 @@ export function cleanupNetwork() {
|
|||
// Mocked functions
|
||||
mockFetchFn = null;
|
||||
mockWebSocketConnection = null;
|
||||
mockWorkerConnection = [];
|
||||
mockWorkerConnections.length = 0;
|
||||
|
||||
// Network instances
|
||||
for (const instance of openNetworkInstances) {
|
||||
|
|
@ -194,33 +313,57 @@ export function cleanupNetwork() {
|
|||
|
||||
/** @type {typeof fetch} */
|
||||
export async function mockedFetch(input, init) {
|
||||
if (R_INTERNAL_URL.test(input)) {
|
||||
// Internal URL: directly handled by the browser
|
||||
return fetch(input, init);
|
||||
}
|
||||
const strInput = String(input);
|
||||
const isInternalUrl = R_INTERNAL_URL.test(strInput);
|
||||
if (!mockFetchFn) {
|
||||
throw new Error("Can't make a request when fetch is not mocked");
|
||||
if (isInternalUrl) {
|
||||
// Internal URL without mocked 'fetch': directly handled by the browser
|
||||
return fetch(input, init);
|
||||
}
|
||||
throw new Error(
|
||||
`Could not fetch "${strInput}": cannot make a request when fetch is not mocked`
|
||||
);
|
||||
}
|
||||
init ||= {};
|
||||
const method = init.method?.toUpperCase() || (init.body ? "POST" : "GET");
|
||||
const { logRequest, logResponse } = makeNetworkLogger(method, input);
|
||||
|
||||
const controller = markOpen(new AbortController());
|
||||
init.signal = controller.signal;
|
||||
|
||||
logRequest(() => (typeof init.body === "string" ? JSON.parse(init.body) : init));
|
||||
init = { ...init };
|
||||
init.headers = getHeaders(init, init.body);
|
||||
init.method = init.method?.toUpperCase() || (isNil(init.body) ? "GET" : "POST");
|
||||
|
||||
// Allows 'signal' to not be logged with 'logRequest'.
|
||||
$defineProperty(init, "signal", {
|
||||
value: controller.signal,
|
||||
enumerable: false,
|
||||
});
|
||||
|
||||
const { logRequest, logResponse } = makeNetworkLogger(init.method, strInput);
|
||||
|
||||
logRequest(() => {
|
||||
const readableInit = {
|
||||
...init,
|
||||
// Make headers easier to read in the console
|
||||
headers: new Map(init.headers),
|
||||
};
|
||||
if (init.headers.get(HEADER.contentType) === MIME_TYPE.json) {
|
||||
return [parseJsonRpcParams(init.body), readableInit];
|
||||
} else {
|
||||
return [init.body, readableInit];
|
||||
}
|
||||
});
|
||||
|
||||
if (getNetworkDelay) {
|
||||
await getNetworkDelay();
|
||||
}
|
||||
|
||||
// keep separate from 'error', as it can be null or undefined even though the
|
||||
// callback has thrown an error.
|
||||
let failed = false;
|
||||
let result;
|
||||
let error, result;
|
||||
try {
|
||||
result = await mockFetchFn(input, init);
|
||||
} catch (err) {
|
||||
result = err;
|
||||
failed = true;
|
||||
error = err;
|
||||
}
|
||||
if (isOpen(controller)) {
|
||||
markClosed(controller);
|
||||
|
|
@ -228,33 +371,34 @@ export async function mockedFetch(input, init) {
|
|||
return ENDLESS_PROMISE;
|
||||
}
|
||||
if (failed) {
|
||||
throw result;
|
||||
throw error;
|
||||
}
|
||||
|
||||
/** @type {Headers} */
|
||||
let headers;
|
||||
if (result && isInstanceOf(result.headers, Headers)) {
|
||||
headers = result.headers;
|
||||
} else if (isInstanceOf(init.headers, Headers)) {
|
||||
headers = init.headers;
|
||||
} else {
|
||||
headers = new Headers(init.headers);
|
||||
if (isInternalUrl && isNil(result)) {
|
||||
// Internal URL without mocked result: directly handled by the browser
|
||||
return fetch(input, init);
|
||||
}
|
||||
|
||||
let contentType = headers.get(HEADER.contentType);
|
||||
// Result can be a request or the final request value
|
||||
const responseHeaders = getHeaders(result, result);
|
||||
|
||||
if (result instanceof MockResponse) {
|
||||
// Mocked response
|
||||
logResponse(async () => {
|
||||
const textValue = getSyncValue(result);
|
||||
return contentType === MIME_TYPE.json ? JSON.parse(textValue) : textValue;
|
||||
logResponse(() => {
|
||||
const textValue = getSyncValue(result, true);
|
||||
return [
|
||||
responseHeaders.get(HEADER.contentType) === MIME_TYPE.json
|
||||
? parseJsonRpcParams(textValue)
|
||||
: textValue,
|
||||
result,
|
||||
];
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
if (isInstanceOf(result, Response)) {
|
||||
// Actual fetch
|
||||
logResponse(() => "(go to network tab for request content)");
|
||||
logResponse(() => ["(go to network tab for request content)", result]);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -262,26 +406,28 @@ export async function mockedFetch(input, init) {
|
|||
// Determine the return type based on:
|
||||
// - the content type header
|
||||
// - or the type of the returned value
|
||||
if (!contentType) {
|
||||
if (typeof result === "string") {
|
||||
contentType = MIME_TYPE.text;
|
||||
} else if (isInstanceOf(result, Blob)) {
|
||||
contentType = MIME_TYPE.blob;
|
||||
} else {
|
||||
contentType = MIME_TYPE.json;
|
||||
}
|
||||
}
|
||||
|
||||
if (contentType === MIME_TYPE.json) {
|
||||
if (responseHeaders.get(HEADER.contentType) === MIME_TYPE.json) {
|
||||
// JSON response
|
||||
const strBody = JSON.stringify(result ?? null);
|
||||
logResponse(() => result);
|
||||
return new MockResponse(strBody, { [HEADER.contentType]: contentType });
|
||||
const strBody = $stringify(result ?? null);
|
||||
const response = new MockResponse(strBody, {
|
||||
headers: responseHeaders,
|
||||
statusText: "OK",
|
||||
type: "basic",
|
||||
url: strInput,
|
||||
});
|
||||
logResponse(() => [parseJsonRpcParams(strBody), response]);
|
||||
return response;
|
||||
}
|
||||
|
||||
// Any other type (blob / text)
|
||||
logResponse(() => result);
|
||||
return new MockResponse(result, { [HEADER.contentType]: contentType });
|
||||
// Any other type
|
||||
const response = new MockResponse(result, {
|
||||
headers: responseHeaders,
|
||||
statusText: "OK",
|
||||
type: "basic",
|
||||
url: strInput,
|
||||
});
|
||||
logResponse(() => [result, response]);
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -310,6 +456,7 @@ export async function mockedFetch(input, init) {
|
|||
* });
|
||||
*/
|
||||
export function mockFetch(fetchFn) {
|
||||
ensureTest("mockFetch");
|
||||
mockFetchFn = fetchFn;
|
||||
}
|
||||
|
||||
|
|
@ -321,6 +468,7 @@ export function mockFetch(fetchFn) {
|
|||
* @param {typeof mockWebSocketConnection} [onWebSocketConnected]
|
||||
*/
|
||||
export function mockWebSocket(onWebSocketConnected) {
|
||||
ensureTest("mockWebSocket");
|
||||
mockWebSocketConnection = onWebSocketConnected;
|
||||
}
|
||||
|
||||
|
|
@ -330,7 +478,7 @@ export function mockWebSocket(onWebSocketConnected) {
|
|||
* (see {@link mockFetch});
|
||||
* - the `onWorkerConnected` callback will be called after a worker has been created.
|
||||
*
|
||||
* @param {typeof mockWorkerConnection} [onWorkerConnected]
|
||||
* @param {typeof mockWorkerConnections[number]} [onWorkerConnected]
|
||||
* @example
|
||||
* mockWorker((worker) => {
|
||||
* worker.addEventListener("message", (event) => {
|
||||
|
|
@ -339,7 +487,8 @@ export function mockWebSocket(onWebSocketConnected) {
|
|||
* });
|
||||
*/
|
||||
export function mockWorker(onWorkerConnected) {
|
||||
mockWorkerConnection.push(onWorkerConnected);
|
||||
ensureTest("mockWorker");
|
||||
mockWorkerConnections.push(onWorkerConnected);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -349,6 +498,42 @@ export function throttleNetwork(...args) {
|
|||
getNetworkDelay = parseNetworkDelay(...args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {typeof mockFetchFn} fetchFn
|
||||
* @param {() => void} callback
|
||||
*/
|
||||
export async function withFetch(fetchFn, callback) {
|
||||
mockFetchFn = fetchFn;
|
||||
const result = await callback();
|
||||
mockFetchFn = null;
|
||||
return result;
|
||||
}
|
||||
|
||||
export class MockBlob extends Blob {
|
||||
constructor(blobParts, options) {
|
||||
super(blobParts, options);
|
||||
|
||||
setSyncValue(this, blobParts);
|
||||
}
|
||||
|
||||
async arrayBuffer() {
|
||||
return toBytes(getSyncValue(this, true)).buffer;
|
||||
}
|
||||
|
||||
async bytes() {
|
||||
return toBytes(getSyncValue(this, true));
|
||||
}
|
||||
|
||||
async stream() {
|
||||
const value = getSyncValue(this, true);
|
||||
return isInstanceOf(value, ReadableStream) ? value : new ReadableStream(value);
|
||||
}
|
||||
|
||||
async text() {
|
||||
return getSyncValue(this, true);
|
||||
}
|
||||
}
|
||||
|
||||
export class MockBroadcastChannel extends BroadcastChannel {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
|
|
@ -650,58 +835,91 @@ export class MockMessagePort extends MockEventTarget {
|
|||
}
|
||||
|
||||
export class MockRequest extends Request {
|
||||
static {
|
||||
Object.assign(this.prototype, requestResponseMixin);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {RequestInfo} input
|
||||
* @param {RequestInit} [init]
|
||||
*/
|
||||
constructor(input, init) {
|
||||
super(input, init);
|
||||
super(new MockURL(input), init);
|
||||
|
||||
setSyncValue(this, init?.body ?? null);
|
||||
}
|
||||
|
||||
async arrayBuffer() {
|
||||
return new TextEncoder().encode(getSyncValue(this));
|
||||
clone() {
|
||||
const request = new this.constructor(this.url, this);
|
||||
setSyncValue(request, getSyncValue(this, false));
|
||||
return request;
|
||||
}
|
||||
|
||||
async blob() {
|
||||
return new MockBlob([getSyncValue(this)]);
|
||||
}
|
||||
|
||||
async json() {
|
||||
return JSON.parse(getSyncValue(this));
|
||||
}
|
||||
|
||||
async text() {
|
||||
return getSyncValue(this);
|
||||
/**
|
||||
* In tests, requests objects are expected to be read by multiple network handlers.
|
||||
* As such, their 'body' isn't consumed upon reading.
|
||||
*
|
||||
* @protected
|
||||
* @param {string} reader
|
||||
* @param {boolean} toStringValue
|
||||
*/
|
||||
_readValue(reader, toStringValue) {
|
||||
return getSyncValue(this, toStringValue);
|
||||
}
|
||||
}
|
||||
|
||||
export class MockResponse extends Response {
|
||||
static {
|
||||
Object.assign(this.prototype, requestResponseMixin);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {BodyInit} body
|
||||
* @param {ResponseInit} [init]
|
||||
* @param {MockResponseInit} [init]
|
||||
*/
|
||||
constructor(body, init) {
|
||||
super(body, init);
|
||||
|
||||
if (init?.type) {
|
||||
$defineProperty(this, "type", {
|
||||
value: init.type,
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
writable: false,
|
||||
});
|
||||
}
|
||||
if (init?.url) {
|
||||
$defineProperty(this, "url", {
|
||||
value: String(new MockURL(init.url)),
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
writable: false,
|
||||
});
|
||||
}
|
||||
|
||||
setSyncValue(this, body ?? null);
|
||||
}
|
||||
|
||||
async arrayBuffer() {
|
||||
return new TextEncoder().encode(getSyncValue(this)).buffer;
|
||||
clone() {
|
||||
return new this.constructor(getSyncValue(this, false), this);
|
||||
}
|
||||
|
||||
async blob() {
|
||||
return new MockBlob([getSyncValue(this)]);
|
||||
}
|
||||
|
||||
async json() {
|
||||
return JSON.parse(getSyncValue(this));
|
||||
}
|
||||
|
||||
async text() {
|
||||
return getSyncValue(this);
|
||||
/**
|
||||
* Reading the 'body' of a response always consumes it, as opposed to the {@link MockRequest}
|
||||
* body.
|
||||
*
|
||||
* @protected
|
||||
* @param {string} reader
|
||||
* @param {boolean} toStringValue
|
||||
*/
|
||||
_readValue(reader, toStringValue) {
|
||||
if (this.bodyUsed) {
|
||||
throw new TypeError(
|
||||
`Failed to execute '${reader}' on '${this.constructor.name}': body stream already read`
|
||||
);
|
||||
}
|
||||
$defineProperty(this, "bodyUsed", { value: true, configurable: true, enumerable: true });
|
||||
return getSyncValue(this, toStringValue);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -732,7 +950,7 @@ export class MockSharedWorker extends MockEventTarget {
|
|||
// First port has to be started manually
|
||||
this._messageChannel.port2.start();
|
||||
|
||||
for (const onWorkerConnected of mockWorkerConnection) {
|
||||
for (const onWorkerConnected of mockWorkerConnections) {
|
||||
onWorkerConnected(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -745,6 +963,10 @@ export class MockURL extends URL {
|
|||
}
|
||||
|
||||
export class MockWebSocket extends MockEventTarget {
|
||||
static CONNECTING = 0;
|
||||
static OPEN = 1;
|
||||
static CLOSING = 2;
|
||||
static CLOSED = 3;
|
||||
static publicListeners = ["close", "error", "message", "open"];
|
||||
|
||||
/**
|
||||
|
|
@ -788,7 +1010,7 @@ export class MockWebSocket extends MockEventTarget {
|
|||
markOpen(this);
|
||||
|
||||
this._readyState = WebSocket.OPEN;
|
||||
this._logger.logRequest(() => "connection open");
|
||||
this._logger.logRequest(() => ["connection open"]);
|
||||
|
||||
this.dispatchEvent(new Event("open"));
|
||||
});
|
||||
|
|
@ -808,7 +1030,7 @@ export class MockWebSocket extends MockEventTarget {
|
|||
if (this.readyState !== WebSocket.OPEN) {
|
||||
return;
|
||||
}
|
||||
this._logger.logRequest(() => data);
|
||||
this._logger.logRequest(() => [data]);
|
||||
dispatchMessage(this._serverWs, data);
|
||||
}
|
||||
}
|
||||
|
|
@ -839,7 +1061,7 @@ export class MockWorker extends MockEventTarget {
|
|||
this.dispatchEvent(new MessageEvent("message", { data: ev.data }));
|
||||
});
|
||||
|
||||
for (const onWorkerConnected of mockWorkerConnection) {
|
||||
for (const onWorkerConnected of mockWorkerConnections) {
|
||||
onWorkerConnected(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -865,11 +1087,11 @@ export class MockWorker extends MockEventTarget {
|
|||
|
||||
export class MockXMLHttpRequest extends MockEventTarget {
|
||||
static publicListeners = ["error", "load"];
|
||||
static {
|
||||
// Assign status codes
|
||||
Object.assign(this, XMLHttpRequest);
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_headers = {};
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
|
|
@ -877,28 +1099,72 @@ export class MockXMLHttpRequest extends MockEventTarget {
|
|||
/**
|
||||
* @private
|
||||
*/
|
||||
_readyState = XMLHttpRequest.UNSENT;
|
||||
/**
|
||||
* @type {Record<string, string>}
|
||||
* @private
|
||||
*/
|
||||
_requestHeaders = Object.create(null);
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_requestUrl = "";
|
||||
/**
|
||||
* @type {Response | null}
|
||||
* @private
|
||||
*/
|
||||
_response = null;
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_status = XMLHttpRequest.UNSENT;
|
||||
_responseMimeType = "";
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_url = "";
|
||||
_responseValue = null;
|
||||
|
||||
abort() {
|
||||
markClosed(this);
|
||||
get readyState() {
|
||||
return this._readyState;
|
||||
}
|
||||
|
||||
upload = new MockXMLHttpRequestUpload();
|
||||
|
||||
get response() {
|
||||
return this._response;
|
||||
return this._responseValue;
|
||||
}
|
||||
|
||||
get responseText() {
|
||||
return String(this._responseValue);
|
||||
}
|
||||
|
||||
get responseURL() {
|
||||
return this._response.url;
|
||||
}
|
||||
|
||||
get responseXML() {
|
||||
const parser = new DOMParser();
|
||||
try {
|
||||
return parser.parseFromString(this._responseValue, this._responseMimeType);
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
get status() {
|
||||
return this._status;
|
||||
return this._response?.status || 0;
|
||||
}
|
||||
|
||||
get statusText() {
|
||||
return this._readyState >= XMLHttpRequest.LOADING ? "OK" : "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @type {XMLHttpRequestResponseType}
|
||||
*/
|
||||
responseType = "";
|
||||
upload = new MockXMLHttpRequestUpload();
|
||||
|
||||
abort() {
|
||||
this._setReadyState(XMLHttpRequest.DONE);
|
||||
markClosed(this);
|
||||
}
|
||||
|
||||
/** @type {XMLHttpRequest["dispatchEvent"]} */
|
||||
|
|
@ -909,12 +1175,31 @@ export class MockXMLHttpRequest extends MockEventTarget {
|
|||
return super.dispatchEvent(event);
|
||||
}
|
||||
|
||||
getAllResponseHeaders() {
|
||||
let result = "";
|
||||
for (const [key, value] of this._response?.headers || []) {
|
||||
result += `${key}: ${value}\r\n`;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** @type {XMLHttpRequest["getResponseHeader"]} */
|
||||
getResponseHeader(name) {
|
||||
return this._response?.headers.get(name) || "";
|
||||
}
|
||||
|
||||
/** @type {XMLHttpRequest["open"]} */
|
||||
open(method, url) {
|
||||
markOpen(this);
|
||||
|
||||
this._method = method;
|
||||
this._url = url;
|
||||
this._requestUrl = url;
|
||||
this._setReadyState(XMLHttpRequest.OPENED);
|
||||
}
|
||||
|
||||
/** @type {XMLHttpRequest["overrideMimeType"]} */
|
||||
overrideMimeType(mime) {
|
||||
this._responseMimeType = mime;
|
||||
}
|
||||
|
||||
/** @type {XMLHttpRequest["send"]} */
|
||||
|
|
@ -922,35 +1207,56 @@ export class MockXMLHttpRequest extends MockEventTarget {
|
|||
if (!isOpen(this)) {
|
||||
return ENDLESS_PROMISE;
|
||||
}
|
||||
this._setReadyState(XMLHttpRequest.HEADERS_RECEIVED);
|
||||
|
||||
try {
|
||||
const response = await window.fetch(this._url, {
|
||||
this._response = await window.fetch(this._requestUrl, {
|
||||
method: this._method,
|
||||
body,
|
||||
headers: this._headers,
|
||||
headers: this._requestHeaders,
|
||||
});
|
||||
this._status = response.status;
|
||||
if (new URL(this._url, mockLocation.origin).protocol === "blob:") {
|
||||
this._response = await response.arrayBuffer();
|
||||
this._setReadyState(XMLHttpRequest.LOADING);
|
||||
if (!this._responseMimeType) {
|
||||
if (this._response.url.startsWith("blob:")) {
|
||||
this._responseMimeType = MIME_TYPE.blob;
|
||||
} else {
|
||||
this._responseMimeType = this._response.headers.get(HEADER.contentType);
|
||||
}
|
||||
}
|
||||
if (this._response instanceof MockResponse) {
|
||||
// Mock response: get bound value (synchronously)
|
||||
this._responseValue = getSyncValue(this._response, false);
|
||||
} else if (this._responseMimeType === MIME_TYPE.blob) {
|
||||
// Actual "blob:" response: get array buffer
|
||||
this._responseValue = await this._response.arrayBuffer();
|
||||
} else if (this._responseMimeType === MIME_TYPE.json) {
|
||||
// JSON response: get parsed JSON value
|
||||
this._responseValue = await this._response.json();
|
||||
} else {
|
||||
this._response = await response.text();
|
||||
// Anything else: parse response body as text
|
||||
this._responseValue = await this._response.text();
|
||||
}
|
||||
this.dispatchEvent(new ProgressEvent("load"));
|
||||
} catch (error) {
|
||||
this.dispatchEvent(new ProgressEvent("error", { error }));
|
||||
} catch {
|
||||
this.dispatchEvent(new ProgressEvent("error"));
|
||||
}
|
||||
|
||||
this._setReadyState(XMLHttpRequest.DONE);
|
||||
markClosed(this);
|
||||
}
|
||||
|
||||
/** @type {XMLHttpRequest["setRequestHeader"]} */
|
||||
setRequestHeader(name, value) {
|
||||
this._headers[name] = value;
|
||||
this._requestHeaders[name] = value;
|
||||
}
|
||||
|
||||
/** @type {XMLHttpRequest["getResponseHeader"]} */
|
||||
getResponseHeader(name) {
|
||||
return this._headers[name];
|
||||
/**
|
||||
* @private
|
||||
* @param {number} readyState
|
||||
*/
|
||||
_setReadyState(readyState) {
|
||||
this._readyState = readyState;
|
||||
this.dispatchEvent(new Event("readystatechange"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -989,7 +1295,6 @@ export class ServerWebSocket extends MockEventTarget {
|
|||
/**
|
||||
* @param {WebSocket} websocket
|
||||
* @param {ReturnType<typeof makeNetworkLogger>} logger
|
||||
* @param {ReturnType<typeof makeNetworkLogger>} logger
|
||||
*/
|
||||
constructor(websocket, logger) {
|
||||
super();
|
||||
|
|
@ -1001,7 +1306,7 @@ export class ServerWebSocket extends MockEventTarget {
|
|||
|
||||
this.addEventListener("close", (ev) => {
|
||||
dispatchClose(this._clientWs, ev);
|
||||
this._logger.logResponse(() => "connection closed");
|
||||
this._logger.logResponse(() => ["connection closed", ev]);
|
||||
});
|
||||
|
||||
mockWebSocketConnection?.(this);
|
||||
|
|
@ -1018,7 +1323,7 @@ export class ServerWebSocket extends MockEventTarget {
|
|||
if (!isOpen(this)) {
|
||||
return;
|
||||
}
|
||||
this._logger.logResponse(() => data);
|
||||
this._logger.logResponse(() => [data]);
|
||||
dispatchMessage(this._clientWs, data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,48 +0,0 @@
|
|||
/** @odoo-module */
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
const { Blob, TextEncoder } = globalThis;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Internal
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
const syncValues = new WeakMap();
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Exports
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @param {any} object
|
||||
*/
|
||||
export function getSyncValue(object) {
|
||||
return syncValues.get(object);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {any} object
|
||||
* @param {any} value
|
||||
*/
|
||||
export function setSyncValue(object, value) {
|
||||
syncValues.set(object, value);
|
||||
}
|
||||
|
||||
export class MockBlob extends Blob {
|
||||
constructor(blobParts, options) {
|
||||
super(blobParts, options);
|
||||
|
||||
setSyncValue(this, blobParts);
|
||||
}
|
||||
|
||||
async arrayBuffer() {
|
||||
return new TextEncoder().encode(getSyncValue(this));
|
||||
}
|
||||
|
||||
async text() {
|
||||
return getSyncValue(this).join("");
|
||||
}
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@ import {
|
|||
} from "@web/../lib/hoot-dom/helpers/time";
|
||||
import { interactor } from "../../hoot-dom/hoot_dom_utils";
|
||||
import { MockEventTarget, strictEqual, waitForDocument } from "../hoot_utils";
|
||||
import { getRunner } from "../main_runner";
|
||||
import { ensureTest, getRunner } from "../main_runner";
|
||||
import {
|
||||
MockAnimation,
|
||||
mockedAnimate,
|
||||
|
|
@ -25,9 +25,11 @@ import {
|
|||
mockedWindowScrollTo,
|
||||
} from "./animation";
|
||||
import { MockConsole } from "./console";
|
||||
import { mockCrypto } from "./crypto";
|
||||
import { MockDate, MockIntl } from "./date";
|
||||
import { MockClipboardItem, mockNavigator } from "./navigator";
|
||||
import {
|
||||
MockBlob,
|
||||
MockBroadcastChannel,
|
||||
MockMessageChannel,
|
||||
MockMessagePort,
|
||||
|
|
@ -46,8 +48,6 @@ import {
|
|||
} from "./network";
|
||||
import { MockNotification } from "./notification";
|
||||
import { MockStorage } from "./storage";
|
||||
import { MockBlob } from "./sync_values";
|
||||
import { mockCrypto } from "./crypto";
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global
|
||||
|
|
@ -61,6 +61,7 @@ const {
|
|||
Object: {
|
||||
assign: $assign,
|
||||
defineProperties: $defineProperties,
|
||||
defineProperty: $defineProperty,
|
||||
entries: $entries,
|
||||
getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
|
||||
getPrototypeOf: $getPrototypeOf,
|
||||
|
|
@ -70,9 +71,11 @@ const {
|
|||
Reflect: { ownKeys: $ownKeys },
|
||||
Set,
|
||||
WeakMap,
|
||||
WeakSet,
|
||||
} = globalThis;
|
||||
|
||||
const { addEventListener, removeEventListener } = EventTarget.prototype;
|
||||
const { preventDefault } = Event.prototype;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Internal
|
||||
|
|
@ -327,6 +330,11 @@ function mockedMatchMedia(mediaQueryString) {
|
|||
return new MockMediaQueryList(mediaQueryString);
|
||||
}
|
||||
|
||||
function mockedPreventDefault() {
|
||||
preventedEvents.add(this);
|
||||
return preventDefault.call(this, ...arguments);
|
||||
}
|
||||
|
||||
/** @type {typeof removeEventListener} */
|
||||
function mockedRemoveEventListener(...args) {
|
||||
if (getRunner().dry) {
|
||||
|
|
@ -420,6 +428,18 @@ class MockMediaQueryList extends MockEventTarget {
|
|||
}
|
||||
}
|
||||
|
||||
class MockMutationObserver extends MutationObserver {
|
||||
disconnect() {
|
||||
activeMutationObservers.delete(this);
|
||||
return super.disconnect(...arguments);
|
||||
}
|
||||
|
||||
observe() {
|
||||
activeMutationObservers.add(this);
|
||||
return super.observe(...arguments);
|
||||
}
|
||||
}
|
||||
|
||||
const DEFAULT_MEDIA_VALUES = {
|
||||
"display-mode": "browser",
|
||||
pointer: "fine",
|
||||
|
|
@ -438,12 +458,16 @@ const R_OWL_SYNTHETIC_LISTENER = /\bnativeToSyntheticEvent\b/;
|
|||
const originalDescriptors = new WeakMap();
|
||||
const originalTouchFunctions = getTouchTargets(globalThis).map(getTouchDescriptors);
|
||||
|
||||
/** @type {Set<MockMutationObserver>} */
|
||||
const activeMutationObservers = new Set();
|
||||
/** @type {Set<MockMediaQueryList>} */
|
||||
const mediaQueryLists = new Set();
|
||||
const mockConsole = new MockConsole();
|
||||
const mockLocalStorage = new MockStorage();
|
||||
const mockMediaValues = { ...DEFAULT_MEDIA_VALUES };
|
||||
const mockSessionStorage = new MockStorage();
|
||||
/** @type {WeakSet<Event>} */
|
||||
const preventedEvents = new WeakSet();
|
||||
let mockTitle = "";
|
||||
|
||||
// Mock descriptors
|
||||
|
|
@ -493,6 +517,7 @@ const WINDOW_MOCK_DESCRIPTORS = {
|
|||
matchMedia: { value: mockedMatchMedia },
|
||||
MessageChannel: { value: MockMessageChannel },
|
||||
MessagePort: { value: MockMessagePort },
|
||||
MutationObserver: { value: MockMutationObserver },
|
||||
navigator: { value: mockNavigator },
|
||||
Notification: { value: MockNotification },
|
||||
outerHeight: { get: () => getCurrentDimensions().height },
|
||||
|
|
@ -547,6 +572,11 @@ export function cleanupWindow() {
|
|||
|
||||
// Touch
|
||||
restoreTouch(view);
|
||||
|
||||
// Mutation observers
|
||||
for (const observer of activeMutationObservers) {
|
||||
observer.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
export function getTitle() {
|
||||
|
|
@ -579,19 +609,37 @@ export function getViewPortWidth() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Event} event
|
||||
*/
|
||||
export function isPrevented(event) {
|
||||
return event.defaultPrevented || preventedEvents.has(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Record<string, string>} name
|
||||
*/
|
||||
export function mockMatchMedia(values) {
|
||||
ensureTest("mockMatchMedia");
|
||||
$assign(mockMediaValues, values);
|
||||
|
||||
callMediaQueryChanges($keys(values));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Event} event
|
||||
*/
|
||||
export function mockPreventDefault(event) {
|
||||
$defineProperty(event, "preventDefault", {
|
||||
value: mockedPreventDefault,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {boolean} setTouch
|
||||
*/
|
||||
export function mockTouch(setTouch) {
|
||||
ensureTest("mockTouch");
|
||||
const objects = getTouchTargets(getWindow());
|
||||
if (setTouch) {
|
||||
for (const object of objects) {
|
||||
|
|
@ -695,13 +743,13 @@ export function watchListeners(view = getWindow()) {
|
|||
* afterEach(watchKeys(window, ["odoo"]));
|
||||
*/
|
||||
export function watchKeys(target, whiteList) {
|
||||
const acceptedKeys = new Set([...$ownKeys(target), ...(whiteList || [])]);
|
||||
const acceptedKeys = new Set($ownKeys(target).concat(whiteList || []));
|
||||
|
||||
return function checkKeys() {
|
||||
const keysDiff = $ownKeys(target).filter(
|
||||
(key) => $isNaN($parseFloat(key)) && !acceptedKeys.has(key)
|
||||
);
|
||||
for (const key of keysDiff) {
|
||||
for (const key of $ownKeys(target)) {
|
||||
if (!$isNaN($parseFloat(key)) || acceptedKeys.has(key)) {
|
||||
continue;
|
||||
}
|
||||
const descriptor = $getOwnPropertyDescriptor(target, key);
|
||||
if (descriptor.configurable) {
|
||||
delete target[key];
|
||||
|
|
|
|||
|
|
@ -228,6 +228,20 @@ describe(parseUrl(import.meta.url), () => {
|
|||
expect(testResult.events.map(({ label }) => label)).toEqual(matchers.map(([name]) => name));
|
||||
});
|
||||
|
||||
test("'expect' error handling", async () => {
|
||||
const [customExpect, hooks] = makeExpect({ headless: true });
|
||||
|
||||
hooks.before();
|
||||
|
||||
expect(() => customExpect(undefined).toInclude("3")).toThrow(
|
||||
"expected received value to be of type string, any[] or object, got undefined"
|
||||
);
|
||||
|
||||
const testResult = hooks.after();
|
||||
|
||||
expect(testResult.pass).toBe(false);
|
||||
});
|
||||
|
||||
test("assertions are prevented after an error", async () => {
|
||||
const [customExpect, hooks] = makeExpect({ headless: true });
|
||||
|
||||
|
|
@ -414,7 +428,12 @@ describe(parseUrl(import.meta.url), () => {
|
|||
});
|
||||
|
||||
test("verifyErrors", async () => {
|
||||
expect.assertions(1);
|
||||
expect.assertions(2);
|
||||
|
||||
expect(() => expect.verifyErrors(["event", "promise", "timeout"])).toThrow(
|
||||
"cannot call `expect.verifyErrors()` without calling `expect.errors()` beforehand"
|
||||
);
|
||||
|
||||
expect.errors(3);
|
||||
|
||||
const boom = (msg) => {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
/** @odoo-module */
|
||||
|
||||
import { describe, expect, getFixture, test } from "@odoo/hoot";
|
||||
import {
|
||||
animationFrame,
|
||||
click,
|
||||
describe,
|
||||
expect,
|
||||
formatXml,
|
||||
getActiveElement,
|
||||
getFixture,
|
||||
getFocusableElements,
|
||||
getNextFocusableElement,
|
||||
getPreviousFocusableElement,
|
||||
|
|
@ -14,16 +16,17 @@ import {
|
|||
isFocusable,
|
||||
isInDOM,
|
||||
isVisible,
|
||||
mockTouch,
|
||||
queryAll,
|
||||
queryAllRects,
|
||||
queryAllTexts,
|
||||
queryFirst,
|
||||
queryOne,
|
||||
queryRect,
|
||||
test,
|
||||
waitFor,
|
||||
waitForNone,
|
||||
} from "@odoo/hoot-dom";
|
||||
import { mockTouch } from "@odoo/hoot-mock";
|
||||
} from "@odoo/hoot";
|
||||
import { getParentFrame } from "@web/../lib/hoot-dom/helpers/dom";
|
||||
import { mountForTest, parseUrl } from "../local_helpers";
|
||||
|
||||
|
|
@ -466,12 +469,16 @@ describe(parseUrl(import.meta.url), () => {
|
|||
expectSelector(".title:eq('1')").toEqualNodes(".title", { index: 1 });
|
||||
expectSelector('.title:eq("1")').toEqualNodes(".title", { index: 1 });
|
||||
|
||||
// :contains (text)
|
||||
// :contains
|
||||
expectSelector("main > .text:contains(ipsum)").toEqualNodes("p");
|
||||
expectSelector(".text:contains(/\\bL\\w+\\b\\sipsum/)").toEqualNodes("p");
|
||||
expectSelector(".text:contains(item)").toEqualNodes("li");
|
||||
|
||||
// :contains (value)
|
||||
// :text
|
||||
expectSelector(".text:text(item)").toEqualNodes("");
|
||||
expectSelector(".text:text(first item)").toEqualNodes("li:first-of-type");
|
||||
|
||||
// :value
|
||||
expectSelector("input:value(john)").toEqualNodes("[name=name],[name=email]");
|
||||
expectSelector("input:value(john doe)").toEqualNodes("[name=name]");
|
||||
expectSelector("input:value('John Doe (JOD)')").toEqualNodes("[name=name]");
|
||||
|
|
@ -493,6 +500,17 @@ describe(parseUrl(import.meta.url), () => {
|
|||
});
|
||||
});
|
||||
|
||||
test("query options", async () => {
|
||||
await mountForTest(FULL_HTML_TEMPLATE);
|
||||
|
||||
expect($$("input", { count: 2 })).toHaveLength(2);
|
||||
expect(() => $$("input", { count: 1 })).toThrow();
|
||||
|
||||
expect($$("option", { count: 6 })).toHaveLength(6);
|
||||
expect($$("option", { count: 3, root: "[name=title]" })).toHaveLength(3);
|
||||
expect(() => $$("option", { count: 6, root: "[name=title]" })).toThrow();
|
||||
});
|
||||
|
||||
test("advanced use cases", async () => {
|
||||
await mountForTest(FULL_HTML_TEMPLATE);
|
||||
|
||||
|
|
@ -596,9 +614,9 @@ describe(parseUrl(import.meta.url), () => {
|
|||
<div>PA4: PAV41</div>
|
||||
</span>
|
||||
`);
|
||||
expectSelector(
|
||||
`span:contains("Matrix (PAV11, PAV22, PAV31)\nPA4: PAV41")`
|
||||
).toEqualNodes("span");
|
||||
expectSelector(`span:contains("Matrix (PAV11, PAV22, PAV31) PA4: PAV41")`).toEqualNodes(
|
||||
"span"
|
||||
);
|
||||
});
|
||||
|
||||
test(":has(...):first", async () => {
|
||||
|
|
@ -730,7 +748,7 @@ describe(parseUrl(import.meta.url), () => {
|
|||
`);
|
||||
|
||||
expectSelector(
|
||||
`.o_content:has(.o_field_widget[name=messages]):has(td:contains(/^bbb$/)):has(td:contains(/^\\[test_trigger\\] Mitchell Admin$/))`
|
||||
`.o_content:has(.o_field_widget[name=messages]):has(td:text(bbb)):has(td:contains(/^\\[test_trigger\\] Mitchell Admin/))`
|
||||
).toEqualNodes(".o_content");
|
||||
});
|
||||
|
||||
|
|
@ -861,7 +879,7 @@ describe(parseUrl(import.meta.url), () => {
|
|||
expect($1(".title:first")).toBe(getFixture().querySelector("header .title"));
|
||||
|
||||
expect(() => $1(".title")).toThrow();
|
||||
expect(() => $1(".title", { exact: 2 })).toThrow();
|
||||
expect(() => $1(".title", { count: 2 })).toThrow();
|
||||
});
|
||||
|
||||
test("queryRect", async () => {
|
||||
|
|
@ -899,10 +917,10 @@ describe(parseUrl(import.meta.url), () => {
|
|||
|
||||
// queryOne error messages
|
||||
expect(() => $1()).toThrow(`found 0 elements instead of 1`);
|
||||
expect(() => $$([], { exact: 18 })).toThrow(`found 0 elements instead of 18`);
|
||||
expect(() => $$([], { count: 18 })).toThrow(`found 0 elements instead of 18`);
|
||||
expect(() => $1("")).toThrow(`found 0 elements instead of 1: 0 matching ""`);
|
||||
expect(() => $$(".tralalero", { exact: -20 })).toThrow(
|
||||
`found 1 element instead of -20: 1 matching ".tralalero"`
|
||||
expect(() => $$(".tralalero", { count: -20 })).toThrow(
|
||||
`invalid 'count' option: should be a positive integer`
|
||||
);
|
||||
expect(() => $1`.tralalero:contains(Tralala):visible:scrollable:first`).toThrow(
|
||||
`found 0 elements instead of 1: 0 matching ".tralalero:contains(Tralala):visible:scrollable:first" (1 element with text "Tralala" > 1 visible element > 0 scrollable elements)`
|
||||
|
|
|
|||
|
|
@ -1,20 +1,26 @@
|
|||
/** @odoo-module */
|
||||
|
||||
import { after, describe, expect, getFixture, test } from "@odoo/hoot";
|
||||
import {
|
||||
advanceTime,
|
||||
after,
|
||||
animationFrame,
|
||||
clear,
|
||||
click,
|
||||
dblclick,
|
||||
describe,
|
||||
drag,
|
||||
edit,
|
||||
expect,
|
||||
fill,
|
||||
getFixture,
|
||||
hover,
|
||||
keyDown,
|
||||
keyUp,
|
||||
leave,
|
||||
middleClick,
|
||||
mockFetch,
|
||||
mockTouch,
|
||||
mockUserAgent,
|
||||
on,
|
||||
pointerDown,
|
||||
pointerUp,
|
||||
|
|
@ -26,9 +32,9 @@ import {
|
|||
select,
|
||||
setInputFiles,
|
||||
setInputRange,
|
||||
test,
|
||||
uncheck,
|
||||
} from "@odoo/hoot-dom";
|
||||
import { mockFetch, mockTouch, mockUserAgent } from "@odoo/hoot-mock";
|
||||
} from "@odoo/hoot";
|
||||
import { Component, xml } from "@odoo/owl";
|
||||
import { EventList } from "@web/../lib/hoot-dom/helpers/events";
|
||||
import { mountForTest, parseUrl } from "../local_helpers";
|
||||
|
|
@ -1230,8 +1236,8 @@ describe(parseUrl(import.meta.url), () => {
|
|||
"pointerleave:0@input",
|
||||
"mouseleave:0@input",
|
||||
// Change
|
||||
"blur@input",
|
||||
"change@input",
|
||||
"blur@input",
|
||||
"focusout@input",
|
||||
]);
|
||||
});
|
||||
|
|
@ -1428,6 +1434,24 @@ describe(parseUrl(import.meta.url), () => {
|
|||
expect("input").toHaveValue(/file\.txt/);
|
||||
});
|
||||
|
||||
test("setInputFiles: shadow root", async () => {
|
||||
await mountForTest(/* xml */ `
|
||||
<div class="container" />
|
||||
`);
|
||||
|
||||
const shadow = queryOne(".container").attachShadow({
|
||||
mode: "open",
|
||||
});
|
||||
const input = document.createElement("input");
|
||||
input.type = "file";
|
||||
shadow.appendChild(input);
|
||||
|
||||
await click(".container:shadow input");
|
||||
await setInputFiles(new File([""], "file.txt"));
|
||||
|
||||
expect(".container:shadow input").toHaveValue(/file\.txt/);
|
||||
});
|
||||
|
||||
test("setInputRange: basic case and events", async () => {
|
||||
await mountForTest(/* xml */ `<input type="range" min="10" max="40" />`);
|
||||
|
||||
|
|
@ -1735,6 +1759,8 @@ describe(parseUrl(import.meta.url), () => {
|
|||
"focus@input",
|
||||
"focusin@input",
|
||||
"focusin@form",
|
||||
"keyup:Tab@input",
|
||||
"keyup:Tab@form",
|
||||
// Enter
|
||||
"keydown:Enter@input",
|
||||
"keydown:Enter@form",
|
||||
|
|
@ -1766,6 +1792,8 @@ describe(parseUrl(import.meta.url), () => {
|
|||
"focus@button",
|
||||
"focusin@button",
|
||||
"focusin@form",
|
||||
"keyup:Tab@button",
|
||||
"keyup:Tab@form",
|
||||
// Enter
|
||||
"keydown:Enter@button",
|
||||
"keydown:Enter@form",
|
||||
|
|
@ -1798,6 +1826,8 @@ describe(parseUrl(import.meta.url), () => {
|
|||
"focus@button",
|
||||
"focusin@button",
|
||||
"focusin@form",
|
||||
"keyup:Tab@button",
|
||||
"keyup:Tab@form",
|
||||
// Enter
|
||||
"keydown:Enter@button",
|
||||
"keydown:Enter@form",
|
||||
|
|
@ -1817,10 +1847,11 @@ describe(parseUrl(import.meta.url), () => {
|
|||
</form>
|
||||
`);
|
||||
|
||||
mockFetch((url, { body, method }) => {
|
||||
mockFetch((url, { body, headers, method }) => {
|
||||
expect.step(new URL(url).pathname);
|
||||
|
||||
expect(method).toBe("post");
|
||||
expect(method).toBe("POST");
|
||||
expect(headers).toEqual(new Headers([["Content-Type", "multipart/form-data"]]));
|
||||
expect(body).toBeInstanceOf(FormData);
|
||||
expect(body.get("csrf_token")).toBe("CSRF_TOKEN_VALUE");
|
||||
expect(body.get("name")).toBe("Pierre");
|
||||
|
|
|
|||
|
|
@ -1,15 +1,17 @@
|
|||
/** @odoo-module */
|
||||
|
||||
import { describe, expect, test } from "@odoo/hoot";
|
||||
import {
|
||||
Deferred,
|
||||
advanceTime,
|
||||
animationFrame,
|
||||
describe,
|
||||
expect,
|
||||
microTick,
|
||||
runAllTimers,
|
||||
test,
|
||||
tick,
|
||||
waitUntil,
|
||||
} from "@odoo/hoot-dom";
|
||||
} from "@odoo/hoot";
|
||||
import { parseUrl } from "../local_helpers";
|
||||
|
||||
// timeout of 1 second to ensure all timeouts are actually mocked
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { describe, expect, test } from "@odoo/hoot";
|
|||
import { queryOne } from "@odoo/hoot-dom";
|
||||
import { isInstanceOf, isIterable } from "@web/../lib/hoot-dom/hoot_dom_utils";
|
||||
import {
|
||||
deepCopy,
|
||||
deepEqual,
|
||||
formatHumanReadable,
|
||||
formatTechnical,
|
||||
|
|
@ -12,16 +13,30 @@ import {
|
|||
lookup,
|
||||
match,
|
||||
parseQuery,
|
||||
S_CIRCULAR,
|
||||
title,
|
||||
toExplicitString,
|
||||
} from "../hoot_utils";
|
||||
import { mountForTest, parseUrl } from "./local_helpers";
|
||||
|
||||
describe(parseUrl(import.meta.url), () => {
|
||||
test("deepEqual", () => {
|
||||
const recursive = {};
|
||||
recursive.self = recursive;
|
||||
const recursive = {};
|
||||
recursive.self = recursive;
|
||||
|
||||
describe(parseUrl(import.meta.url), () => {
|
||||
test("deepCopy", () => {
|
||||
expect(deepCopy(true)).toEqual(true);
|
||||
expect(deepCopy(false)).toEqual(false);
|
||||
expect(deepCopy(null)).toEqual(null);
|
||||
expect(deepCopy(recursive)).toEqual({ self: S_CIRCULAR });
|
||||
expect(deepCopy(new Date(0))).toEqual(new Date(0));
|
||||
expect(deepCopy({ a: 1, b: 2 })).toEqual({ a: 1, b: 2 });
|
||||
expect(deepCopy({ o: { a: [{ b: 1 }] } })).toEqual({ o: { a: [{ b: 1 }] } });
|
||||
expect(deepCopy(Symbol.for("a"))).toEqual(Symbol.for("a"));
|
||||
expect(deepCopy(document.createElement("div"))).toEqual(document.createElement("div"));
|
||||
expect(deepCopy([1, 2, 3])).toEqual([1, 2, 3]);
|
||||
});
|
||||
|
||||
test("deepEqual", () => {
|
||||
const TRUTHY_CASES = [
|
||||
[true, true],
|
||||
[false, false],
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@
|
|||
{
|
||||
"imports": {
|
||||
"@odoo/hoot-dom": "/web/static/lib/hoot-dom/hoot-dom.js",
|
||||
"@odoo/hoot-mock": "/web/static/lib/hoot/hoot-mock.js",
|
||||
"@odoo/hoot": "/web/static/lib/hoot/hoot.js",
|
||||
"@odoo/owl": "/web/static/lib/hoot/tests/hoot-owl-module.js",
|
||||
"@web/../lib/hoot-dom/helpers/dom": "/web/static/lib/hoot-dom/helpers/dom.js",
|
||||
|
|
@ -34,7 +33,6 @@
|
|||
"/web/static/lib/hoot/core/test": "/web/static/lib/hoot/core/test.js",
|
||||
"/web/static/lib/hoot/core/url": "/web/static/lib/hoot/core/url.js",
|
||||
"/web/static/lib/hoot/hoot_utils": "/web/static/lib/hoot/hoot_utils.js",
|
||||
"/web/static/lib/hoot/hoot-mock": "/web/static/lib/hoot/hoot-mock.js",
|
||||
"/web/static/lib/hoot/hoot": "/web/static/lib/hoot/hoot.js",
|
||||
"/web/static/lib/hoot/lib/diff_match_patch": "/web/static/lib/hoot/lib/diff_match_patch.js",
|
||||
"/web/static/lib/hoot/main_runner": "/web/static/lib/hoot/main_runner.js",
|
||||
|
|
@ -47,7 +45,6 @@
|
|||
"/web/static/lib/hoot/mock/network": "/web/static/lib/hoot/mock/network.js",
|
||||
"/web/static/lib/hoot/mock/notification": "/web/static/lib/hoot/mock/notification.js",
|
||||
"/web/static/lib/hoot/mock/storage": "/web/static/lib/hoot/mock/storage.js",
|
||||
"/web/static/lib/hoot/mock/sync_values": "/web/static/lib/hoot/mock/sync_values.js",
|
||||
"/web/static/lib/hoot/mock/window": "/web/static/lib/hoot/mock/window.js",
|
||||
"/web/static/lib/hoot/tests/local_helpers": "/web/static/lib/hoot/tests/local_helpers.js",
|
||||
"/web/static/lib/hoot/ui/hoot_buttons": "/web/static/lib/hoot/ui/hoot_buttons.js",
|
||||
|
|
@ -85,7 +82,6 @@
|
|||
|
||||
<!-- Test assets -->
|
||||
<script src="/web/static/lib/owl/owl.js"></script>
|
||||
<script src="../hoot.js" type="module" defer></script>
|
||||
<link rel="stylesheet" href="/web/static/lib/hoot/ui/hoot_style.css" />
|
||||
<link rel="stylesheet" href="/web/static/src/libs/fontawesome/css/font-awesome.css" />
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
/** @odoo-module */
|
||||
|
||||
import { describe, expect, test } from "@odoo/hoot";
|
||||
import { mockSendBeacon, mockTouch, mockVibrate } from "@odoo/hoot-mock";
|
||||
import { describe, expect, mockSendBeacon, mockTouch, mockVibrate, test } from "@odoo/hoot";
|
||||
import { parseUrl } from "../local_helpers";
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,9 +1,17 @@
|
|||
/** @odoo-module */
|
||||
|
||||
import { describe, expect, test } from "@odoo/hoot";
|
||||
import { mockFetch } from "@odoo/hoot-mock";
|
||||
import { after, describe, expect, mockFetch, test } from "@odoo/hoot";
|
||||
import { parseUrl } from "../local_helpers";
|
||||
|
||||
/**
|
||||
* @param {Blob | MediaSource} obj
|
||||
*/
|
||||
function createObjectURL(obj) {
|
||||
const url = URL.createObjectURL(obj);
|
||||
after(() => URL.revokeObjectURL(url));
|
||||
return url;
|
||||
}
|
||||
|
||||
describe(parseUrl(import.meta.url), () => {
|
||||
test("setup network values", async () => {
|
||||
expect(document.cookie).toBe("");
|
||||
|
|
@ -20,13 +28,170 @@ describe(parseUrl(import.meta.url), () => {
|
|||
expect(document.title).toBe("");
|
||||
});
|
||||
|
||||
test("fetch should not mock internal URLs", async () => {
|
||||
test("fetch with internal URLs works without mocking fetch", async () => {
|
||||
const blob = new Blob([JSON.stringify({ name: "coucou" })], {
|
||||
type: "application/json",
|
||||
});
|
||||
const blobUrl = createObjectURL(blob);
|
||||
const blobResponse = await fetch(blobUrl).then((res) => res.json());
|
||||
const dataResponse = await fetch("data:text/html,<body></body>").then((res) => res.text());
|
||||
|
||||
expect(blobResponse).toEqual({ name: "coucou" });
|
||||
expect(dataResponse).toBe("<body></body>");
|
||||
|
||||
await expect(fetch("http://some.url")).rejects.toThrow(/fetch is not mocked/);
|
||||
});
|
||||
|
||||
test("fetch with internal URLs should return default value", async () => {
|
||||
mockFetch(expect.step);
|
||||
|
||||
await fetch("http://some.url");
|
||||
await fetch("/odoo");
|
||||
await fetch(URL.createObjectURL(new Blob([""])));
|
||||
const external = await fetch("http://some.url").then((res) => res.text());
|
||||
const internal = await fetch("/odoo").then((res) => res.text());
|
||||
const data = await fetch("data:text/html,<body></body>").then((res) => res.text());
|
||||
|
||||
expect.verifySteps(["http://some.url", "/odoo"]);
|
||||
expect(external).toBe("null");
|
||||
expect(internal).toBe("null");
|
||||
expect(data).toBe("<body></body>");
|
||||
|
||||
expect.verifySteps(["http://some.url", "/odoo", "data:text/html,<body></body>"]);
|
||||
});
|
||||
|
||||
test("fetch JSON with blob URLs", async () => {
|
||||
mockFetch(expect.step);
|
||||
|
||||
const blob = new Blob([JSON.stringify({ name: "coucou" })], {
|
||||
type: "application/json",
|
||||
});
|
||||
const blobUrl = createObjectURL(blob);
|
||||
const response = await fetch(blobUrl);
|
||||
const json = await response.json();
|
||||
|
||||
expect(json).toEqual({ name: "coucou" });
|
||||
|
||||
expect.verifySteps([blobUrl]);
|
||||
});
|
||||
|
||||
test("fetch with mocked blob URLs", async () => {
|
||||
mockFetch((input) => {
|
||||
expect.step(input);
|
||||
return "Some other content";
|
||||
});
|
||||
|
||||
const blob = new Blob([JSON.stringify({ name: "coucou" })], {
|
||||
type: "application/json",
|
||||
});
|
||||
const blobUrl = createObjectURL(blob);
|
||||
const response = await fetch(blobUrl);
|
||||
|
||||
expect(response.headers).toEqual(new Headers([["Content-Type", "text/plain"]]));
|
||||
|
||||
const text = await response.text();
|
||||
|
||||
expect(text).toBe("Some other content");
|
||||
|
||||
expect.verifySteps([blobUrl]);
|
||||
});
|
||||
|
||||
test("mock response with nested blobs", async () => {
|
||||
mockFetch(
|
||||
() =>
|
||||
new Blob(["some blob", new Blob([" with nested content"], { type: "text/plain" })])
|
||||
);
|
||||
|
||||
const response = await fetch("/nestedBlob");
|
||||
const blob = await response.blob();
|
||||
const result = await blob.text();
|
||||
|
||||
expect(result).toBe("some blob with nested content");
|
||||
});
|
||||
|
||||
test("mock responses: array buffer", async () => {
|
||||
mockFetch(() => "some text");
|
||||
|
||||
const response = await fetch("/arrayBuffer");
|
||||
const result = await response.arrayBuffer();
|
||||
|
||||
expect(result).toBeInstanceOf(ArrayBuffer);
|
||||
expect(new TextDecoder("utf-8").decode(result)).toBe("some text");
|
||||
});
|
||||
|
||||
test("mock responses: blob", async () => {
|
||||
mockFetch(() => "blob content");
|
||||
|
||||
const response = await fetch("/blob");
|
||||
const result = await response.blob();
|
||||
|
||||
expect(result).toBeInstanceOf(Blob);
|
||||
expect(result.size).toBe(12);
|
||||
|
||||
const buffer = await result.arrayBuffer();
|
||||
expect(new TextDecoder("utf-8").decode(buffer)).toBe("blob content");
|
||||
});
|
||||
|
||||
test("mock responses: bytes", async () => {
|
||||
mockFetch(() => "some text");
|
||||
|
||||
const response = await fetch("/bytes");
|
||||
const result = await response.bytes();
|
||||
|
||||
expect(result).toBeInstanceOf(Uint8Array);
|
||||
expect(new TextDecoder("utf-8").decode(result)).toBe("some text");
|
||||
});
|
||||
|
||||
test("mock responses: formData", async () => {
|
||||
mockFetch(() => {
|
||||
const data = new FormData();
|
||||
data.append("name", "Frodo");
|
||||
return data;
|
||||
});
|
||||
|
||||
const response = await fetch("/formData");
|
||||
const result = await response.formData();
|
||||
|
||||
expect(result).toBeInstanceOf(FormData);
|
||||
expect(result.get("name")).toBe("Frodo");
|
||||
});
|
||||
|
||||
test("mock responses: json", async () => {
|
||||
mockFetch(() => ({ json: "content" }));
|
||||
|
||||
const response = await fetch("/json");
|
||||
const result = await response.json();
|
||||
|
||||
expect(result).toEqual({ json: "content" });
|
||||
});
|
||||
|
||||
test("mock responses: text", async () => {
|
||||
mockFetch(() => "some text");
|
||||
|
||||
const response = await fetch("/text");
|
||||
const result = await response.text();
|
||||
|
||||
expect(result).toBe("some text");
|
||||
});
|
||||
|
||||
test("mock responses: error handling after reading body", async () => {
|
||||
mockFetch(() => "some text");
|
||||
|
||||
const response = await fetch("/text");
|
||||
const responseClone = response.clone();
|
||||
const result = await response.text(); // read once
|
||||
|
||||
expect(result).toBe("some text");
|
||||
|
||||
// Rejects for every reader after body is used
|
||||
await expect(response.arrayBuffer()).rejects.toThrow(TypeError);
|
||||
await expect(response.blob()).rejects.toThrow(TypeError);
|
||||
await expect(response.bytes()).rejects.toThrow(TypeError);
|
||||
await expect(response.formData()).rejects.toThrow(TypeError);
|
||||
await expect(response.json()).rejects.toThrow(TypeError);
|
||||
await expect(response.text()).rejects.toThrow(TypeError);
|
||||
|
||||
const cloneResult = await responseClone.text(); // read clone
|
||||
|
||||
expect(cloneResult).toBe(result);
|
||||
|
||||
// Clone rejects reader as well
|
||||
await expect(responseClone.text()).rejects.toThrow(TypeError);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
/** @odoo-module */
|
||||
|
||||
import { after, describe, expect, test } from "@odoo/hoot";
|
||||
import { after, describe, expect, test, watchListeners } from "@odoo/hoot";
|
||||
import { queryOne } from "@odoo/hoot-dom";
|
||||
import { EventBus } from "@odoo/owl";
|
||||
import { mountForTest, parseUrl } from "../local_helpers";
|
||||
import { watchListeners } from "@odoo/hoot-mock";
|
||||
|
||||
describe(parseUrl(import.meta.url), () => {
|
||||
class TestBus extends EventBus {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ export class HootButtons extends Component {
|
|||
<t t-set="isRunning" t-value="runnerState.status === 'running'" />
|
||||
<t t-set="showAll" t-value="env.runner.hasRemovableFilter" />
|
||||
<t t-set="showFailed" t-value="runnerState.failedIds.size" />
|
||||
<t t-set="failedSuites" t-value="getFailedSuiteIds()" />
|
||||
<div
|
||||
class="${HootButtons.name} relative"
|
||||
t-on-pointerenter="onPointerEnter"
|
||||
|
|
@ -69,29 +68,35 @@ export class HootButtons extends Component {
|
|||
</div>
|
||||
<t t-if="state.open">
|
||||
<div
|
||||
class="animate-slide-down w-fit absolute flex flex-col end-0 shadow rounded overflow-hidden shadow z-2"
|
||||
class="
|
||||
w-fit absolute animate-slide-down
|
||||
flex flex-col end-0
|
||||
bg-base text-base shadow rounded z-2"
|
||||
>
|
||||
<t t-if="showAll">
|
||||
<HootLink class="'bg-btn p-2 whitespace-nowrap transition-colors'">
|
||||
Run <strong>all</strong> tests
|
||||
<HootLink
|
||||
class="'p-3 whitespace-nowrap transition-colors hover:bg-gray-300 dark:hover:bg-gray-700'"
|
||||
title="'Run all tests'"
|
||||
>
|
||||
Run <strong class="text-primary">all</strong> tests
|
||||
</HootLink>
|
||||
</t>
|
||||
<t t-if="showFailed">
|
||||
<HootLink
|
||||
ids="{ id: runnerState.failedIds }"
|
||||
class="'bg-btn p-2 whitespace-nowrap transition-colors'"
|
||||
class="'p-3 whitespace-nowrap transition-colors hover:bg-gray-300 dark:hover:bg-gray-700'"
|
||||
title="'Run failed tests'"
|
||||
ids="{ id: runnerState.failedIds }"
|
||||
onClick="onRunFailedClick"
|
||||
>
|
||||
Run failed <strong>tests</strong>
|
||||
Run <strong class="text-rose">failed</strong> tests
|
||||
</HootLink>
|
||||
<HootLink
|
||||
ids="{ id: failedSuites }"
|
||||
class="'bg-btn p-2 whitespace-nowrap transition-colors'"
|
||||
class="'p-3 whitespace-nowrap transition-colors hover:bg-gray-300 dark:hover:bg-gray-700'"
|
||||
title="'Run failed suites'"
|
||||
ids="{ id: getFailedSuiteIds() }"
|
||||
onClick="onRunFailedClick"
|
||||
>
|
||||
Run failed <strong>suites</strong>
|
||||
Run <strong class="text-rose">failed</strong> suites
|
||||
</HootLink>
|
||||
</t>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ export class HootConfigMenu extends Component {
|
|||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="appearance-none border border-primary rounded-sm w-4 h-4"
|
||||
class="appearance-none border border-primary rounded-xs w-4 h-4"
|
||||
t-model="config.manual"
|
||||
/>
|
||||
<span>Run tests manually</span>
|
||||
|
|
@ -129,7 +129,7 @@ export class HootConfigMenu extends Component {
|
|||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="appearance-none border border-primary rounded-sm w-4 h-4"
|
||||
class="appearance-none border border-primary rounded-xs w-4 h-4"
|
||||
t-att-checked="config.bail"
|
||||
t-on-change="onBailChange"
|
||||
/>
|
||||
|
|
@ -152,7 +152,7 @@ export class HootConfigMenu extends Component {
|
|||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="appearance-none border border-primary rounded-sm w-4 h-4"
|
||||
class="appearance-none border border-primary rounded-xs w-4 h-4"
|
||||
t-att-checked="config.loglevel"
|
||||
t-on-change="onLogLevelChange"
|
||||
/>
|
||||
|
|
@ -181,7 +181,7 @@ export class HootConfigMenu extends Component {
|
|||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="appearance-none border border-primary rounded-sm w-4 h-4"
|
||||
class="appearance-none border border-primary rounded-xs w-4 h-4"
|
||||
t-model="config.notrycatch"
|
||||
/>
|
||||
<span>No try/catch</span>
|
||||
|
|
@ -232,7 +232,7 @@ export class HootConfigMenu extends Component {
|
|||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="appearance-none border border-primary rounded-sm w-4 h-4"
|
||||
class="appearance-none border border-primary rounded-xs w-4 h-4"
|
||||
t-model="config.headless"
|
||||
/>
|
||||
<span>Headless</span>
|
||||
|
|
@ -243,7 +243,7 @@ export class HootConfigMenu extends Component {
|
|||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="appearance-none border border-primary rounded-sm w-4 h-4"
|
||||
class="appearance-none border border-primary rounded-xs w-4 h-4"
|
||||
t-model="config.fun"
|
||||
/>
|
||||
<span>Enable incentives</span>
|
||||
|
|
|
|||
|
|
@ -154,6 +154,34 @@ export class HootReporting extends Component {
|
|||
</t>.
|
||||
</em>
|
||||
</t>
|
||||
<t t-elif="!runnerReporting.tests">
|
||||
<div class="flex flex-col gap-3 p-5 rounded bg-gray-200 dark:bg-gray-800">
|
||||
<h3 class="border-b border-gray pb-1">
|
||||
Test runner is ready
|
||||
</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
<t t-if="config.manual">
|
||||
<button
|
||||
class="bg-btn px-2 py-1 transition-colors rounded"
|
||||
t-on-click="onRunClick"
|
||||
>
|
||||
<strong>Start</strong>
|
||||
</button>
|
||||
or press
|
||||
<kbd class="px-2 py-1 rounded text-primary bg-gray-300 dark:bg-gray-700">
|
||||
Enter
|
||||
</kbd>
|
||||
</t>
|
||||
<t t-else="">
|
||||
Waiting for assets
|
||||
<div
|
||||
class="animate-spin shrink-0 grow-0 w-4 h-4 border-2 border-primary border-t-transparent rounded-full"
|
||||
role="status"
|
||||
/>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div class="flex flex-col gap-3 p-5 rounded bg-gray-200 dark:bg-gray-800">
|
||||
<h3 class="border-b border-gray pb-1">
|
||||
|
|
@ -350,6 +378,10 @@ export class HootReporting extends Component {
|
|||
});
|
||||
}
|
||||
|
||||
onRunClick() {
|
||||
this.env.runner.manualStart();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {PointerEvent} ev
|
||||
* @param {string} id
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ export class HootSearch extends Component {
|
|||
<input
|
||||
type="search"
|
||||
class="w-full rounded p-1 outline-none"
|
||||
autofocus="autofocus"
|
||||
t-att-autofocus="!config.manual"
|
||||
placeholder="Filter suites, tests or tags"
|
||||
t-ref="search-input"
|
||||
t-att-class="{ 'text-gray': !config.filter }"
|
||||
|
|
|
|||
|
|
@ -115,7 +115,10 @@ export class HootStatusPanel extends Component {
|
|||
static props = {};
|
||||
|
||||
static template = xml`
|
||||
<div class="${HootStatusPanel.name} flex items-center justify-between gap-3 px-3 py-1 bg-gray-300 dark:bg-gray-700" t-att-class="state.className">
|
||||
<div
|
||||
class="${HootStatusPanel.name} flex items-center justify-between gap-3 px-3 py-1 min-h-10 bg-gray-300 dark:bg-gray-700"
|
||||
t-att-class="state.className"
|
||||
>
|
||||
<div class="flex items-center gap-2 overflow-hidden">
|
||||
<t t-if="runnerState.status === 'ready'">
|
||||
Ready
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.5;
|
||||
|
||||
--hoot-spacing: 0.25rem;
|
||||
}
|
||||
|
||||
/* Scrollbar */
|
||||
|
|
@ -116,7 +118,7 @@ ul {
|
|||
.hoot-controls {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
gap: 0.5rem;
|
||||
gap: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
|
||||
.hoot-dropdown {
|
||||
|
|
@ -775,14 +777,14 @@ input[type="checkbox"]:checked {
|
|||
inset-inline-end: 0;
|
||||
}
|
||||
.end-2 {
|
||||
inset-inline-end: 0.5rem;
|
||||
inset-inline-end: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
|
||||
.top-0 {
|
||||
top: 0;
|
||||
}
|
||||
.top-2 {
|
||||
top: 0.5rem;
|
||||
top: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
|
||||
.bottom-0 {
|
||||
|
|
@ -826,19 +828,22 @@ input[type="checkbox"]:checked {
|
|||
width: 0;
|
||||
}
|
||||
.w-1 {
|
||||
width: 0.25rem;
|
||||
width: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.w-2 {
|
||||
width: 0.5rem;
|
||||
width: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.w-3 {
|
||||
width: 0.75rem;
|
||||
width: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.w-4 {
|
||||
width: 1rem;
|
||||
width: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
.w-5 {
|
||||
width: 1.25rem;
|
||||
width: calc(var(--hoot-spacing) * 5);
|
||||
}
|
||||
.w-64 {
|
||||
width: calc(var(--hoot-spacing) * 64);
|
||||
}
|
||||
.w-fit {
|
||||
width: fit-content;
|
||||
|
|
@ -847,27 +852,23 @@ input[type="checkbox"]:checked {
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
.w-64 {
|
||||
width: 16rem;
|
||||
}
|
||||
|
||||
.min-w-0 {
|
||||
min-width: 0;
|
||||
}
|
||||
.min-w-1 {
|
||||
min-width: 0.25rem;
|
||||
min-width: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.min-w-2 {
|
||||
min-width: 0.5rem;
|
||||
min-width: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.min-w-3 {
|
||||
min-width: 0.75rem;
|
||||
min-width: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.min-w-4 {
|
||||
min-width: 1rem;
|
||||
min-width: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
.min-w-5 {
|
||||
min-width: 1.25rem;
|
||||
min-width: calc(var(--hoot-spacing) * 5);
|
||||
}
|
||||
.min-w-fit {
|
||||
min-width: fit-content;
|
||||
|
|
@ -880,19 +881,19 @@ input[type="checkbox"]:checked {
|
|||
max-width: 0;
|
||||
}
|
||||
.max-w-1 {
|
||||
max-width: 0.25rem;
|
||||
max-width: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.max-w-2 {
|
||||
max-width: 0.5rem;
|
||||
max-width: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.max-w-3 {
|
||||
max-width: 0.75rem;
|
||||
max-width: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.max-w-4 {
|
||||
max-width: 1rem;
|
||||
max-width: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
.max-w-5 {
|
||||
max-width: 1.25rem;
|
||||
max-width: calc(var(--hoot-spacing) * 5);
|
||||
}
|
||||
.max-w-full {
|
||||
max-width: 100%;
|
||||
|
|
@ -902,19 +903,22 @@ input[type="checkbox"]:checked {
|
|||
height: 0;
|
||||
}
|
||||
.h-1 {
|
||||
height: 0.25rem;
|
||||
height: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.h-2 {
|
||||
height: 0.5rem;
|
||||
height: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.h-3 {
|
||||
height: 0.75rem;
|
||||
height: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.h-4 {
|
||||
height: 1rem;
|
||||
height: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
.h-5 {
|
||||
height: 1.25rem;
|
||||
height: calc(var(--hoot-spacing) * 5);
|
||||
}
|
||||
.h-7 {
|
||||
height: calc(var(--hoot-spacing) * 7);
|
||||
}
|
||||
.h-fit {
|
||||
height: fit-content;
|
||||
|
|
@ -923,27 +927,26 @@ input[type="checkbox"]:checked {
|
|||
height: 100%;
|
||||
}
|
||||
|
||||
.h-7 {
|
||||
height: 1.75rem;
|
||||
}
|
||||
|
||||
.min-h-0 {
|
||||
min-height: 0;
|
||||
}
|
||||
.min-h-1 {
|
||||
min-height: 0.25rem;
|
||||
min-height: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.min-h-2 {
|
||||
min-height: 0.5rem;
|
||||
min-height: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.min-h-3 {
|
||||
min-height: 0.75rem;
|
||||
min-height: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.min-h-4 {
|
||||
min-height: 1rem;
|
||||
min-height: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
.min-h-5 {
|
||||
min-height: 1.25rem;
|
||||
min-height: calc(var(--hoot-spacing) * 5);
|
||||
}
|
||||
.min-h-10 {
|
||||
min-height: calc(var(--hoot-spacing) * 10);
|
||||
}
|
||||
.min-h-full {
|
||||
min-height: 100%;
|
||||
|
|
@ -953,22 +956,22 @@ input[type="checkbox"]:checked {
|
|||
max-height: 0;
|
||||
}
|
||||
.max-h-1 {
|
||||
max-height: 0.25rem;
|
||||
max-height: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.max-h-2 {
|
||||
max-height: 0.5rem;
|
||||
max-height: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.max-h-3 {
|
||||
max-height: 0.75rem;
|
||||
max-height: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.max-h-4 {
|
||||
max-height: 1rem;
|
||||
max-height: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
.max-h-5 {
|
||||
max-height: 1.25rem;
|
||||
max-height: calc(var(--hoot-spacing) * 5);
|
||||
}
|
||||
.max-h-48 {
|
||||
max-height: 12rem;
|
||||
max-height: calc(var(--hoot-spacing) * 48);
|
||||
}
|
||||
.max-h-full {
|
||||
max-height: 100%;
|
||||
|
|
@ -983,48 +986,48 @@ input[type="checkbox"]:checked {
|
|||
gap: 1px;
|
||||
}
|
||||
.gap-1 {
|
||||
gap: 0.25rem;
|
||||
gap: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.gap-2 {
|
||||
gap: 0.5rem;
|
||||
gap: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.gap-3 {
|
||||
gap: 0.75rem;
|
||||
gap: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.gap-4 {
|
||||
gap: 1rem;
|
||||
gap: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.gap-x-0 {
|
||||
column-gap: 0;
|
||||
}
|
||||
.gap-x-1 {
|
||||
column-gap: 0.25rem;
|
||||
column-gap: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.gap-x-2 {
|
||||
column-gap: 0.5rem;
|
||||
column-gap: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.gap-x-3 {
|
||||
column-gap: 0.75rem;
|
||||
column-gap: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.gap-x-4 {
|
||||
column-gap: 1rem;
|
||||
column-gap: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.gap-y-0 {
|
||||
row-gap: 0;
|
||||
}
|
||||
.gap-y-1 {
|
||||
row-gap: 0.25rem;
|
||||
row-gap: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.gap-y-2 {
|
||||
row-gap: 0.5rem;
|
||||
row-gap: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.gap-y-3 {
|
||||
row-gap: 0.75rem;
|
||||
row-gap: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.gap-y-4 {
|
||||
row-gap: 1rem;
|
||||
row-gap: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
/* Spacing: margin */
|
||||
|
|
@ -1033,16 +1036,16 @@ input[type="checkbox"]:checked {
|
|||
margin: 0;
|
||||
}
|
||||
.m-1 {
|
||||
margin: 0.25rem;
|
||||
margin: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.m-2 {
|
||||
margin: 0.5rem;
|
||||
margin: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.m-3 {
|
||||
margin: 0.75rem;
|
||||
margin: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.m-4 {
|
||||
margin: 1rem;
|
||||
margin: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.mx-0 {
|
||||
|
|
@ -1050,20 +1053,20 @@ input[type="checkbox"]:checked {
|
|||
margin-right: 0;
|
||||
}
|
||||
.mx-1 {
|
||||
margin-left: 0.25rem;
|
||||
margin-right: 0.25rem;
|
||||
margin-left: calc(var(--hoot-spacing) * 1);
|
||||
margin-right: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.mx-2 {
|
||||
margin-left: 0.5rem;
|
||||
margin-right: 0.5rem;
|
||||
margin-left: calc(var(--hoot-spacing) * 2);
|
||||
margin-right: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.mx-3 {
|
||||
margin-left: 0.75rem;
|
||||
margin-right: 0.75rem;
|
||||
margin-left: calc(var(--hoot-spacing) * 3);
|
||||
margin-right: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.mx-4 {
|
||||
margin-left: 1rem;
|
||||
margin-right: 1rem;
|
||||
margin-left: calc(var(--hoot-spacing) * 4);
|
||||
margin-right: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.my-0 {
|
||||
|
|
@ -1071,36 +1074,36 @@ input[type="checkbox"]:checked {
|
|||
margin-bottom: 0;
|
||||
}
|
||||
.my-1 {
|
||||
margin-top: 0.25rem;
|
||||
margin-bottom: 0.25rem;
|
||||
margin-top: calc(var(--hoot-spacing) * 1);
|
||||
margin-bottom: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.my-2 {
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
margin-top: calc(var(--hoot-spacing) * 2);
|
||||
margin-bottom: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.my-3 {
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 0.75rem;
|
||||
margin-top: calc(var(--hoot-spacing) * 3);
|
||||
margin-bottom: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.my-3 {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
margin-top: calc(var(--hoot-spacing) * 4);
|
||||
margin-bottom: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.ms-0 {
|
||||
margin-inline-start: 0;
|
||||
}
|
||||
.ms-1 {
|
||||
margin-inline-start: 0.25rem;
|
||||
margin-inline-start: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.ms-2 {
|
||||
margin-inline-start: 0.5rem;
|
||||
margin-inline-start: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.ms-3 {
|
||||
margin-inline-start: 0.75rem;
|
||||
margin-inline-start: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.ms-4 {
|
||||
margin-inline-start: 1rem;
|
||||
margin-inline-start: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
.ms-auto {
|
||||
margin-inline-start: auto;
|
||||
|
|
@ -1110,16 +1113,16 @@ input[type="checkbox"]:checked {
|
|||
margin-inline-end: 0;
|
||||
}
|
||||
.me-1 {
|
||||
margin-inline-end: 0.25rem;
|
||||
margin-inline-end: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.me-2 {
|
||||
margin-inline-end: 0.5rem;
|
||||
margin-inline-end: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.me-3 {
|
||||
margin-inline-end: 0.75rem;
|
||||
margin-inline-end: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.me-4 {
|
||||
margin-inline-end: 1rem;
|
||||
margin-inline-end: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
.me-auto {
|
||||
margin-inline-end: auto;
|
||||
|
|
@ -1129,32 +1132,32 @@ input[type="checkbox"]:checked {
|
|||
margin-top: 0;
|
||||
}
|
||||
.mt-1 {
|
||||
margin-top: 0.25rem;
|
||||
margin-top: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.mt-2 {
|
||||
margin-top: 0.5rem;
|
||||
margin-top: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.mt-3 {
|
||||
margin-top: 0.75rem;
|
||||
margin-top: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.mt-4 {
|
||||
margin-top: 1rem;
|
||||
margin-top: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.mb-0 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.mb-1 {
|
||||
margin-bottom: 0.25rem;
|
||||
margin-bottom: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.mb-2 {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-bottom: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.mb-3 {
|
||||
margin-bottom: 0.75rem;
|
||||
margin-bottom: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.mb-4 {
|
||||
margin-bottom: 1rem;
|
||||
margin-bottom: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
/* Spacing: padding */
|
||||
|
|
@ -1166,19 +1169,19 @@ input[type="checkbox"]:checked {
|
|||
padding: 1px;
|
||||
}
|
||||
.p-1 {
|
||||
padding: 0.25rem;
|
||||
padding: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.p-2 {
|
||||
padding: 0.5rem;
|
||||
padding: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.p-3 {
|
||||
padding: 0.75rem;
|
||||
padding: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.p-4 {
|
||||
padding: 1rem;
|
||||
padding: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
.p-5 {
|
||||
padding: 1.25rem;
|
||||
padding: calc(var(--hoot-spacing) * 5);
|
||||
}
|
||||
|
||||
.px-0 {
|
||||
|
|
@ -1186,20 +1189,20 @@ input[type="checkbox"]:checked {
|
|||
padding-right: 0;
|
||||
}
|
||||
.px-1 {
|
||||
padding-left: 0.25rem;
|
||||
padding-right: 0.25rem;
|
||||
padding-left: calc(var(--hoot-spacing) * 1);
|
||||
padding-right: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.px-2 {
|
||||
padding-left: 0.5rem;
|
||||
padding-right: 0.5rem;
|
||||
padding-left: calc(var(--hoot-spacing) * 2);
|
||||
padding-right: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.px-3 {
|
||||
padding-left: 0.75rem;
|
||||
padding-right: 0.75rem;
|
||||
padding-left: calc(var(--hoot-spacing) * 3);
|
||||
padding-right: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.px-4 {
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
padding-left: calc(var(--hoot-spacing) * 4);
|
||||
padding-right: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.py-0 {
|
||||
|
|
@ -1207,84 +1210,84 @@ input[type="checkbox"]:checked {
|
|||
padding-bottom: 0;
|
||||
}
|
||||
.py-1 {
|
||||
padding-top: 0.25rem;
|
||||
padding-bottom: 0.25rem;
|
||||
padding-top: calc(var(--hoot-spacing) * 1);
|
||||
padding-bottom: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.py-2 {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
padding-top: calc(var(--hoot-spacing) * 2);
|
||||
padding-bottom: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.py-3 {
|
||||
padding-top: 0.75rem;
|
||||
padding-bottom: 0.75rem;
|
||||
padding-top: calc(var(--hoot-spacing) * 3);
|
||||
padding-bottom: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.py-4 {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
padding-top: calc(var(--hoot-spacing) * 4);
|
||||
padding-bottom: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.ps-0 {
|
||||
padding-inline-start: 0;
|
||||
}
|
||||
.ps-1 {
|
||||
padding-inline-start: 0.25rem;
|
||||
padding-inline-start: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.ps-2 {
|
||||
padding-inline-start: 0.5rem;
|
||||
padding-inline-start: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.ps-3 {
|
||||
padding-inline-start: 0.75rem;
|
||||
padding-inline-start: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.ps-4 {
|
||||
padding-inline-start: 1rem;
|
||||
padding-inline-start: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.pe-0 {
|
||||
padding-inline-end: 0;
|
||||
}
|
||||
.pe-1 {
|
||||
padding-inline-end: 0.25rem;
|
||||
padding-inline-end: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.pe-2 {
|
||||
padding-inline-end: 0.5rem;
|
||||
padding-inline-end: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.pe-3 {
|
||||
padding-inline-end: 0.75rem;
|
||||
padding-inline-end: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.pe-4 {
|
||||
padding-inline-end: 1rem;
|
||||
padding-inline-end: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.pt-0 {
|
||||
padding-top: 0;
|
||||
}
|
||||
.pt-1 {
|
||||
padding-top: 0.25rem;
|
||||
padding-top: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.pt-2 {
|
||||
padding-top: 0.5rem;
|
||||
padding-top: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.pt-3 {
|
||||
padding-top: 0.75rem;
|
||||
padding-top: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.pt-4 {
|
||||
padding-top: 1rem;
|
||||
padding-top: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
.pb-0 {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
.pb-1 {
|
||||
padding-bottom: 0.25rem;
|
||||
padding-bottom: calc(var(--hoot-spacing) * 1);
|
||||
}
|
||||
.pb-2 {
|
||||
padding-bottom: 0.5rem;
|
||||
padding-bottom: calc(var(--hoot-spacing) * 2);
|
||||
}
|
||||
.pb-3 {
|
||||
padding-bottom: 0.75rem;
|
||||
padding-bottom: calc(var(--hoot-spacing) * 3);
|
||||
}
|
||||
.pb-4 {
|
||||
padding-bottom: 1rem;
|
||||
padding-bottom: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
|
||||
/* Text: alignment */
|
||||
|
|
@ -1472,15 +1475,15 @@ input[type="checkbox"]:checked {
|
|||
|
||||
.text-xs {
|
||||
font-size: 0.625rem;
|
||||
line-height: 1rem;
|
||||
line-height: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
.text-sm {
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.25rem;
|
||||
line-height: calc(var(--hoot-spacing) * 5);
|
||||
}
|
||||
.text-2xl {
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.75rem;
|
||||
line-height: calc(var(--hoot-spacing) * 7);
|
||||
}
|
||||
|
||||
/* Transform: rotate */
|
||||
|
|
@ -1566,8 +1569,8 @@ input[type="checkbox"]:checked {
|
|||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
.sm\:px-4 {
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
padding-left: calc(var(--hoot-spacing) * 4);
|
||||
padding-right: calc(var(--hoot-spacing) * 4);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1596,7 +1599,7 @@ input[type="checkbox"]:checked {
|
|||
@media (max-width: 640px) {
|
||||
.hoot-controls {
|
||||
display: grid;
|
||||
gap: 0.25rem;
|
||||
gap: var(--hoot-spacing);
|
||||
grid-template: 1fr auto auto / 1fr auto auto;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,13 +9,14 @@ import {
|
|||
useState,
|
||||
} from "@odoo/owl";
|
||||
import { isNode, toSelector } from "@web/../lib/hoot-dom/helpers/dom";
|
||||
import { isInstanceOf, isIterable } from "@web/../lib/hoot-dom/hoot_dom_utils";
|
||||
import { isInstanceOf, isIterable, isPromise } from "@web/../lib/hoot-dom/hoot_dom_utils";
|
||||
import { logger } from "../core/logger";
|
||||
import {
|
||||
getTypeOf,
|
||||
isSafe,
|
||||
Markup,
|
||||
S_ANY,
|
||||
S_CIRCULAR,
|
||||
S_NONE,
|
||||
stringify,
|
||||
toExplicitString,
|
||||
|
|
@ -96,7 +97,7 @@ export class HootTechnicalValue extends Component {
|
|||
<t>/></t>
|
||||
</button>
|
||||
</t>
|
||||
<t t-elif="value === S_ANY or value === S_NONE">
|
||||
<t t-elif="SPECIAL_SYMBOLS.includes(value)">
|
||||
<span class="italic">
|
||||
<<t t-esc="symbolValue(value)" />>
|
||||
</span>
|
||||
|
|
@ -175,8 +176,7 @@ export class HootTechnicalValue extends Component {
|
|||
stringify = stringify;
|
||||
toSelector = toSelector;
|
||||
|
||||
S_ANY = S_ANY;
|
||||
S_NONE = S_NONE;
|
||||
SPECIAL_SYMBOLS = [S_ANY, S_CIRCULAR, S_NONE];
|
||||
|
||||
get explicitValue() {
|
||||
return toExplicitString(this.value);
|
||||
|
|
@ -249,7 +249,7 @@ export class HootTechnicalValue extends Component {
|
|||
}
|
||||
|
||||
wrapPromiseValue(promise) {
|
||||
if (!isInstanceOf(promise, Promise)) {
|
||||
if (!isPromise(promise)) {
|
||||
return;
|
||||
}
|
||||
this.state.promiseState = ["pending", null];
|
||||
|
|
|
|||
|
|
@ -90,6 +90,8 @@ function stackTemplate(label, owner) {
|
|||
`;
|
||||
}
|
||||
|
||||
const DOC_URL = `https://www.odoo.com/documentation/18.0/developer/reference/frontend/unit_testing/hoot.html#`;
|
||||
|
||||
const ERROR_TEMPLATE = /* xml */ `
|
||||
<div class="text-rose flex items-center gap-1 px-2 truncate">
|
||||
<i class="fa fa-exclamation" />
|
||||
|
|
@ -114,8 +116,12 @@ const EVENT_TEMPLATE = /* xml */ `
|
|||
<t t-else="">
|
||||
<i class="fa" t-att-class="eventIcon" />
|
||||
</t>
|
||||
<!-- TODO: add documentation links once they exist -->
|
||||
<a href="#" class="hover:text-primary flex gap-1 items-center" t-att-class="{ 'text-cyan': sType === 'assertion' }">
|
||||
<a
|
||||
class="hover:text-primary flex gap-1 items-center"
|
||||
t-att-class="{ 'text-cyan': sType === 'assertion' }"
|
||||
t-att-href="DOC_URL + (event.docLabel or event.label)"
|
||||
target="_blank"
|
||||
>
|
||||
<t t-if="event.flags">
|
||||
<i t-if="event.hasFlag('rejects')" class="fa fa-times" />
|
||||
<i t-elif="event.hasFlag('resolves')" class="fa fa-arrow-right" />
|
||||
|
|
@ -306,6 +312,7 @@ export class HootTestResult extends Component {
|
|||
`;
|
||||
|
||||
CASE_EVENT_TYPES = CASE_EVENT_TYPES;
|
||||
DOC_URL = DOC_URL;
|
||||
|
||||
Tag = Tag;
|
||||
formatHumanReadable = formatHumanReadable;
|
||||
|
|
|
|||
|
|
@ -684,7 +684,7 @@
|
|||
const characterDataSetData = getDescriptor$1(characterDataProto, "data").set;
|
||||
const nodeGetFirstChild = getDescriptor$1(nodeProto$2, "firstChild").get;
|
||||
const nodeGetNextSibling = getDescriptor$1(nodeProto$2, "nextSibling").get;
|
||||
const NO_OP = () => { };
|
||||
const NO_OP$1 = () => { };
|
||||
function makePropSetter(name) {
|
||||
return function setProp(value) {
|
||||
// support 0, fallback to empty string for other falsy values
|
||||
|
|
@ -1014,7 +1014,7 @@
|
|||
idx: info.idx,
|
||||
refIdx: info.refIdx,
|
||||
setData: makeRefSetter(index, ctx.refList),
|
||||
updateData: NO_OP,
|
||||
updateData: NO_OP$1,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -1640,6 +1640,7 @@
|
|||
let current = fiber;
|
||||
do {
|
||||
current.node.fiber = current;
|
||||
fibersInError.set(current, error);
|
||||
current = current.parent;
|
||||
} while (current);
|
||||
fibersInError.set(fiber.root, error);
|
||||
|
|
@ -2386,13 +2387,19 @@
|
|||
const node = getCurrent();
|
||||
let render = batchedRenderFunctions.get(node);
|
||||
if (!render) {
|
||||
render = batched(node.render.bind(node, false));
|
||||
const wrapper = { fn: batched(node.render.bind(node, false)) };
|
||||
render = (...args) => wrapper.fn(...args);
|
||||
batchedRenderFunctions.set(node, render);
|
||||
// manual implementation of onWillDestroy to break cyclic dependency
|
||||
node.willDestroy.push(clearReactivesForCallback.bind(null, render));
|
||||
node.willDestroy.push(cleanupRenderAndReactives.bind(null, wrapper, render));
|
||||
}
|
||||
return reactive(state, render);
|
||||
}
|
||||
const NO_OP = () => { };
|
||||
function cleanupRenderAndReactives(wrapper, render) {
|
||||
wrapper.fn = NO_OP;
|
||||
clearReactivesForCallback(render);
|
||||
}
|
||||
class ComponentNode {
|
||||
constructor(C, props, app, parent, parentKey) {
|
||||
this.fiber = null;
|
||||
|
|
@ -5816,7 +5823,7 @@
|
|||
}
|
||||
|
||||
// do not modify manually. This file is generated by the release script.
|
||||
const version = "2.8.1";
|
||||
const version = "2.8.2";
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Scheduler
|
||||
|
|
@ -6325,8 +6332,8 @@
|
|||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
|
||||
__info__.date = '2025-09-23T07:17:45.055Z';
|
||||
__info__.hash = '5211116';
|
||||
__info__.date = '2026-01-30T07:49:47.618Z';
|
||||
__info__.hash = '52abf8d';
|
||||
__info__.url = 'https://github.com/odoo/owl';
|
||||
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,11 +0,0 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4 4.5H6.5V7H4V4.5Z" fill="black"/>
|
||||
<path d="M6.5 10.5H4V13H6.5V10.5Z" fill="black"/>
|
||||
<path d="M13.25 10.5H10.75V13H13.25V10.5Z" fill="black"/>
|
||||
<path d="M17.5 10.5H20V13H17.5V10.5Z" fill="black"/>
|
||||
<path d="M6.5 16.5H4V19H6.5V16.5Z" fill="black"/>
|
||||
<path d="M10.75 16.5H13.25V19H10.75V16.5Z" fill="black"/>
|
||||
<path d="M20 16.5H17.5V19H20V16.5Z" fill="black"/>
|
||||
<path d="M13.25 4.5H10.75V7H13.25V4.5Z" fill="black"/>
|
||||
<path d="M17.5 4.5H20V7H17.5V4.5Z" fill="black"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 573 B |
|
|
@ -287,6 +287,8 @@ pdfjs-editor-ink-opacity-input = Boullder
|
|||
pdfjs-editor-stamp-add-image-button =
|
||||
.title = Ouzhpennañ ur skeudenn
|
||||
pdfjs-editor-stamp-add-image-button-label = Ouzhpennañ ur skeudenn
|
||||
# This refers to the thickness of the line used for free highlighting (not bound to text)
|
||||
pdfjs-editor-free-highlight-thickness-input = Tevded
|
||||
pdfjs-free-text =
|
||||
.aria-label = Aozer testennoù
|
||||
pdfjs-ink =
|
||||
|
|
@ -306,7 +308,33 @@ pdfjs-editor-alt-text-save-button = Enrollañ
|
|||
|
||||
## Color picker
|
||||
|
||||
pdfjs-editor-colorpicker-button =
|
||||
.title = Cheñch liv
|
||||
pdfjs-editor-colorpicker-yellow =
|
||||
.title = Melen
|
||||
pdfjs-editor-colorpicker-blue =
|
||||
.title = Glas
|
||||
pdfjs-editor-colorpicker-pink =
|
||||
.title = Roz
|
||||
pdfjs-editor-colorpicker-red =
|
||||
.title = Ruz
|
||||
|
||||
## Show all highlights
|
||||
## This is a toggle button to show/hide all the highlights.
|
||||
|
||||
pdfjs-editor-highlight-show-all-button-label = Diskouez pep tra
|
||||
pdfjs-editor-highlight-show-all-button =
|
||||
.title = Diskouez pep tra
|
||||
|
||||
## New alt-text dialog
|
||||
## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.
|
||||
|
||||
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Gouzout hiroc’h
|
||||
pdfjs-editor-new-alt-text-error-close-button = Serriñ
|
||||
|
||||
## Image alt-text settings
|
||||
|
||||
pdfjs-editor-alt-text-settings-delete-model-button = Dilemel
|
||||
pdfjs-editor-alt-text-settings-download-model-button = Pellgargañ
|
||||
pdfjs-editor-alt-text-settings-downloading-model-button = O pellgargañ…
|
||||
pdfjs-editor-alt-text-settings-close-button = Serriñ
|
||||
|
|
|
|||
|
|
@ -348,9 +348,10 @@ pdfjs-editor-free-highlight-thickness-input = Thickness
|
|||
pdfjs-editor-free-highlight-thickness-title =
|
||||
.title = Change thickness when highlighting items other than text
|
||||
|
||||
pdfjs-free-text =
|
||||
# .default-content is used as a placeholder in an empty text editor.
|
||||
pdfjs-free-text2 =
|
||||
.aria-label = Text Editor
|
||||
pdfjs-free-text-default-content = Start typing…
|
||||
.default-content = Start typing…
|
||||
pdfjs-ink =
|
||||
.aria-label = Draw Editor
|
||||
pdfjs-ink-canvas =
|
||||
|
|
@ -359,9 +360,12 @@ pdfjs-ink-canvas =
|
|||
## Alt-text dialog
|
||||
|
||||
# Alternative text (alt text) helps when people can't see the image.
|
||||
pdfjs-editor-alt-text-button =
|
||||
.aria-label = Alt text
|
||||
pdfjs-editor-alt-text-button-label = Alt text
|
||||
|
||||
pdfjs-editor-alt-text-edit-button-label = Edit alt text
|
||||
pdfjs-editor-alt-text-edit-button =
|
||||
.aria-label = Edit alt text
|
||||
pdfjs-editor-alt-text-dialog-label = Choose an option
|
||||
pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.
|
||||
pdfjs-editor-alt-text-add-description-label = Add a description
|
||||
|
|
@ -456,12 +460,18 @@ pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text A
|
|||
.aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
|
||||
|
||||
# This is a button that users can click to edit the alt text they have already added.
|
||||
pdfjs-editor-new-alt-text-added-button =
|
||||
.aria-label = Alt text added
|
||||
pdfjs-editor-new-alt-text-added-button-label = Alt text added
|
||||
|
||||
# This is a button that users can click to open the alt text editor and add alt text when it is not present.
|
||||
pdfjs-editor-new-alt-text-missing-button =
|
||||
.aria-label = Missing alt text
|
||||
pdfjs-editor-new-alt-text-missing-button-label = Missing alt text
|
||||
|
||||
# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.
|
||||
pdfjs-editor-new-alt-text-to-review-button =
|
||||
.aria-label = Review alt text
|
||||
pdfjs-editor-new-alt-text-to-review-button-label = Review alt text
|
||||
|
||||
# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue