From 0f31638bdc1e15f68d75e77d0bf54485e36f6d21 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 24 Nov 2025 09:10:59 +1100 Subject: [PATCH 01/17] [CI] Build Fixes (#734) * precache for ios build * build android on push too * try without cache --- .github/workflows/android.yaml | 5 ++++- .github/workflows/ios.yaml | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/android.yaml b/.github/workflows/android.yaml index 9f30b48..3147927 100644 --- a/.github/workflows/android.yaml +++ b/.github/workflows/android.yaml @@ -3,6 +3,9 @@ name: Android on: + pull_request: + branches: + - master push: branches: - master @@ -30,7 +33,7 @@ jobs: with: flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }} channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }} - cache: true + cache: false cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:" diff --git a/.github/workflows/ios.yaml b/.github/workflows/ios.yaml index 724fa57..cdd51ed 100644 --- a/.github/workflows/ios.yaml +++ b/.github/workflows/ios.yaml @@ -3,6 +3,9 @@ name: iOS on: + pull_request: + branches: + - master push: branches: - master @@ -33,7 +36,7 @@ jobs: with: flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }} channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }} - cache: true + cache: false cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:" @@ -49,6 +52,7 @@ jobs: dart pub global activate fvm fvm install fvm flutter pub get + fvm flutter precache --ios cd ios pod repo update pod install From bb10117f010baf9563d6d30618be2a11851e4905 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 28 Nov 2025 20:01:55 +1100 Subject: [PATCH 02/17] New Crowdin updates (#736) * New translations app_en.arb (Czech) * New translations app_en.arb (Russian) --- lib/l10n/cs_CZ/app_cs_CZ.arb | 6 ++-- lib/l10n/ru_RU/app_ru_RU.arb | 54 ++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/lib/l10n/cs_CZ/app_cs_CZ.arb b/lib/l10n/cs_CZ/app_cs_CZ.arb index 51eb367..ccd9d94 100644 --- a/lib/l10n/cs_CZ/app_cs_CZ.arb +++ b/lib/l10n/cs_CZ/app_cs_CZ.arb @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Skenování čárových kódů pozastaveno", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Kliknutím pozastavíte skenování", "@barcodeScanPause": {}, "barcodeScanAssign": "Skenovat pro přiřazení čárového kódu", "@barcodeScanAssign": {}, @@ -472,9 +472,9 @@ "@itemUpdated": {}, "keywords": "Klíčová slova", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "Ovladač pro popisky", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "Vyberte ovladač pro tiskárnu štítků", "@labelSelectDriver": {}, "labelPrinting": "Tisk štítku", "@labelPrinting": {}, diff --git a/lib/l10n/ru_RU/app_ru_RU.arb b/lib/l10n/ru_RU/app_ru_RU.arb index fa9f15b..8eb938f 100644 --- a/lib/l10n/ru_RU/app_ru_RU.arb +++ b/lib/l10n/ru_RU/app_ru_RU.arb @@ -46,7 +46,7 @@ "@aspectRatioSquare": {}, "allocateStock": "Выделить запас", "@allocateStock": {}, - "allocatedStock": "Allocated Stock", + "allocatedStock": "Зарезервированные остатки", "@allocatedStock": {}, "appReleaseNotes": "Показать заметки о выпуске приложения", "@appReleaseNotes": {}, @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Сканирование штрих-кода приостановлено", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Нажмите, чтобы приостановить сканирование", "@barcodeScanPause": {}, "barcodeScanAssign": "Сканировать для присвоения штрих-кода", "@barcodeScanAssign": {}, @@ -240,7 +240,7 @@ "@deletePartDetail": {}, "deleteSuccess": "Удаление успешно завершено", "@deleteSuccess": {}, - "deliveryDate": "Delivery Date", + "deliveryDate": "Дата доставки", "@deliveryDate": {}, "description": "Описание", "@description": {}, @@ -384,9 +384,9 @@ "@homeShowPo": {}, "homeShowPoDescription": "Показывать кнопку заказа на главном экране", "@homeShowPoDescription": {}, - "homeShowShipments": "Show Shipments", + "homeShowShipments": "Показать отгрузки", "@homeShowShipments": {}, - "homeShowShipmentsDescription": "Show pending shipments on the home screen", + "homeShowShipmentsDescription": "Показывать ожидающие отгрузки на главном экране", "@homeShowShipmentsDescription": {}, "homeShowSo": "Показать заказы на продажу", "@homeShowSo": {}, @@ -454,9 +454,9 @@ "@invalidSupplierPart": {}, "invalidUsernamePassword": "Неверная комбинация имени пользователя и пароля", "@invalidUsernamePassword": {}, - "invoice": "Invoice", + "invoice": "Счет", "@invoice": {}, - "invoiceNumber": "Invoice Number", + "invoiceNumber": "Номер счета", "@invoiceNumber": {}, "issue": "Оформить", "@issue": {}, @@ -472,9 +472,9 @@ "@itemUpdated": {}, "keywords": "Ключевые слова", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "Драйвер принтера этикеток", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "Выберите драйвер принтера этикеток", "@labelSelectDriver": {}, "labelPrinting": "Печать этикеток", "@labelPrinting": {}, @@ -514,7 +514,7 @@ "@locationCreate": {}, "locationCreateDetail": "Создать новое расположение склада", "@locationCreateDetail": {}, - "locationDefault": "Default Location", + "locationDefault": "Расположение по умолчанию", "@locationDefault": {}, "locationNotSet": "Не указано месторасположение", "@locationNotSet": {}, @@ -544,9 +544,9 @@ "@missingData": {}, "name": "Название", "@name": {}, - "no": "No", + "no": "Нет", "@no": {}, - "notApplicable": "N/A", + "notApplicable": "Н/Д", "@notApplicable": {}, "notConnected": "Соединение не установлено", "@notConnected": {}, @@ -660,7 +660,7 @@ "@password": {}, "passwordEmpty": "Пароль не может быть пустым", "@passwordEmpty": {}, - "pending": "Pending", + "pending": "В обработке", "@pending": {}, "permissionAccountDenied": "Ваш аккаунт не имеет разрешения на выполнение этого действия", "@permissionAccountDenied": {}, @@ -940,33 +940,33 @@ "@serverNotConnected": {}, "serverNotSelected": "Сервер не выбран", "@serverNotSelected": {}, - "shipment": "Shipment", + "shipment": "Отгрузка", "@shipment": {}, "shipments": "Поставки", "@shipments": {}, - "shipmentsPending": "Pending Shipments", + "shipmentsPending": "Ожидающие отгрузки", "@shipmentsPending": {}, "shipmentAdd": "Новое Отправление", "@shipmentAdd": {}, - "shipmentCheck": "Check Shipment", + "shipmentCheck": "Проверить отгрузку", "@shipmentCheck": {}, - "shipmentCheckDetail": "Mark this shipment as checked", + "shipmentCheckDetail": "Отметить этот груз как проверенный", "@shipmentCheckDetail": {}, - "shipmentChecked": "Shipment Checked", + "shipmentChecked": "Отгрузка проверена", "@shipmentChecked": {}, - "shipmentDate": "Shipment Date", + "shipmentDate": "Дата отгрузки", "@shipmentDate": {}, - "shipmentEdit": "Edit Shipment", + "shipmentEdit": "Редактировать отгрузку", "@shipmentEdit": {}, - "shipmentReference": "Shipment Reference", + "shipmentReference": "Ссылка на отгрузку", "@shipmentReference": {}, - "shipmentSend": "Send Shipment", + "shipmentSend": "Отправить отгрузку", "@shipmentSend": {}, - "shipmentUncheck": "Uncheck Shipment", + "shipmentUncheck": "Снять отметку с отгрузки", "@shipmentUncheck": {}, - "shipmentUncheckDetail": "Mark this shipment as unchecked", + "shipmentUncheckDetail": "Отметить этот груз как непроверенный", "@shipmentUncheckDetail": {}, - "shipmentUpdated": "Shipment Updated", + "shipmentUpdated": "Отгрузка обновлена", "@shipmentUpdated": {}, "shipped": "Отгружено", "@shipped": {}, @@ -1112,7 +1112,7 @@ "@tokenMissingFromResponse": {}, "totalPrice": "Общая стоимость", "@totalPrice": {}, - "trackingNumber": "Tracking Number", + "trackingNumber": "Номер отслеживания", "@trackingNumber": {}, "transfer": "Перемещение", "@transfer": { @@ -1174,7 +1174,7 @@ "@viewSupplierPart": {}, "website": "Сайт", "@website": {}, - "yes": "Yes", + "yes": "Да", "@yes": {}, "price": "Цена", "@price": {}, From 346b1a150ffc24cddd9131b2d944f6994aa5c472 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 28 Nov 2025 23:53:10 +1100 Subject: [PATCH 03/17] Attachments refactor (#737) * refactor attachment code into its own file * Add getters * Remove custom models for each type of attachment * Refactor existing widgets * Fix double camera open bug * Remove dead code * Remove unused imports * Refactor common code * format * Update release notes --- assets/release_notes.md | 5 + lib/inventree/attachment.dart | 176 ++++++++++++++++++++ lib/inventree/company.dart | 25 --- lib/inventree/model.dart | 170 ------------------- lib/inventree/part.dart | 25 --- lib/inventree/purchase_order.dart | 25 --- lib/inventree/sales_order.dart | 47 +----- lib/inventree/stock.dart | 25 --- lib/widget/attachment_widget.dart | 92 ++++++---- lib/widget/company/company_detail.dart | 49 +++--- lib/widget/order/purchase_order_detail.dart | 58 +++---- lib/widget/order/sales_order_detail.dart | 58 +++---- lib/widget/order/so_shipment_detail.dart | 49 +++--- lib/widget/part/part_detail.dart | 47 +++--- lib/widget/stock/stock_detail.dart | 49 +++--- 15 files changed, 381 insertions(+), 519 deletions(-) create mode 100644 lib/inventree/attachment.dart diff --git a/assets/release_notes.md b/assets/release_notes.md index 17fd96d..cbde004 100644 --- a/assets/release_notes.md +++ b/assets/release_notes.md @@ -1,3 +1,8 @@ +### x.xx.x - Month Year +--- + +- Fixes bug which launched camera twice when uploading an attachment + ### 0.21.1 - November 2025 --- diff --git a/lib/inventree/attachment.dart b/lib/inventree/attachment.dart new file mode 100644 index 0000000..3f1b913 --- /dev/null +++ b/lib/inventree/attachment.dart @@ -0,0 +1,176 @@ +import "dart:io"; + +import "package:flutter/cupertino.dart"; +import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; +import "package:inventree/api.dart"; +import "package:inventree/inventree/model.dart"; +import "package:inventree/inventree/sentry.dart"; +import "package:inventree/l10.dart"; +import "package:inventree/widget/fields.dart"; +import "package:inventree/widget/snacks.dart"; +import "package:path/path.dart" as path; + +class InvenTreeAttachment extends InvenTreeModel { + // Class representing an "attachment" file + InvenTreeAttachment() : super(); + + InvenTreeAttachment.fromJson(Map json) + : super.fromJson(json); + + @override + InvenTreeAttachment createFromJson(Map json) => + InvenTreeAttachment.fromJson(json); + + @override + String get URL => "attachment/"; + + @override + Map> formFields() { + Map> fields = {"link": {}, "comment": {}}; + + if (!hasLink) { + fields.remove("link"); + } + + return fields; + } + + // The model type of the instance this attachment is associated with + String get modelType => getString("model_type"); + + // The ID of the instance this attachment is associated with + int get modelId => getInt("model_id"); + + String get attachment => getString("attachment"); + + bool get hasAttachment => attachment.isNotEmpty; + + // Return the filename of the attachment + String get filename { + return attachment.split("/").last; + } + + IconData get icon { + String fn = filename.toLowerCase(); + + if (fn.endsWith(".pdf")) { + return TablerIcons.file_type_pdf; + } else if (fn.endsWith(".csv")) { + return TablerIcons.file_type_csv; + } else if (fn.endsWith(".doc") || fn.endsWith(".docx")) { + return TablerIcons.file_type_doc; + } else if (fn.endsWith(".xls") || fn.endsWith(".xlsx")) { + return TablerIcons.file_type_xls; + } + + // Image formats + final List img_formats = [".png", ".jpg", ".gif", ".bmp", ".svg"]; + + for (String fmt in img_formats) { + if (fn.endsWith(fmt)) { + return TablerIcons.file_type_jpg; + } + } + + return TablerIcons.file; + } + + String get comment => getString("comment"); + + DateTime? get uploadDate { + if (jsondata.containsKey("upload_date")) { + return DateTime.tryParse((jsondata["upload_date"] ?? "") as String); + } else { + return null; + } + } + + // Return a count of how many attachments exist against the specified model ID + Future countAttachments(String modelType, int modelId) async { + Map filters = {}; + + if (!api.supportsModernAttachments) { + return 0; + } + + filters["model_type"] = modelType; + filters["model_id"] = modelId.toString(); + + return count(filters: filters); + } + + Future uploadAttachment( + File attachment, + String modelType, + int modelId, { + String comment = "", + Map fields = const {}, + }) async { + // Ensure that the correct reference field is set + Map data = Map.from(fields); + + String url = URL; + + if (comment.isNotEmpty) { + data["comment"] = comment; + } + + data["model_type"] = modelType; + data["model_id"] = modelId.toString(); + + final APIResponse response = await InvenTreeAPI().uploadFile( + url, + attachment, + method: "POST", + name: "attachment", + fields: data, + ); + + return response.successful(); + } + + Future uploadImage( + String modelType, + int modelId, { + String prefix = "InvenTree", + }) async { + bool result = false; + + await FilePickerDialog.pickImageFromCamera().then((File? file) { + if (file != null) { + String dir = path.dirname(file.path); + String ext = path.extension(file.path); + String now = DateTime.now().toIso8601String().replaceAll(":", "-"); + + // Rename the file with a unique name + String filename = "${dir}/${prefix}_image_${now}${ext}"; + + try { + return file.rename(filename).then((File renamed) { + return uploadAttachment(renamed, modelType, modelId).then(( + success, + ) { + result = success; + showSnackIcon( + result ? L10().imageUploadSuccess : L10().imageUploadFailure, + success: result, + ); + }); + }); + } catch (error, stackTrace) { + sentryReportError("uploadImage", error, stackTrace); + showSnackIcon(L10().imageUploadFailure, success: false); + } + } + }); + + return result; + } + + /* + * Download this attachment file + */ + Future downloadAttachment() async { + await InvenTreeAPI().downloadFile(attachment); + } +} diff --git a/lib/inventree/company.dart b/lib/inventree/company.dart index a2a3f21..90ed77c 100644 --- a/lib/inventree/company.dart +++ b/lib/inventree/company.dart @@ -111,31 +111,6 @@ class InvenTreeCompany extends InvenTreeModel { InvenTreeCompany.fromJson(json); } -/* - * Class representing an attachment file against a Company object - */ -class InvenTreeCompanyAttachment extends InvenTreeAttachment { - InvenTreeCompanyAttachment() : super(); - - InvenTreeCompanyAttachment.fromJson(Map json) - : super.fromJson(json); - - @override - String get REFERENCE_FIELD => "company"; - - @override - String get REF_MODEL_TYPE => "company"; - - @override - String get URL => InvenTreeAPI().supportsModernAttachments - ? "attachment/" - : "company/attachment/"; - - @override - InvenTreeModel createFromJson(Map json) => - InvenTreeCompanyAttachment.fromJson(json); -} - /* * The InvenTreeSupplierPart class represents the SupplierPart model in the InvenTree database */ diff --git a/lib/inventree/model.dart b/lib/inventree/model.dart index e08a053..f87b2de 100644 --- a/lib/inventree/model.dart +++ b/lib/inventree/model.dart @@ -1,5 +1,4 @@ import "dart:async"; -import "dart:io"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:flutter/material.dart"; @@ -15,7 +14,6 @@ import "package:inventree/helpers.dart"; import "package:inventree/inventree/sentry.dart"; import "package:inventree/widget/dialogs.dart"; -import "package:inventree/widget/fields.dart"; // Paginated response object class InvenTreePageResponse { @@ -934,171 +932,3 @@ class InvenTreeUserSetting extends InvenTreeGlobalSetting { @override String get URL => "settings/user/"; } - -class InvenTreeAttachment extends InvenTreeModel { - // Class representing an "attachment" file - InvenTreeAttachment() : super(); - - InvenTreeAttachment.fromJson(Map json) - : super.fromJson(json); - - @override - String get URL => "attachment/"; - - @override - Map> formFields() { - Map> fields = {"link": {}, "comment": {}}; - - if (!hasLink) { - fields.remove("link"); - } - - return fields; - } - - // Override this reference field for any subclasses - // Note: This is used for the *legacy* attachment API - String get REFERENCE_FIELD => ""; - - // Override this reference field for any subclasses - // Note: This is used for the *modern* attachment API - String get REF_MODEL_TYPE => ""; - - String get attachment => getString("attachment"); - - bool get hasAttachment => attachment.isNotEmpty; - - // Return the filename of the attachment - String get filename { - return attachment.split("/").last; - } - - IconData get icon { - String fn = filename.toLowerCase(); - - if (fn.endsWith(".pdf")) { - return TablerIcons.file_type_pdf; - } else if (fn.endsWith(".csv")) { - return TablerIcons.file_type_csv; - } else if (fn.endsWith(".doc") || fn.endsWith(".docx")) { - return TablerIcons.file_type_doc; - } else if (fn.endsWith(".xls") || fn.endsWith(".xlsx")) { - return TablerIcons.file_type_xls; - } - - // Image formats - final List img_formats = [".png", ".jpg", ".gif", ".bmp", ".svg"]; - - for (String fmt in img_formats) { - if (fn.endsWith(fmt)) { - return TablerIcons.file_type_jpg; - } - } - - return TablerIcons.file; - } - - String get comment => getString("comment"); - - DateTime? get uploadDate { - if (jsondata.containsKey("upload_date")) { - return DateTime.tryParse((jsondata["upload_date"] ?? "") as String); - } else { - return null; - } - } - - // Return a count of how many attachments exist against the specified model ID - Future countAttachments(int modelId) { - Map filters = {}; - - if (InvenTreeAPI().supportsModernAttachments) { - filters["model_type"] = REF_MODEL_TYPE; - filters["model_id"] = modelId.toString(); - } else { - filters[REFERENCE_FIELD] = modelId.toString(); - } - - return count(filters: filters); - } - - Future uploadAttachment( - File attachment, - int modelId, { - String comment = "", - Map fields = const {}, - }) async { - // Ensure that the correct reference field is set - Map data = Map.from(fields); - - String url = URL; - - if (comment.isNotEmpty) { - data["comment"] = comment; - } - - if (InvenTreeAPI().supportsModernAttachments) { - url = "attachment/"; - data["model_id"] = modelId.toString(); - data["model_type"] = REF_MODEL_TYPE; - } else { - if (REFERENCE_FIELD.isEmpty) { - sentryReportMessage( - "uploadAttachment called with empty 'REFERENCE_FIELD'", - ); - return false; - } - - data[REFERENCE_FIELD] = modelId.toString(); - } - - final APIResponse response = await InvenTreeAPI().uploadFile( - url, - attachment, - method: "POST", - name: "attachment", - fields: data, - ); - - return response.successful(); - } - - Future uploadImage(int modelId, {String prefix = "InvenTree"}) async { - bool result = false; - - await FilePickerDialog.pickImageFromCamera().then((File? file) { - if (file != null) { - String dir = path.dirname(file.path); - String ext = path.extension(file.path); - String now = DateTime.now().toIso8601String().replaceAll(":", "-"); - - // Rename the file with a unique name - String filename = "${dir}/${prefix}_image_${now}${ext}"; - - try { - file.rename(filename).then((File renamed) { - uploadAttachment(renamed, modelId).then((success) { - result = success; - showSnackIcon( - result ? L10().imageUploadSuccess : L10().imageUploadFailure, - success: result, - ); - }); - }); - } catch (error, stackTrace) { - sentryReportError("uploadImage", error, stackTrace); - showSnackIcon(L10().imageUploadFailure, success: false); - } - } - }); - - return result; - } - - /* - * Download this attachment file - */ - Future downloadAttachment() async { - await InvenTreeAPI().downloadFile(attachment); - } -} diff --git a/lib/inventree/part.dart b/lib/inventree/part.dart index 23e306c..fc52399 100644 --- a/lib/inventree/part.dart +++ b/lib/inventree/part.dart @@ -547,28 +547,3 @@ class InvenTreePartPricing extends InvenTreeModel { double? get saleHistoryMin => getDoubleOrNull("sale_history_min"); double? get saleHistoryMax => getDoubleOrNull("sale_history_max"); } - -/* - * Class representing an attachment file against a Part object - */ -class InvenTreePartAttachment extends InvenTreeAttachment { - InvenTreePartAttachment() : super(); - - InvenTreePartAttachment.fromJson(Map json) - : super.fromJson(json); - - @override - String get REFERENCE_FIELD => "part"; - - @override - String get REF_MODEL_TYPE => "part"; - - @override - String get URL => InvenTreeAPI().supportsModernAttachments - ? "attachment/" - : "part/attachment/"; - - @override - InvenTreeModel createFromJson(Map json) => - InvenTreePartAttachment.fromJson(json); -} diff --git a/lib/inventree/purchase_order.dart b/lib/inventree/purchase_order.dart index 59874dc..65af361 100644 --- a/lib/inventree/purchase_order.dart +++ b/lib/inventree/purchase_order.dart @@ -336,28 +336,3 @@ class InvenTreePOExtraLineItem extends InvenTreeExtraLineItem { ); } } - -/* - * Class representing an attachment file against a PurchaseOrder object - */ -class InvenTreePurchaseOrderAttachment extends InvenTreeAttachment { - InvenTreePurchaseOrderAttachment() : super(); - - InvenTreePurchaseOrderAttachment.fromJson(Map json) - : super.fromJson(json); - - @override - String get REFERENCE_FIELD => "order"; - - @override - String get REF_MODEL_TYPE => "purchaseorder"; - - @override - String get URL => InvenTreeAPI().supportsModernAttachments - ? "attachment/" - : "order/po/attachment/"; - - @override - InvenTreeModel createFromJson(Map json) => - InvenTreePurchaseOrderAttachment.fromJson(json); -} diff --git a/lib/inventree/sales_order.dart b/lib/inventree/sales_order.dart index 8b661f4..77c3469 100644 --- a/lib/inventree/sales_order.dart +++ b/lib/inventree/sales_order.dart @@ -334,7 +334,7 @@ class InvenTreeSalesOrderShipment extends InvenTreeModel { /* * Class representing an allocation of stock against a SalesOrderShipment */ -class InvenTreeSalesOrderAllocation extends InvenTreeAttachment { +class InvenTreeSalesOrderAllocation extends InvenTreeModel { InvenTreeSalesOrderAllocation() : super(); InvenTreeSalesOrderAllocation.fromJson(Map json) @@ -428,48 +428,3 @@ class InvenTreeSalesOrderAllocation extends InvenTreeAttachment { } } } - -/* - * Class representing an attachment file against a SalesOrder object - */ -class InvenTreeSalesOrderAttachment extends InvenTreeAttachment { - InvenTreeSalesOrderAttachment() : super(); - - InvenTreeSalesOrderAttachment.fromJson(Map json) - : super.fromJson(json); - - @override - InvenTreeModel createFromJson(Map json) => - InvenTreeSalesOrderAttachment.fromJson(json); - - @override - String get REFERENCE_FIELD => "order"; - - @override - String get REF_MODEL_TYPE => "salesorder"; - - @override - String get URL => InvenTreeAPI().supportsModernAttachments - ? "attachment/" - : "order/so/attachment/"; -} - -class InvenTreeSalesOrderShipmentAttachment extends InvenTreeAttachment { - InvenTreeSalesOrderShipmentAttachment() : super(); - - InvenTreeSalesOrderShipmentAttachment.fromJson(Map json) - : super.fromJson(json); - - @override - InvenTreeModel createFromJson(Map json) => - InvenTreeSalesOrderShipmentAttachment.fromJson(json); - - @override - String get REFERENCE_FIELD => "shipment"; - - @override - String get REF_MODEL_TYPE => "salesordershipment"; - - @override - String get URL => "attachment/"; -} diff --git a/lib/inventree/stock.dart b/lib/inventree/stock.dart index 1a45e73..4b5bf3b 100644 --- a/lib/inventree/stock.dart +++ b/lib/inventree/stock.dart @@ -575,31 +575,6 @@ class InvenTreeStockItem extends InvenTreeModel { } } -/* - * Class representing an attachment file against a StockItem object - */ -class InvenTreeStockItemAttachment extends InvenTreeAttachment { - InvenTreeStockItemAttachment() : super(); - - InvenTreeStockItemAttachment.fromJson(Map json) - : super.fromJson(json); - - @override - String get REFERENCE_FIELD => "stock_item"; - - @override - String get REF_MODEL_TYPE => "stockitem"; - - @override - String get URL => InvenTreeAPI().supportsModernAttachments - ? "attachment/" - : "stock/attachment/"; - - @override - InvenTreeModel createFromJson(Map json) => - InvenTreeStockItemAttachment.fromJson(json); -} - class InvenTreeStockLocation extends InvenTreeModel { InvenTreeStockLocation() : super(); diff --git a/lib/widget/attachment_widget.dart b/lib/widget/attachment_widget.dart index b66462f..721909d 100644 --- a/lib/widget/attachment_widget.dart +++ b/lib/widget/attachment_widget.dart @@ -2,14 +2,13 @@ import "dart:io"; import "package:flutter/material.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; +import "package:inventree/api.dart"; +import "package:inventree/inventree/attachment.dart"; +import "package:inventree/widget/link_icon.dart"; import "package:one_context/one_context.dart"; -import "package:inventree/api.dart"; import "package:inventree/l10.dart"; import "package:inventree/app_colors.dart"; - -import "package:inventree/inventree/model.dart"; - import "package:inventree/widget/fields.dart"; import "package:inventree/widget/progress.dart"; import "package:inventree/widget/snacks.dart"; @@ -23,13 +22,13 @@ import "package:inventree/widget/refreshable_state.dart"; */ class AttachmentWidget extends StatefulWidget { const AttachmentWidget( - this.attachmentClass, + this.modelType, this.modelId, this.imagePrefix, this.hasUploadPermission, ) : super(); - final InvenTreeAttachment attachmentClass; + final String modelType; final int modelId; final bool hasUploadPermission; final String imagePrefix; @@ -54,15 +53,15 @@ class _AttachmentWidgetState extends RefreshableState { IconButton( icon: Icon(TablerIcons.camera), onPressed: () async { - widget.attachmentClass.uploadImage( - widget.modelId, - prefix: widget.imagePrefix, - ); - FilePickerDialog.pickImageFromCamera().then((File? file) { - upload(context, file).then((_) { - refresh(context); - }); - }); + InvenTreeAttachment() + .uploadImage( + widget.modelType, + widget.modelId, + prefix: widget.imagePrefix, + ) + .then((_) { + refresh(context); + }); }, ), IconButton( @@ -83,8 +82,9 @@ class _AttachmentWidgetState extends RefreshableState { showLoadingOverlay(); - final bool result = await widget.attachmentClass.uploadAttachment( + final bool result = await InvenTreeAttachment().uploadAttachment( file, + widget.modelType, widget.modelId, ); @@ -168,25 +168,24 @@ class _AttachmentWidgetState extends RefreshableState { Future request(BuildContext context) async { Map filters = {}; - if (InvenTreeAPI().supportsModernAttachments) { - filters["model_type"] = widget.attachmentClass.REF_MODEL_TYPE; - filters["model_id"] = widget.modelId.toString(); - } else { - filters[widget.attachmentClass.REFERENCE_FIELD] = widget.modelId - .toString(); - } + filters["model_type"] = widget.modelType; + filters["model_id"] = widget.modelId.toString(); - await widget.attachmentClass.list(filters: filters).then((var results) { - attachments.clear(); + List _attachments = []; + InvenTreeAttachment().list(filters: filters).then((var results) { for (var result in results) { if (result is InvenTreeAttachment) { - attachments.add(result); + _attachments.add(result); } } - }); - setState(() {}); + if (mounted) { + setState(() { + attachments = _attachments; + }); + } + }); } @override @@ -240,3 +239,40 @@ class _AttachmentWidgetState extends RefreshableState { return tiles; } } + +/* + * Return a ListTile to display attachments for the specified model + */ +ListTile? ShowAttachmentsItem( + BuildContext context, + String modelType, + int modelId, + String imagePrefix, + int attachmentCount, + bool hasUploadPermission, +) { + if (!InvenTreeAPI().supportsModernAttachments) { + return null; + } + + return ListTile( + title: Text(L10().attachments), + leading: Icon(TablerIcons.file, color: COLOR_ACTION), + trailing: LinkIcon( + text: attachmentCount > 0 ? attachmentCount.toString() : null, + ), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => AttachmentWidget( + modelType, + modelId, + imagePrefix, + hasUploadPermission, + ), + ), + ); + }, + ); +} diff --git a/lib/widget/company/company_detail.dart b/lib/widget/company/company_detail.dart index 5d06e58..8947104 100644 --- a/lib/widget/company/company_detail.dart +++ b/lib/widget/company/company_detail.dart @@ -1,6 +1,7 @@ import "package:flutter/material.dart"; import "package:flutter_speed_dial/flutter_speed_dial.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; +import "package:inventree/inventree/attachment.dart"; import "package:inventree/l10.dart"; import "package:inventree/api.dart"; @@ -184,15 +185,15 @@ class _CompanyDetailState extends RefreshableState { } }); - InvenTreeCompanyAttachment().countAttachments(widget.company.pk).then(( - value, - ) { - if (mounted) { - setState(() { - attachmentCount = value; + InvenTreeAttachment() + .countAttachments(InvenTreeCompany.MODEL_TYPE, widget.company.pk) + .then((value) { + if (mounted) { + setState(() { + attachmentCount = value; + }); + } }); - } - }); } Future editCompany(BuildContext context) async { @@ -393,29 +394,19 @@ class _CompanyDetailState extends RefreshableState { ); } - tiles.add( - ListTile( - title: Text(L10().attachments), - leading: Icon(TablerIcons.file, color: COLOR_ACTION), - trailing: LinkIcon( - text: attachmentCount > 0 ? attachmentCount.toString() : null, - ), - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => AttachmentWidget( - InvenTreeCompanyAttachment(), - widget.company.pk, - widget.company.name, - InvenTreeCompany().canEdit, - ), - ), - ); - }, - ), + ListTile? attachmentTile = ShowAttachmentsItem( + context, + InvenTreeCompany.MODEL_TYPE, + widget.company.pk, + widget.company.name, + attachmentCount, + widget.company.canEdit, ); + if (attachmentTile != null) { + tiles.add(attachmentTile); + } + return tiles; } } diff --git a/lib/widget/order/purchase_order_detail.dart b/lib/widget/order/purchase_order_detail.dart index 4201cd3..0829e06 100644 --- a/lib/widget/order/purchase_order_detail.dart +++ b/lib/widget/order/purchase_order_detail.dart @@ -7,6 +7,7 @@ import "package:inventree/app_colors.dart"; import "package:inventree/barcode/barcode.dart"; import "package:inventree/barcode/purchase_order.dart"; import "package:inventree/helpers.dart"; +import "package:inventree/inventree/attachment.dart"; import "package:inventree/l10.dart"; import "package:inventree/inventree/model.dart"; @@ -174,8 +175,12 @@ class _PurchaseOrderDetailState /// Upload an image against the current PurchaseOrder Future _uploadImage(BuildContext context) async { - InvenTreePurchaseOrderAttachment() - .uploadImage(widget.order.pk, prefix: widget.order.reference) + InvenTreeAttachment() + .uploadImage( + InvenTreePurchaseOrder.MODEL_TYPE, + widget.order.pk, + prefix: widget.order.reference, + ) .then((result) => refresh(context)); } @@ -295,15 +300,15 @@ class _PurchaseOrderDetailState } } - InvenTreePurchaseOrderAttachment().countAttachments(widget.order.pk).then(( - int value, - ) { - if (mounted) { - setState(() { - attachmentCount = value; + InvenTreeAttachment() + .countAttachments(InvenTreePurchaseOrder.MODEL_TYPE, widget.order.pk) + .then((int value) { + if (mounted) { + setState(() { + attachmentCount = value; + }); + } }); - } - }); if (api.supportsPurchaseOrderDestination && widget.order.destinationId > 0) { @@ -565,30 +570,19 @@ class _PurchaseOrderDetailState ), ); - // Attachments - tiles.add( - ListTile( - title: Text(L10().attachments), - leading: Icon(TablerIcons.file, color: COLOR_ACTION), - trailing: LinkIcon( - text: attachmentCount > 0 ? attachmentCount.toString() : null, - ), - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => AttachmentWidget( - InvenTreePurchaseOrderAttachment(), - widget.order.pk, - widget.order.reference, - widget.order.canEdit, - ), - ), - ); - }, - ), + ListTile? attachmentTile = ShowAttachmentsItem( + context, + InvenTreePurchaseOrder.MODEL_TYPE, + widget.order.pk, + widget.order.reference, + attachmentCount, + widget.order.canEdit, ); + if (attachmentTile != null) { + tiles.add(attachmentTile); + } + return tiles; } diff --git a/lib/widget/order/sales_order_detail.dart b/lib/widget/order/sales_order_detail.dart index ec18561..30692f2 100644 --- a/lib/widget/order/sales_order_detail.dart +++ b/lib/widget/order/sales_order_detail.dart @@ -3,6 +3,7 @@ import "package:flutter_speed_dial/flutter_speed_dial.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:inventree/barcode/barcode.dart"; import "package:inventree/barcode/sales_order.dart"; +import "package:inventree/inventree/attachment.dart"; import "package:inventree/inventree/company.dart"; import "package:inventree/inventree/sales_order.dart"; import "package:inventree/preferences.dart"; @@ -108,8 +109,12 @@ class _SalesOrderDetailState extends RefreshableState { /// Upload an image for this order Future _uploadImage(BuildContext context) async { - InvenTreeSalesOrderAttachment() - .uploadImage(widget.order.pk, prefix: widget.order.reference) + InvenTreeAttachment() + .uploadImage( + InvenTreeSalesOrder.MODEL_TYPE, + widget.order.pk, + prefix: widget.order.reference, + ) .then((result) => refresh(context)); } @@ -266,15 +271,15 @@ class _SalesOrderDetailState extends RefreshableState { true, ); - InvenTreeSalesOrderAttachment().countAttachments(widget.order.pk).then(( - int value, - ) { - if (mounted) { - setState(() { - attachmentCount = value; + InvenTreeAttachment() + .countAttachments(InvenTreeSalesOrder.MODEL_TYPE, widget.order.pk) + .then((int value) { + if (mounted) { + setState(() { + attachmentCount = value; + }); + } }); - } - }); // Count number of "extra line items" against this order InvenTreeSOExtraLineItem() @@ -492,30 +497,19 @@ class _SalesOrderDetailState extends RefreshableState { ), ); - // Attachments - tiles.add( - ListTile( - title: Text(L10().attachments), - leading: Icon(TablerIcons.file, color: COLOR_ACTION), - trailing: LinkIcon( - text: attachmentCount > 0 ? attachmentCount.toString() : null, - ), - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => AttachmentWidget( - InvenTreeSalesOrderAttachment(), - widget.order.pk, - widget.order.reference, - widget.order.canEdit, - ), - ), - ); - }, - ), + ListTile? attachmentTile = ShowAttachmentsItem( + context, + InvenTreeSalesOrder.MODEL_TYPE, + widget.order.pk, + widget.order.reference, + attachmentCount, + widget.order.canEdit, ); + if (attachmentTile != null) { + tiles.add(attachmentTile); + } + return tiles; } diff --git a/lib/widget/order/so_shipment_detail.dart b/lib/widget/order/so_shipment_detail.dart index 9116fb7..34984df 100644 --- a/lib/widget/order/so_shipment_detail.dart +++ b/lib/widget/order/so_shipment_detail.dart @@ -8,6 +8,7 @@ import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:inventree/api.dart"; import "package:inventree/api_form.dart"; import "package:inventree/app_colors.dart"; +import "package:inventree/inventree/attachment.dart"; import "package:inventree/inventree/sales_order.dart"; import "package:inventree/l10.dart"; import "package:inventree/preferences.dart"; @@ -91,8 +92,11 @@ class _SOShipmentDetailWidgetState }); } - InvenTreeSalesOrderShipmentAttachment() - .countAttachments(widget.shipment.pk) + InvenTreeAttachment() + .countAttachments( + InvenTreeSalesOrderShipment.MODEL_TYPE, + widget.shipment.pk, + ) .then((int value) { if (mounted) { setState(() { @@ -104,8 +108,12 @@ class _SOShipmentDetailWidgetState /// Upload an image for this shipment Future _uploadImage(BuildContext context) async { - InvenTreeSalesOrderShipmentAttachment() - .uploadImage(widget.shipment.pk, prefix: widget.shipment.reference) + InvenTreeAttachment() + .uploadImage( + InvenTreeSalesOrderShipment.MODEL_TYPE, + widget.shipment.pk, + prefix: widget.shipment.reference, + ) .then((result) => refresh(context)); } @@ -339,30 +347,19 @@ class _SOShipmentDetailWidgetState ), ); - // Attachments - tiles.add( - ListTile( - title: Text(L10().attachments), - leading: Icon(TablerIcons.file, color: COLOR_ACTION), - trailing: LinkIcon( - text: attachmentCount > 0 ? attachmentCount.toString() : null, - ), - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => AttachmentWidget( - InvenTreeSalesOrderShipmentAttachment(), - widget.shipment.pk, - widget.shipment.reference, - widget.shipment.canEdit, - ), - ), - ); - }, - ), + ListTile? attachmentTile = ShowAttachmentsItem( + context, + InvenTreeSalesOrderShipment.MODEL_TYPE, + widget.shipment.pk, + widget.shipment.reference, + attachmentCount, + widget.shipment.canEdit, ); + if (attachmentTile != null) { + tiles.add(attachmentTile); + } + return tiles; } diff --git a/lib/widget/part/part_detail.dart b/lib/widget/part/part_detail.dart index 98cf173..30b697c 100644 --- a/lib/widget/part/part_detail.dart +++ b/lib/widget/part/part_detail.dart @@ -4,6 +4,7 @@ import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:inventree/app_colors.dart"; import "package:inventree/barcode/barcode.dart"; +import "package:inventree/inventree/attachment.dart"; import "package:inventree/l10.dart"; import "package:inventree/helpers.dart"; @@ -212,13 +213,15 @@ class _PartDisplayState extends RefreshableState { } // Request the number of attachments - InvenTreePartAttachment().countAttachments(part.pk).then((int value) { - if (mounted) { - setState(() { - attachmentCount = value; + InvenTreeAttachment() + .countAttachments(InvenTreePart.MODEL_TYPE, part.pk) + .then((int value) { + if (mounted) { + setState(() { + attachmentCount = value; + }); + } }); - } - }); // If show pricing information? if (showPricing) { @@ -596,29 +599,19 @@ class _PartDisplayState extends RefreshableState { ), ); - tiles.add( - ListTile( - title: Text(L10().attachments), - leading: Icon(TablerIcons.file, color: COLOR_ACTION), - trailing: LinkIcon( - text: attachmentCount > 0 ? attachmentCount.toString() : null, - ), - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => AttachmentWidget( - InvenTreePartAttachment(), - part.pk, - L10().part, - part.canEdit, - ), - ), - ); - }, - ), + ListTile? attachmentTile = ShowAttachmentsItem( + context, + InvenTreePart.MODEL_TYPE, + part.pk, + L10().part, + attachmentCount, + part.canEdit, ); + if (attachmentTile != null) { + tiles.add(attachmentTile); + } + return tiles; } diff --git a/lib/widget/stock/stock_detail.dart b/lib/widget/stock/stock_detail.dart index db295ca..282a962 100644 --- a/lib/widget/stock/stock_detail.dart +++ b/lib/widget/stock/stock_detail.dart @@ -7,6 +7,7 @@ import "package:inventree/app_colors.dart"; import "package:inventree/barcode/barcode.dart"; import "package:inventree/barcode/stock.dart"; import "package:inventree/helpers.dart"; +import "package:inventree/inventree/attachment.dart"; import "package:inventree/inventree/sales_order.dart"; import "package:inventree/l10.dart"; import "package:inventree/api.dart"; @@ -255,15 +256,15 @@ class _StockItemDisplayState extends RefreshableState { } // Request the number of attachments - InvenTreeStockItemAttachment().countAttachments(widget.item.pk).then(( - int value, - ) { - if (mounted) { - setState(() { - attachmentCount = value; + InvenTreeAttachment() + .countAttachments(InvenTreeStockItem.MODEL_TYPE, widget.item.pk) + .then((int value) { + if (mounted) { + setState(() { + attachmentCount = value; + }); + } }); - } - }); // Request SalesOrder information if (widget.item.hasSalesOrder) { @@ -837,29 +838,19 @@ class _StockItemDisplayState extends RefreshableState { ), ); - tiles.add( - ListTile( - title: Text(L10().attachments), - leading: Icon(TablerIcons.file, color: COLOR_ACTION), - trailing: LinkIcon( - text: attachmentCount > 0 ? attachmentCount.toString() : null, - ), - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => AttachmentWidget( - InvenTreeStockItemAttachment(), - widget.item.pk, - L10().stockItem, - widget.item.canEdit, - ), - ), - ); - }, - ), + ListTile? attachmentTile = ShowAttachmentsItem( + context, + InvenTreeStockItem.MODEL_TYPE, + widget.item.pk, + L10().stockItem, + attachmentCount, + widget.item.canEdit, ); + if (attachmentTile != null) { + tiles.add(attachmentTile); + } + return tiles; } } From 864c3eea76c2303e285b043e8a58c363b32a6d6d Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 4 Dec 2025 18:34:05 +1100 Subject: [PATCH 04/17] Parameters refactor (#738) * refactor attachment code into its own file * Add getters * Remove custom models for each type of attachment * Refactor existing widgets * Fix double camera open bug * Add check for modern parameter API * Add generic parameter type * Remove old code * Remove dead code * Refactor previous widget * Remove unused imports * Refactor common code * format * Update release notes * Helper func to render parameters list tile * Display parameters on part page * parameters for company * Supplier more model types: - ManufacturerPart - SupplierPart - PurchaseOrder - SalesOrder * dart format * Fix image prefix * Remove unused import * Adjust API version --- lib/api.dart | 4 + lib/inventree/parameter.dart | 77 ++++++++++++++++++ lib/inventree/part.dart | 62 --------------- lib/preferences.dart | 1 - lib/settings/part_settings.dart | 22 ------ lib/widget/company/company_detail.dart | 25 ++++++ .../company/manufacturer_part_detail.dart | 64 +++++++++++++-- lib/widget/company/supplier_part_detail.dart | 59 ++++++++++++++ lib/widget/order/purchase_order_detail.dart | 25 ++++++ lib/widget/order/sales_order_detail.dart | 25 ++++++ ...eter_widget.dart => parameter_widget.dart} | 78 +++++++++++++++---- lib/widget/part/part_detail.dart | 65 +++++++++------- 12 files changed, 378 insertions(+), 129 deletions(-) create mode 100644 lib/inventree/parameter.dart rename lib/widget/{part/part_parameter_widget.dart => parameter_widget.dart} (58%) diff --git a/lib/api.dart b/lib/api.dart index 1d24b39..61a6379 100644 --- a/lib/api.dart +++ b/lib/api.dart @@ -353,6 +353,10 @@ class InvenTreeAPI { // Supports separate search against "supplier" / "customer" / "manufacturer" bool get supportsSplitCompanySearch => apiVersion >= 315; + // Does the server support the "modern" (consolidated) parameter API? + // Ref: https://github.com/inventree/InvenTree/pull/10699 + bool get supportsModernParameters => apiVersion >= 429; + // Cached list of plugins (refreshed when we connect to the server) List _plugins = []; diff --git a/lib/inventree/parameter.dart b/lib/inventree/parameter.dart new file mode 100644 index 0000000..22006d7 --- /dev/null +++ b/lib/inventree/parameter.dart @@ -0,0 +1,77 @@ +import "package:inventree/inventree/model.dart"; + +class InvenTreeParameter extends InvenTreeModel { + InvenTreeParameter() : super(); + + InvenTreeParameter.fromJson(Map json) : super.fromJson(json); + + @override + InvenTreeParameter createFromJson(Map json) => + InvenTreeParameter.fromJson(json); + + @override + String get URL => "parameter/"; + + @override + Map> formFields() { + Map> fields = { + "header": { + "type": "string", + "read_only": true, + "label": name, + "help_text": description, + "value": "", + }, + "data": {"type": "string"}, + "note": {}, + }; + + return fields; + } + + @override + String get name => getString("name", subKey: "template_detail"); + + @override + String get description => getString("description", subKey: "template_detail"); + + String get value => getString("data"); + + String get valueString { + String v = value; + + if (units.isNotEmpty) { + v += " "; + v += units; + } + + return v; + } + + bool get as_bool => value.toLowerCase() == "true"; + + String get units => getString("units", subKey: "template_detail"); + + bool get is_checkbox => + getBool("checkbox", subKey: "template_detail", backup: false); + + // The model type of the instance this attachment is associated with + String get modelType => getString("model_type"); + + // The ID of the instance this attachment is associated with + int get modelId => getInt("model_id"); + + // Return a count of how many parameters exist against the specified model ID + Future countParameters(String modelType, int modelId) async { + Map filters = {}; + + if (!api.supportsModernParameters) { + return 0; + } + + filters["model_type"] = modelType; + filters["model_id"] = modelId.toString(); + + return count(filters: filters); + } +} diff --git a/lib/inventree/part.dart b/lib/inventree/part.dart index fc52399..033fae9 100644 --- a/lib/inventree/part.dart +++ b/lib/inventree/part.dart @@ -132,68 +132,6 @@ class InvenTreePartTestTemplate extends InvenTreeModel { } } -/* - Class representing the PartParameter database model - */ -class InvenTreePartParameter extends InvenTreeModel { - InvenTreePartParameter() : super(); - - InvenTreePartParameter.fromJson(Map json) - : super.fromJson(json); - - @override - String get URL => "part/parameter/"; - - @override - List get rolesRequired => ["part"]; - - @override - InvenTreeModel createFromJson(Map json) => - InvenTreePartParameter.fromJson(json); - - @override - Map> formFields() { - Map> fields = { - "header": { - "type": "string", - "read_only": true, - "label": name, - "help_text": description, - "value": "", - }, - "data": {"type": "string"}, - }; - - return fields; - } - - @override - String get name => getString("name", subKey: "template_detail"); - - @override - String get description => getString("description", subKey: "template_detail"); - - String get value => getString("data"); - - String get valueString { - String v = value; - - if (units.isNotEmpty) { - v += " "; - v += units; - } - - return v; - } - - bool get as_bool => value.toLowerCase() == "true"; - - String get units => getString("units", subKey: "template_detail"); - - bool get is_checkbox => - getBool("checkbox", subKey: "template_detail", backup: false); -} - /* * Class representing the Part database model */ diff --git a/lib/preferences.dart b/lib/preferences.dart index de7bb0f..92eda1f 100644 --- a/lib/preferences.dart +++ b/lib/preferences.dart @@ -32,7 +32,6 @@ const String INV_LABEL_DEFAULT_PRINTER = "defaultLabelPrinter"; const String INV_LABEL_DEFAULT_PLUGIN = "defaultLabelPlugin"; // Part settings -const String INV_PART_SHOW_PARAMETERS = "partShowParameters"; const String INV_PART_SHOW_BOM = "partShowBom"; const String INV_PART_SHOW_PRICING = "partShowPricing"; diff --git a/lib/settings/part_settings.dart b/lib/settings/part_settings.dart index b091931..aa13678 100644 --- a/lib/settings/part_settings.dart +++ b/lib/settings/part_settings.dart @@ -13,7 +13,6 @@ class InvenTreePartSettingsWidget extends StatefulWidget { class _InvenTreePartSettingsState extends State { _InvenTreePartSettingsState(); - bool partShowParameters = true; bool partShowBom = true; bool partShowPricing = true; bool stockShowHistory = false; @@ -28,10 +27,6 @@ class _InvenTreePartSettingsState extends State { } Future loadSettings() async { - partShowParameters = await InvenTreeSettingsManager().getBool( - INV_PART_SHOW_PARAMETERS, - true, - ); partShowBom = await InvenTreeSettingsManager().getBool( INV_PART_SHOW_BOM, true, @@ -68,23 +63,6 @@ class _InvenTreePartSettingsState extends State { body: Container( child: ListView( children: [ - ListTile( - title: Text(L10().parameters), - subtitle: Text(L10().parametersSettingDetail), - leading: Icon(TablerIcons.list), - trailing: Switch( - value: partShowParameters, - onChanged: (bool value) { - InvenTreeSettingsManager().setValue( - INV_PART_SHOW_PARAMETERS, - value, - ); - setState(() { - partShowParameters = value; - }); - }, - ), - ), ListTile( title: Text(L10().bom), subtitle: Text(L10().bomEnable), diff --git a/lib/widget/company/company_detail.dart b/lib/widget/company/company_detail.dart index 8947104..9a6d233 100644 --- a/lib/widget/company/company_detail.dart +++ b/lib/widget/company/company_detail.dart @@ -2,6 +2,7 @@ import "package:flutter/material.dart"; import "package:flutter_speed_dial/flutter_speed_dial.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:inventree/inventree/attachment.dart"; +import "package:inventree/inventree/parameter.dart"; import "package:inventree/l10.dart"; import "package:inventree/api.dart"; @@ -14,6 +15,7 @@ import "package:inventree/widget/attachment_widget.dart"; import "package:inventree/widget/link_icon.dart"; import "package:inventree/widget/order/purchase_order_list.dart"; import "package:inventree/widget/order/sales_order_list.dart"; +import "package:inventree/widget/parameter_widget.dart"; import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/snacks.dart"; import "package:inventree/widget/company/supplier_part_list.dart"; @@ -38,6 +40,7 @@ class _CompanyDetailState extends RefreshableState { int outstandingPurchaseOrders = 0; int outstandingSalesOrders = 0; + int parameterCount = 0; int attachmentCount = 0; @override @@ -185,6 +188,16 @@ class _CompanyDetailState extends RefreshableState { } }); + InvenTreeParameter() + .countParameters(InvenTreeCompany.MODEL_TYPE, widget.company.pk) + .then((value) { + if (mounted) { + setState(() { + parameterCount = value; + }); + } + }); + InvenTreeAttachment() .countAttachments(InvenTreeCompany.MODEL_TYPE, widget.company.pk) .then((value) { @@ -394,6 +407,18 @@ class _CompanyDetailState extends RefreshableState { ); } + ListTile? parameterTile = ShowParametersItem( + context, + InvenTreeCompany.MODEL_TYPE, + widget.company.pk, + parameterCount, + widget.company.canEdit, + ); + + if (parameterTile != null) { + tiles.add(parameterTile); + } + ListTile? attachmentTile = ShowAttachmentsItem( context, InvenTreeCompany.MODEL_TYPE, diff --git a/lib/widget/company/manufacturer_part_detail.dart b/lib/widget/company/manufacturer_part_detail.dart index 9cc6bc2..57a7e48 100644 --- a/lib/widget/company/manufacturer_part_detail.dart +++ b/lib/widget/company/manufacturer_part_detail.dart @@ -1,6 +1,8 @@ import "package:flutter/material.dart"; import "package:flutter_speed_dial/flutter_speed_dial.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; +import "package:inventree/inventree/attachment.dart"; +import "package:inventree/inventree/parameter.dart"; import "package:inventree/l10.dart"; import "package:inventree/api.dart"; @@ -8,6 +10,8 @@ import "package:inventree/app_colors.dart"; import "package:inventree/inventree/company.dart"; import "package:inventree/inventree/part.dart"; +import "package:inventree/widget/attachment_widget.dart"; +import "package:inventree/widget/parameter_widget.dart"; import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/snacks.dart"; @@ -31,6 +35,9 @@ class _ManufacturerPartDisplayState extends RefreshableState { _ManufacturerPartDisplayState(); + int parameterCount = 0; + int attachmentCount = 0; + @override String getAppBarTitle() => L10().manufacturerPart; @@ -42,7 +49,34 @@ class _ManufacturerPartDisplayState if (!result) { Navigator.of(context).pop(); + return; } + + InvenTreeParameter() + .countParameters( + InvenTreeManufacturerPart.MODEL_TYPE, + widget.manufacturerPart.pk, + ) + .then((value) { + if (mounted) { + setState(() { + parameterCount = value; + }); + } + }); + + InvenTreeAttachment() + .countAttachments( + InvenTreeManufacturerPart.MODEL_TYPE, + widget.manufacturerPart.pk, + ) + .then((value) { + if (mounted) { + setState(() { + attachmentCount = value; + }); + } + }); } Future editManufacturerPart(BuildContext context) async { @@ -91,11 +125,6 @@ class _ManufacturerPartDisplayState List getTiles(BuildContext context) { List tiles = []; - if (loading) { - tiles.add(progressIndicator()); - return tiles; - } - // Internal Part tiles.add( ListTile( @@ -174,6 +203,31 @@ class _ManufacturerPartDisplayState ); } + ListTile? parameterTile = ShowParametersItem( + context, + InvenTreeManufacturerPart.MODEL_TYPE, + widget.manufacturerPart.pk, + parameterCount, + widget.manufacturerPart.canEdit, + ); + + if (parameterTile != null) { + tiles.add(parameterTile); + } + + ListTile? attachmentTile = ShowAttachmentsItem( + context, + InvenTreeManufacturerPart.MODEL_TYPE, + widget.manufacturerPart.pk, + widget.manufacturerPart.MPN, + attachmentCount, + widget.manufacturerPart.canEdit, + ); + + if (attachmentTile != null) { + tiles.add(attachmentTile); + } + return tiles; } } diff --git a/lib/widget/company/supplier_part_detail.dart b/lib/widget/company/supplier_part_detail.dart index 77e29ab..ed60748 100644 --- a/lib/widget/company/supplier_part_detail.dart +++ b/lib/widget/company/supplier_part_detail.dart @@ -2,6 +2,9 @@ import "package:flutter/material.dart"; import "package:flutter_speed_dial/flutter_speed_dial.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:inventree/helpers.dart"; +import "package:inventree/inventree/attachment.dart"; +import "package:inventree/inventree/parameter.dart"; +import "package:inventree/widget/attachment_widget.dart"; import "package:inventree/widget/link_icon.dart"; import "package:inventree/app_colors.dart"; @@ -11,6 +14,7 @@ import "package:inventree/barcode/barcode.dart"; import "package:inventree/inventree/part.dart"; import "package:inventree/inventree/company.dart"; +import "package:inventree/widget/parameter_widget.dart"; import "package:inventree/widget/progress.dart"; import "package:inventree/widget/refreshable_state.dart"; @@ -35,6 +39,9 @@ class _SupplierPartDisplayState extends RefreshableState { _SupplierPartDisplayState(); + int parameterCount = 0; + int attachmentCount = 0; + @override String getAppBarTitle() => L10().supplierPart; @@ -97,7 +104,34 @@ class _SupplierPartDisplayState if (!result) { Navigator.of(context).pop(); + return; } + + InvenTreeParameter() + .countParameters( + InvenTreeSupplierPart.MODEL_TYPE, + widget.supplierPart.pk, + ) + .then((value) { + if (mounted) { + setState(() { + parameterCount = value; + }); + } + }); + + InvenTreeAttachment() + .countAttachments( + InvenTreeSupplierPart.MODEL_TYPE, + widget.supplierPart.pk, + ) + .then((value) { + if (mounted) { + setState(() { + attachmentCount = value; + }); + } + }); } /* @@ -286,6 +320,31 @@ class _SupplierPartDisplayState ); } + ListTile? parameterTile = ShowParametersItem( + context, + InvenTreeSupplierPart.MODEL_TYPE, + widget.supplierPart.pk, + parameterCount, + widget.supplierPart.canEdit, + ); + + if (parameterTile != null) { + tiles.add(parameterTile); + } + + ListTile? attachmentTile = ShowAttachmentsItem( + context, + InvenTreeSupplierPart.MODEL_TYPE, + widget.supplierPart.pk, + widget.supplierPart.SKU, + attachmentCount, + widget.supplierPart.canEdit, + ); + + if (attachmentTile != null) { + tiles.add(attachmentTile); + } + return tiles; } } diff --git a/lib/widget/order/purchase_order_detail.dart b/lib/widget/order/purchase_order_detail.dart index 0829e06..d309a4b 100644 --- a/lib/widget/order/purchase_order_detail.dart +++ b/lib/widget/order/purchase_order_detail.dart @@ -8,6 +8,7 @@ import "package:inventree/barcode/barcode.dart"; import "package:inventree/barcode/purchase_order.dart"; import "package:inventree/helpers.dart"; import "package:inventree/inventree/attachment.dart"; +import "package:inventree/inventree/parameter.dart"; import "package:inventree/l10.dart"; import "package:inventree/inventree/model.dart"; @@ -22,6 +23,7 @@ import "package:inventree/widget/order/po_line_list.dart"; import "package:inventree/widget/attachment_widget.dart"; import "package:inventree/widget/notes_widget.dart"; +import "package:inventree/widget/parameter_widget.dart"; import "package:inventree/widget/progress.dart"; import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/snacks.dart"; @@ -51,6 +53,7 @@ class _PurchaseOrderDetailState int completedLines = 0; int attachmentCount = 0; + int parameterCount = 0; bool showCameraShortcut = true; bool supportProjectCodes = false; @@ -300,6 +303,16 @@ class _PurchaseOrderDetailState } } + InvenTreeParameter() + .countParameters(InvenTreePurchaseOrder.MODEL_TYPE, widget.order.pk) + .then((int value) { + if (mounted) { + setState(() { + parameterCount = value; + }); + } + }); + InvenTreeAttachment() .countAttachments(InvenTreePurchaseOrder.MODEL_TYPE, widget.order.pk) .then((int value) { @@ -570,6 +583,18 @@ class _PurchaseOrderDetailState ), ); + ListTile? parameterTile = ShowParametersItem( + context, + InvenTreePurchaseOrder.MODEL_TYPE, + widget.order.pk, + parameterCount, + widget.order.canEdit, + ); + + if (parameterTile != null) { + tiles.add(parameterTile); + } + ListTile? attachmentTile = ShowAttachmentsItem( context, InvenTreePurchaseOrder.MODEL_TYPE, diff --git a/lib/widget/order/sales_order_detail.dart b/lib/widget/order/sales_order_detail.dart index 30692f2..79a3620 100644 --- a/lib/widget/order/sales_order_detail.dart +++ b/lib/widget/order/sales_order_detail.dart @@ -5,12 +5,14 @@ import "package:inventree/barcode/barcode.dart"; import "package:inventree/barcode/sales_order.dart"; import "package:inventree/inventree/attachment.dart"; import "package:inventree/inventree/company.dart"; +import "package:inventree/inventree/parameter.dart"; import "package:inventree/inventree/sales_order.dart"; import "package:inventree/preferences.dart"; import "package:inventree/widget/link_icon.dart"; import "package:inventree/widget/order/so_extra_line_list.dart"; import "package:inventree/widget/order/so_line_list.dart"; import "package:inventree/widget/order/so_shipment_list.dart"; +import "package:inventree/widget/parameter_widget.dart"; import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/l10.dart"; @@ -43,6 +45,7 @@ class _SalesOrderDetailState extends RefreshableState { bool showCameraShortcut = true; bool supportsProjectCodes = false; int attachmentCount = 0; + int parameterCount = 0; @override String getAppBarTitle() { @@ -271,6 +274,16 @@ class _SalesOrderDetailState extends RefreshableState { true, ); + InvenTreeParameter() + .countParameters(InvenTreeSalesOrder.MODEL_TYPE, widget.order.pk) + .then((int value) { + if (mounted) { + setState(() { + parameterCount = value; + }); + } + }); + InvenTreeAttachment() .countAttachments(InvenTreeSalesOrder.MODEL_TYPE, widget.order.pk) .then((int value) { @@ -497,6 +510,18 @@ class _SalesOrderDetailState extends RefreshableState { ), ); + ListTile? parameterTile = ShowParametersItem( + context, + InvenTreeSalesOrder.MODEL_TYPE, + widget.order.pk, + parameterCount, + widget.order.canEdit, + ); + + if (parameterTile != null) { + tiles.add(parameterTile); + } + ListTile? attachmentTile = ShowAttachmentsItem( context, InvenTreeSalesOrder.MODEL_TYPE, diff --git a/lib/widget/part/part_parameter_widget.dart b/lib/widget/parameter_widget.dart similarity index 58% rename from lib/widget/part/part_parameter_widget.dart rename to lib/widget/parameter_widget.dart index c4df189..07a38fc 100644 --- a/lib/widget/part/part_parameter_widget.dart +++ b/lib/widget/parameter_widget.dart @@ -1,8 +1,12 @@ import "package:flutter/material.dart"; +import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; +import "package:inventree/api.dart"; +import "package:inventree/app_colors.dart"; import "package:inventree/inventree/model.dart"; +import "package:inventree/inventree/parameter.dart"; import "package:inventree/l10.dart"; -import "package:inventree/inventree/part.dart"; +import "package:inventree/widget/link_icon.dart"; import "package:inventree/widget/paginator.dart"; import "package:inventree/widget/progress.dart"; import "package:inventree/widget/refreshable_state.dart"; @@ -10,16 +14,18 @@ import "package:inventree/widget/refreshable_state.dart"; /* * Widget for displaying a list of parameters associated with a given Part instance */ -class PartParameterWidget extends StatefulWidget { - const PartParameterWidget(this.part); +class ParameterWidget extends StatefulWidget { + const ParameterWidget(this.modelType, this.modelId, this.editable) : super(); - final InvenTreePart part; + final String modelType; + final int modelId; + final bool editable; @override _ParameterWidgetState createState() => _ParameterWidgetState(); } -class _ParameterWidgetState extends RefreshableState { +class _ParameterWidgetState extends RefreshableState { _ParameterWidgetState(); @override @@ -34,9 +40,16 @@ class _ParameterWidgetState extends RefreshableState { @override Widget getBody(BuildContext context) { - Map filters = {"part": widget.part.pk.toString()}; + Map filters = { + "model_type": widget.modelType, + "model_id": widget.modelId.toString(), + }; - return Column(children: [Expanded(child: PaginatedParameterList(filters))]); + return Column( + children: [ + Expanded(child: PaginatedParameterList(filters, widget.editable)), + ], + ); } } @@ -44,9 +57,11 @@ class _ParameterWidgetState extends RefreshableState { * Widget for displaying a paginated list of Part parameters */ class PaginatedParameterList extends PaginatedSearchWidget { - const PaginatedParameterList(Map filters) + const PaginatedParameterList(Map filters, this.editable) : super(filters: filters); + final bool editable; + @override String get searchTitle => L10().parameters; @@ -75,7 +90,7 @@ class _PaginatedParameterState int offset, Map params, ) async { - final page = await InvenTreePartParameter().listPaginated( + final page = await InvenTreeParameter().listPaginated( limit, offset, filters: params, @@ -84,7 +99,7 @@ class _PaginatedParameterState return page; } - Future editParameter(InvenTreePartParameter parameter) async { + Future editParameter(InvenTreeParameter parameter) async { // Checkbox values are handled separately if (parameter.is_checkbox) { return; @@ -101,7 +116,7 @@ class _PaginatedParameterState @override Widget buildItem(BuildContext context, InvenTreeModel model) { - InvenTreePartParameter parameter = model as InvenTreePartParameter; + InvenTreeParameter parameter = model as InvenTreeParameter; String title = parameter.name; @@ -116,7 +131,7 @@ class _PaginatedParameterState ? Switch( value: parameter.as_bool, onChanged: (bool value) { - if (parameter.canEdit) { + if (widget.editable) { showLoadingOverlay(); parameter.update(values: {"data": value.toString()}).then(( value, @@ -131,10 +146,47 @@ class _PaginatedParameterState onTap: parameter.is_checkbox ? null : () async { - if (parameter.canEdit) { + if (widget.editable) { editParameter(parameter); } }, ); } } + +/* + * Return a ListTile to display parameters for the specified model + */ +ListTile? ShowParametersItem( + BuildContext context, + String modelType, + int modelId, + int parameterCount, + bool editable, +) { + // Note: Currently cannot add parameters from the app, + // So, if there are no parameters, do not show the item + if (parameterCount == 0) { + return null; + } + + if (!InvenTreeAPI().supportsModernParameters) { + return null; + } + + return ListTile( + title: Text(L10().parameters), + leading: Icon(TablerIcons.list_details, color: COLOR_ACTION), + trailing: LinkIcon( + text: parameterCount > 0 ? parameterCount.toString() : null, + ), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ParameterWidget(modelType, modelId, editable), + ), + ); + }, + ); +} diff --git a/lib/widget/part/part_detail.dart b/lib/widget/part/part_detail.dart index 30b697c..73a299f 100644 --- a/lib/widget/part/part_detail.dart +++ b/lib/widget/part/part_detail.dart @@ -5,6 +5,7 @@ import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:inventree/app_colors.dart"; import "package:inventree/barcode/barcode.dart"; import "package:inventree/inventree/attachment.dart"; +import "package:inventree/inventree/parameter.dart"; import "package:inventree/l10.dart"; import "package:inventree/helpers.dart"; @@ -16,10 +17,10 @@ import "package:inventree/preferences.dart"; import "package:inventree/widget/attachment_widget.dart"; import "package:inventree/widget/link_icon.dart"; +import "package:inventree/widget/parameter_widget.dart"; import "package:inventree/widget/part/bom_list.dart"; import "package:inventree/widget/part/part_list.dart"; import "package:inventree/widget/notes_widget.dart"; -import "package:inventree/widget/part/part_parameter_widget.dart"; import "package:inventree/widget/part/part_pricing.dart"; import "package:inventree/widget/progress.dart"; import "package:inventree/widget/part/category_display.dart"; @@ -50,13 +51,11 @@ class _PartDisplayState extends RefreshableState { InvenTreeStockLocation? defaultLocation; - int parameterCount = 0; - bool allowLabelPrinting = false; - bool showParameters = false; bool showBom = false; bool showPricing = false; + int parameterCount = 0; int attachmentCount = 0; int bomCount = 0; int usedInCount = 0; @@ -153,10 +152,6 @@ class _PartDisplayState extends RefreshableState { INV_PART_SHOW_PRICING, true, ); - showParameters = await InvenTreeSettingsManager().getBool( - INV_PART_SHOW_PARAMETERS, - true, - ); showBom = await InvenTreeSettingsManager().getBool(INV_PART_SHOW_BOM, true); allowLabelPrinting = await InvenTreeSettingsManager().getBool( INV_ENABLE_LABEL_PRINTING, @@ -213,15 +208,30 @@ class _PartDisplayState extends RefreshableState { } // Request the number of attachments - InvenTreeAttachment() - .countAttachments(InvenTreePart.MODEL_TYPE, part.pk) - .then((int value) { - if (mounted) { - setState(() { - attachmentCount = value; - }); - } - }); + if (api.supportsModernAttachments) { + InvenTreeAttachment() + .countAttachments(InvenTreePart.MODEL_TYPE, part.pk) + .then((int value) { + if (mounted) { + setState(() { + attachmentCount = value; + }); + } + }); + } + + // Request the number of parameters + if (api.supportsModernParameters) { + InvenTreeParameter() + .countParameters(InvenTreePart.MODEL_TYPE, part.pk) + .then((int value) { + if (mounted) { + setState(() { + parameterCount = value; + }); + } + }); + } // If show pricing information? if (showPricing) { @@ -599,6 +609,18 @@ class _PartDisplayState extends RefreshableState { ), ); + ListTile? parameterTile = ShowParametersItem( + context, + InvenTreePart.MODEL_TYPE, + part.pk, + parameterCount, + part.canEdit, + ); + + if (parameterTile != null) { + tiles.add(parameterTile); + } + ListTile? attachmentTile = ShowAttachmentsItem( context, InvenTreePart.MODEL_TYPE, @@ -705,10 +727,6 @@ class _PartDisplayState extends RefreshableState { List getTabIcons(BuildContext context) { List icons = [Tab(text: L10().details), Tab(text: L10().stock)]; - if (showParameters) { - icons.add(Tab(text: L10().parameters)); - } - return icons; } @@ -721,11 +739,6 @@ class _PartDisplayState extends RefreshableState { ), PaginatedStockItemList({"part": part.pk.toString()}), ]; - - if (showParameters) { - tabs.add(PaginatedParameterList({"part": part.pk.toString()})); - } - return tabs; } } From 571ff1880f91983db03e8098a5f20f58ec9b6703 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 6 Dec 2025 11:24:17 +1100 Subject: [PATCH 05/17] New translations app_en.arb (Chinese Simplified) (#739) --- lib/l10n/zh_CN/app_zh_CN.arb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/l10n/zh_CN/app_zh_CN.arb b/lib/l10n/zh_CN/app_zh_CN.arb index edb54e2..876f122 100644 --- a/lib/l10n/zh_CN/app_zh_CN.arb +++ b/lib/l10n/zh_CN/app_zh_CN.arb @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "条形码扫描已暂停", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "点击或按住以暂停扫描", "@barcodeScanPause": {}, "barcodeScanAssign": "扫描以分配条形码", "@barcodeScanAssign": {}, @@ -472,9 +472,9 @@ "@itemUpdated": {}, "keywords": "关键词", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "标签打印机", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "选择标签打印机", "@labelSelectDriver": {}, "labelPrinting": "打印标签", "@labelPrinting": {}, @@ -514,7 +514,7 @@ "@locationCreate": {}, "locationCreateDetail": "创建新库存地点", "@locationCreateDetail": {}, - "locationDefault": "Default Location", + "locationDefault": "默认库存地点", "@locationDefault": {}, "locationNotSet": "没有指定仓储位置", "@locationNotSet": {}, From 8c15bdafdf9aeb03be2c43e2b68794d345dbca96 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 19 Dec 2025 09:52:38 +1100 Subject: [PATCH 06/17] New Crowdin updates (#740) * New translations app_en.arb (Hungarian) * New translations app_en.arb (Hungarian) * New translations app_en.arb (Dutch) * New translations app_en.arb (Dutch) * New translations app_en.arb (Swedish) * New translations app_en.arb (Ukrainian) * New translations app_en.arb (Ukrainian) * New translations app_en.arb (German) * New translations app_en.arb (Turkish) * New translations app_en.arb (Italian) * New translations app_en.arb (Turkish) * New translations app_en.arb (Turkish) * New translations app_en.arb (Romanian) --- lib/l10n/de_DE/app_de_DE.arb | 30 +++++------ lib/l10n/hu_HU/app_hu_HU.arb | 52 +++++++++--------- lib/l10n/it_IT/app_it_IT.arb | 6 +-- lib/l10n/nl_NL/app_nl_NL.arb | 52 +++++++++--------- lib/l10n/ro_RO/app_ro_RO.arb | 16 +++--- lib/l10n/sv_SE/app_sv_SE.arb | 30 +++++------ lib/l10n/tr_TR/app_tr_TR.arb | 72 ++++++++++++------------- lib/l10n/uk_UA/app_uk_UA.arb | 102 +++++++++++++++++------------------ 8 files changed, 180 insertions(+), 180 deletions(-) diff --git a/lib/l10n/de_DE/app_de_DE.arb b/lib/l10n/de_DE/app_de_DE.arb index dc075ef..e0bb95c 100644 --- a/lib/l10n/de_DE/app_de_DE.arb +++ b/lib/l10n/de_DE/app_de_DE.arb @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Barcode-Scannen angehalten", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Tippen um das Scannen zu pausieren", "@barcodeScanPause": {}, "barcodeScanAssign": "Scannen um Barcode zuzuweisen", "@barcodeScanAssign": {}, @@ -472,9 +472,9 @@ "@itemUpdated": {}, "keywords": "Schlüsselwörter", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "Etikettendrucker Treiber", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "Etikettendrucker Treiber auswählen", "@labelSelectDriver": {}, "labelPrinting": "Etikettendruck", "@labelPrinting": {}, @@ -944,29 +944,29 @@ "@shipment": {}, "shipments": "Lieferungen", "@shipments": {}, - "shipmentsPending": "Ausstehende Sendungen", + "shipmentsPending": "Ausstehende Lieferungen", "@shipmentsPending": {}, "shipmentAdd": "Lieferung hinzufügen", "@shipmentAdd": {}, - "shipmentCheck": "Sendung prüfen", + "shipmentCheck": "Lieferung überprüfen", "@shipmentCheck": {}, - "shipmentCheckDetail": "Diese Sendung als geprüft markieren", + "shipmentCheckDetail": "Diese Lieferung als geprüft markieren", "@shipmentCheckDetail": {}, - "shipmentChecked": "Sendung geprüft", + "shipmentChecked": "Lieferung überprüft", "@shipmentChecked": {}, "shipmentDate": "Versanddatum", "@shipmentDate": {}, - "shipmentEdit": "Sendung bearbeiten", + "shipmentEdit": "Lieferung bearbeiten", "@shipmentEdit": {}, - "shipmentReference": "Shipment Reference", + "shipmentReference": "Sendungsreferenz", "@shipmentReference": {}, "shipmentSend": "Lieferung versenden", "@shipmentSend": {}, - "shipmentUncheck": "Uncheck Shipment", + "shipmentUncheck": "Lieferung ungeprüft markieren", "@shipmentUncheck": {}, - "shipmentUncheckDetail": "Mark this shipment as unchecked", + "shipmentUncheckDetail": "Diese Lieferung als ungeprüft markieren", "@shipmentUncheckDetail": {}, - "shipmentUpdated": "Shipment Updated", + "shipmentUpdated": "Lieferung Aktualisiert", "@shipmentUpdated": {}, "shipped": "Versandt", "@shipped": {}, @@ -1102,7 +1102,7 @@ "@timeout": { "description": "" }, - "toggleTorch": "Toggle Torch", + "toggleTorch": "Taschenlampe umschalten", "@toggleTorch": {}, "tokenError": "Token-Fehler", "@tokenError": {}, @@ -1182,7 +1182,7 @@ "@priceRange": {}, "priceOverrideMin": "Mindestpreis überschreiben", "@priceOverrideMin": {}, - "priceOverrideMax": "Maximum Price Override", + "priceOverrideMax": "Maximalen Preis ignorieren", "@priceOverrideMax": {}, "salePrice": "Verkaufspreis", "@salePrice": {}, @@ -1198,7 +1198,7 @@ "@variantCost": {}, "overallPricing": "Gesamt Preise", "@overallPricing": {}, - "pricingOverrides": "Pricing Overrides", + "pricingOverrides": "Preisgestaltung ignorieren", "@pricingOverrides": {}, "currency": "Währung", "@currency": {}, diff --git a/lib/l10n/hu_HU/app_hu_HU.arb b/lib/l10n/hu_HU/app_hu_HU.arb index 3286dfa..509d9d2 100644 --- a/lib/l10n/hu_HU/app_hu_HU.arb +++ b/lib/l10n/hu_HU/app_hu_HU.arb @@ -46,7 +46,7 @@ "@aspectRatioSquare": {}, "allocateStock": "Készlet foglalása", "@allocateStock": {}, - "allocatedStock": "Allocated Stock", + "allocatedStock": "Lefoglalt Készlet", "@allocatedStock": {}, "appReleaseNotes": "Kiadási közlemények", "@appReleaseNotes": {}, @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Vonalkód olvasás megállítva", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Érintse meg a szkennelés szüneteltetéséhez", "@barcodeScanPause": {}, "barcodeScanAssign": "Kódolvasás a hozzárendeléshez", "@barcodeScanAssign": {}, @@ -240,7 +240,7 @@ "@deletePartDetail": {}, "deleteSuccess": "Törlés sikeres", "@deleteSuccess": {}, - "deliveryDate": "Delivery Date", + "deliveryDate": "Szállítási Dátum", "@deliveryDate": {}, "description": "Leírás", "@description": {}, @@ -384,9 +384,9 @@ "@homeShowPo": {}, "homeShowPoDescription": "Beszerzési rendelések gomb megjelenítése a főoldalon", "@homeShowPoDescription": {}, - "homeShowShipments": "Show Shipments", + "homeShowShipments": "Szállítmányok Mutatása", "@homeShowShipments": {}, - "homeShowShipmentsDescription": "Show pending shipments on the home screen", + "homeShowShipmentsDescription": "Függőben lévő szállítmányok megjelenítése a kezdőképernyőn", "@homeShowShipmentsDescription": {}, "homeShowSo": "Vevői rendelések megmutatása", "@homeShowSo": {}, @@ -454,9 +454,9 @@ "@invalidSupplierPart": {}, "invalidUsernamePassword": "Érvénytelen felhasználónév/jelszó kombináció", "@invalidUsernamePassword": {}, - "invoice": "Invoice", + "invoice": "Számla", "@invoice": {}, - "invoiceNumber": "Invoice Number", + "invoiceNumber": "Számlaszám", "@invoiceNumber": {}, "issue": "Kiküldés", "@issue": {}, @@ -472,9 +472,9 @@ "@itemUpdated": {}, "keywords": "Kulcsszavak", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "Címke Meghajtó", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "Címkenyomtató Meghajtó Kiválasztása", "@labelSelectDriver": {}, "labelPrinting": "Címke nyomtatás", "@labelPrinting": {}, @@ -514,7 +514,7 @@ "@locationCreate": {}, "locationCreateDetail": "Új készlet hely létrehozása", "@locationCreateDetail": {}, - "locationDefault": "Default Location", + "locationDefault": "Alapértelmezett Hely", "@locationDefault": {}, "locationNotSet": "Nincs megadva hely", "@locationNotSet": {}, @@ -544,7 +544,7 @@ "@missingData": {}, "name": "Név", "@name": {}, - "no": "No", + "no": "Nem", "@no": {}, "notApplicable": "N/A", "@notApplicable": {}, @@ -660,7 +660,7 @@ "@password": {}, "passwordEmpty": "Jelszó nem lehet üres", "@passwordEmpty": {}, - "pending": "Pending", + "pending": "Függőben", "@pending": {}, "permissionAccountDenied": "Nincs meg a szükséges jogosultságod, hogy végrehajtsd ezt a műveletet", "@permissionAccountDenied": {}, @@ -940,33 +940,33 @@ "@serverNotConnected": {}, "serverNotSelected": "Nincs kiszolgáló választva", "@serverNotSelected": {}, - "shipment": "Shipment", + "shipment": "Szállítmány", "@shipment": {}, "shipments": "Szállítmányok", "@shipments": {}, - "shipmentsPending": "Pending Shipments", + "shipmentsPending": "Függőben Lévő Szállítmányok", "@shipmentsPending": {}, "shipmentAdd": "Szállítmány hozzáadása", "@shipmentAdd": {}, - "shipmentCheck": "Check Shipment", + "shipmentCheck": "Szállítmány Ellenőrzése", "@shipmentCheck": {}, - "shipmentCheckDetail": "Mark this shipment as checked", + "shipmentCheckDetail": "Jelölje meg ezt a szállítmányt ellenőrzöttként", "@shipmentCheckDetail": {}, - "shipmentChecked": "Shipment Checked", + "shipmentChecked": "Szállítmány Ellenőrizve", "@shipmentChecked": {}, - "shipmentDate": "Shipment Date", + "shipmentDate": "Szállítmány Dátuma", "@shipmentDate": {}, - "shipmentEdit": "Edit Shipment", + "shipmentEdit": "Szállítmány Szerkesztése", "@shipmentEdit": {}, - "shipmentReference": "Shipment Reference", + "shipmentReference": "Szállítmány Hivatkozás", "@shipmentReference": {}, - "shipmentSend": "Send Shipment", + "shipmentSend": "Szállítmány Küldése", "@shipmentSend": {}, - "shipmentUncheck": "Uncheck Shipment", + "shipmentUncheck": "Szállítmány Ellenőrzés Visszavonása", "@shipmentUncheck": {}, - "shipmentUncheckDetail": "Mark this shipment as unchecked", + "shipmentUncheckDetail": "Jelölje meg ezt a szállítmányt nem ellenőrzöttként", "@shipmentUncheckDetail": {}, - "shipmentUpdated": "Shipment Updated", + "shipmentUpdated": "Szállítmány Frissítve", "@shipmentUpdated": {}, "shipped": "Kiszállítva", "@shipped": {}, @@ -1112,7 +1112,7 @@ "@tokenMissingFromResponse": {}, "totalPrice": "Teljes ár", "@totalPrice": {}, - "trackingNumber": "Tracking Number", + "trackingNumber": "Nyomkövetési Szám", "@trackingNumber": {}, "transfer": "Áthelyezés", "@transfer": { @@ -1174,7 +1174,7 @@ "@viewSupplierPart": {}, "website": "Weboldal", "@website": {}, - "yes": "Yes", + "yes": "Igen", "@yes": {}, "price": "Ár", "@price": {}, diff --git a/lib/l10n/it_IT/app_it_IT.arb b/lib/l10n/it_IT/app_it_IT.arb index db6286a..ecbe8b1 100644 --- a/lib/l10n/it_IT/app_it_IT.arb +++ b/lib/l10n/it_IT/app_it_IT.arb @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Scansione codice a barre in pausa", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Tocca per mettere in pausa la scansione", "@barcodeScanPause": {}, "barcodeScanAssign": "Scansiona per assegnare codice a barre", "@barcodeScanAssign": {}, @@ -472,9 +472,9 @@ "@itemUpdated": {}, "keywords": "Parole Chiave", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "Driver Etichetta", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "Seleziona Il Driver Della Stampante Etichette", "@labelSelectDriver": {}, "labelPrinting": "Etichetta in stampa", "@labelPrinting": {}, diff --git a/lib/l10n/nl_NL/app_nl_NL.arb b/lib/l10n/nl_NL/app_nl_NL.arb index d8eab7d..ba45758 100644 --- a/lib/l10n/nl_NL/app_nl_NL.arb +++ b/lib/l10n/nl_NL/app_nl_NL.arb @@ -46,7 +46,7 @@ "@aspectRatioSquare": {}, "allocateStock": "Voorraad Toewijzen", "@allocateStock": {}, - "allocatedStock": "Allocated Stock", + "allocatedStock": "Toegewezen voorraad", "@allocatedStock": {}, "appReleaseNotes": "App release notities weergeven", "@appReleaseNotes": {}, @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Barcode scannen gepauzeerd", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Klik om scannen te pauzeren", "@barcodeScanPause": {}, "barcodeScanAssign": "Scan om streepjescode toe te wijzen", "@barcodeScanAssign": {}, @@ -240,7 +240,7 @@ "@deletePartDetail": {}, "deleteSuccess": "Succesvol verwijderd", "@deleteSuccess": {}, - "deliveryDate": "Delivery Date", + "deliveryDate": "Leveringsdatum", "@deliveryDate": {}, "description": "Omschrijving", "@description": {}, @@ -384,9 +384,9 @@ "@homeShowPo": {}, "homeShowPoDescription": "Inkooporder knop op startscherm weergeven", "@homeShowPoDescription": {}, - "homeShowShipments": "Show Shipments", + "homeShowShipments": "Verzending weergeven", "@homeShowShipments": {}, - "homeShowShipmentsDescription": "Show pending shipments on the home screen", + "homeShowShipmentsDescription": "Toon Leveringen in afwachting op het startscherm", "@homeShowShipmentsDescription": {}, "homeShowSo": "Toon Verkooporders", "@homeShowSo": {}, @@ -454,9 +454,9 @@ "@invalidSupplierPart": {}, "invalidUsernamePassword": "Ongeldige gebruikersnaam / wachtwoord combinatie", "@invalidUsernamePassword": {}, - "invoice": "Invoice", + "invoice": "Factuur", "@invoice": {}, - "invoiceNumber": "Invoice Number", + "invoiceNumber": "Factuur nummer", "@invoiceNumber": {}, "issue": "Probleem", "@issue": {}, @@ -472,9 +472,9 @@ "@itemUpdated": {}, "keywords": "Trefwoorden", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "Label printer", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "Selecteer Label Printer Driver", "@labelSelectDriver": {}, "labelPrinting": "Label afdrukken", "@labelPrinting": {}, @@ -514,7 +514,7 @@ "@locationCreate": {}, "locationCreateDetail": "Creëer nieuwe voorraadlocatie", "@locationCreateDetail": {}, - "locationDefault": "Default Location", + "locationDefault": "Standaard locatie", "@locationDefault": {}, "locationNotSet": "Geen locatie opgegeven", "@locationNotSet": {}, @@ -544,9 +544,9 @@ "@missingData": {}, "name": "Naam", "@name": {}, - "no": "No", + "no": "Nee", "@no": {}, - "notApplicable": "N/A", + "notApplicable": "N.v.t. ", "@notApplicable": {}, "notConnected": "Niet verbonden", "@notConnected": {}, @@ -660,7 +660,7 @@ "@password": {}, "passwordEmpty": "Wachtwoord mag niet leeg zijn", "@passwordEmpty": {}, - "pending": "Pending", + "pending": "In behandeling", "@pending": {}, "permissionAccountDenied": "U heeft niet de vereiste rechten om deze actie uit te voeren", "@permissionAccountDenied": {}, @@ -940,33 +940,33 @@ "@serverNotConnected": {}, "serverNotSelected": "Server niet geselecteerd", "@serverNotSelected": {}, - "shipment": "Shipment", + "shipment": "Levering", "@shipment": {}, "shipments": "Verzendingen", "@shipments": {}, - "shipmentsPending": "Pending Shipments", + "shipmentsPending": "Leveringen in behandeling", "@shipmentsPending": {}, "shipmentAdd": "Verzending toevoegen", "@shipmentAdd": {}, - "shipmentCheck": "Check Shipment", + "shipmentCheck": "Controleer Levering", "@shipmentCheck": {}, - "shipmentCheckDetail": "Mark this shipment as checked", + "shipmentCheckDetail": "Markeer deze levering als gecontroleerd", "@shipmentCheckDetail": {}, - "shipmentChecked": "Shipment Checked", + "shipmentChecked": "Levering gecontroleerd", "@shipmentChecked": {}, - "shipmentDate": "Shipment Date", + "shipmentDate": "Leverings Datum", "@shipmentDate": {}, - "shipmentEdit": "Edit Shipment", + "shipmentEdit": "Wijzig levering", "@shipmentEdit": {}, "shipmentReference": "Shipment Reference", "@shipmentReference": {}, - "shipmentSend": "Send Shipment", + "shipmentSend": "Verzending versturen", "@shipmentSend": {}, - "shipmentUncheck": "Uncheck Shipment", + "shipmentUncheck": "Verzending uitvinken", "@shipmentUncheck": {}, - "shipmentUncheckDetail": "Mark this shipment as unchecked", + "shipmentUncheckDetail": "Markeer deze levering als niet gecontroleerd", "@shipmentUncheckDetail": {}, - "shipmentUpdated": "Shipment Updated", + "shipmentUpdated": "Verzending bijgewerkt", "@shipmentUpdated": {}, "shipped": "Verzonden", "@shipped": {}, @@ -1112,7 +1112,7 @@ "@tokenMissingFromResponse": {}, "totalPrice": "Totaalprijs", "@totalPrice": {}, - "trackingNumber": "Tracking Number", + "trackingNumber": "Traceernummer", "@trackingNumber": {}, "transfer": "Verplaats", "@transfer": { @@ -1174,7 +1174,7 @@ "@viewSupplierPart": {}, "website": "Website", "@website": {}, - "yes": "Yes", + "yes": "Ja", "@yes": {}, "price": "Prijs", "@price": {}, diff --git a/lib/l10n/ro_RO/app_ro_RO.arb b/lib/l10n/ro_RO/app_ro_RO.arb index ff74b98..6f07c0d 100644 --- a/lib/l10n/ro_RO/app_ro_RO.arb +++ b/lib/l10n/ro_RO/app_ro_RO.arb @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Scanare cod de bare întreruptă", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Atingeți pentru a întrerupe scanarea", "@barcodeScanPause": {}, "barcodeScanAssign": "Scanează pentru a atribui cod de bare", "@barcodeScanAssign": {}, @@ -472,9 +472,9 @@ "@itemUpdated": {}, "keywords": "Cuvinte cheie", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "Etichetează șofer", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "Selectați șofer de imprimante etichetă", "@labelSelectDriver": {}, "labelPrinting": "Printare etichete", "@labelPrinting": {}, @@ -822,17 +822,17 @@ "@response504": {}, "response505": "Versiunea HTTP nu este suportată", "@response505": {}, - "responseData": "Response data", + "responseData": "Date Răspuns", "@responseData": {}, - "responseInvalid": "Invalid Response Code", + "responseInvalid": "Cod de răspuns nevalid", "@responseInvalid": {}, - "responseUnknown": "Unknown Response", + "responseUnknown": "Răspuns necunoscut", "@responseUnknown": {}, - "result": "Result", + "result": "Rezultat", "@result": { "description": "" }, - "returned": "Returned", + "returned": "Returnat", "@returned": {}, "salesOrder": "Sales Order", "@salesOrder": {}, diff --git a/lib/l10n/sv_SE/app_sv_SE.arb b/lib/l10n/sv_SE/app_sv_SE.arb index ae837a4..88d8b85 100644 --- a/lib/l10n/sv_SE/app_sv_SE.arb +++ b/lib/l10n/sv_SE/app_sv_SE.arb @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Streckkodsskanning pausad", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Tryck för att pausa skanning", "@barcodeScanPause": {}, "barcodeScanAssign": "Skanna för att tilldela streckkod", "@barcodeScanAssign": {}, @@ -228,7 +228,7 @@ "@delete": {}, "deleteFailed": "Borttagning misslyckades", "@deleteFailed": {}, - "deleteImageConfirmation": "Are you sure you want to delete this image?", + "deleteImageConfirmation": "Är du säker på att du vill radera denna bild?", "@deleteImageConfirmation": {}, "deleteImageTooltip": "Radera bild", "@deleteImageTooltip": {}, @@ -240,7 +240,7 @@ "@deletePartDetail": {}, "deleteSuccess": "Borttagning lyckad", "@deleteSuccess": {}, - "deliveryDate": "Delivery Date", + "deliveryDate": "Leveransdatum", "@deliveryDate": {}, "description": "Beskrivning", "@description": {}, @@ -384,9 +384,9 @@ "@homeShowPo": {}, "homeShowPoDescription": "Visa knappen för inköpsorder på startskärmen", "@homeShowPoDescription": {}, - "homeShowShipments": "Show Shipments", + "homeShowShipments": "Visa leveranser", "@homeShowShipments": {}, - "homeShowShipmentsDescription": "Show pending shipments on the home screen", + "homeShowShipmentsDescription": "Visa väntande leveranser på startskärmen", "@homeShowShipmentsDescription": {}, "homeShowSo": "Visa försäljningsorder", "@homeShowSo": {}, @@ -514,7 +514,7 @@ "@locationCreate": {}, "locationCreateDetail": "Skapa ny lagerplats", "@locationCreateDetail": {}, - "locationDefault": "Default Location", + "locationDefault": "Förvald plats", "@locationDefault": {}, "locationNotSet": "Ingen plats specificerad", "@locationNotSet": {}, @@ -564,9 +564,9 @@ "@noResults": {}, "noImageAvailable": "Ingen bild tillgänglig", "@noImageAvailable": {}, - "noPricingAvailable": "No pricing available", + "noPricingAvailable": "Ingen prisinformation tillgänglig", "@noPricingAvailable": {}, - "noPricingDataFound": "No pricing data found for this part", + "noPricingDataFound": "Inga prisuppgifter hittades för denna artikel", "@noPricingDataFound": {}, "noSubcategories": "Inga underkategorier", "@noSubcategories": {}, @@ -630,7 +630,7 @@ "@partsNone": {}, "partNoResults": "Inga artiklar som matchar sökfrågan", "@partNoResults": {}, - "partPricing": "Part Pricing", + "partPricing": "Artikelpris", "@partPricing": {}, "partPricingSettingDetail": "Display part pricing information", "@pricingSettingDetail": {}, @@ -762,7 +762,7 @@ "@reference": {}, "refresh": "Uppdatera", "@refresh": {}, - "rotateClockwise": "Rotate 90° clockwise", + "rotateClockwise": "Rotera 90° medurs", "@rotateClockwise": {}, "refreshing": "Uppdaterar", "@refreshing": {}, @@ -940,7 +940,7 @@ "@serverNotConnected": {}, "serverNotSelected": "Servern är inte vald", "@serverNotSelected": {}, - "shipment": "Shipment", + "shipment": "Försändelse", "@shipment": {}, "shipments": "Frakt", "@shipments": {}, @@ -954,7 +954,7 @@ "@shipmentCheckDetail": {}, "shipmentChecked": "Shipment Checked", "@shipmentChecked": {}, - "shipmentDate": "Shipment Date", + "shipmentDate": "Leveransdatum", "@shipmentDate": {}, "shipmentEdit": "Edit Shipment", "@shipmentEdit": {}, @@ -1112,7 +1112,7 @@ "@tokenMissingFromResponse": {}, "totalPrice": "Totalpris", "@totalPrice": {}, - "trackingNumber": "Tracking Number", + "trackingNumber": "Sändningsnummer", "@trackingNumber": {}, "transfer": "Överföring", "@transfer": { @@ -1184,11 +1184,11 @@ "@priceOverrideMin": {}, "priceOverrideMax": "Maximum Price Override", "@priceOverrideMax": {}, - "salePrice": "Sale Price", + "salePrice": "Försäljningspris", "@salePrice": {}, "saleHistory": "Sale History", "@saleHistory": {}, - "supplierPricing": "Supplier Pricing", + "supplierPricing": "Leverantörspriser", "@supplierPricing": {}, "bomCost": "BOM Cost", "@bomCost": {}, diff --git a/lib/l10n/tr_TR/app_tr_TR.arb b/lib/l10n/tr_TR/app_tr_TR.arb index dfffe0e..464d390 100644 --- a/lib/l10n/tr_TR/app_tr_TR.arb +++ b/lib/l10n/tr_TR/app_tr_TR.arb @@ -48,7 +48,7 @@ "@allocateStock": {}, "allocatedStock": "Tahsis Edilen Stok", "@allocatedStock": {}, - "appReleaseNotes": "Uygulama yayınlama notlarını göster", + "appReleaseNotes": "Uygulama yayınlama notlarını görüntüle", "@appReleaseNotes": {}, "appSettings": "Uygulama Ayarları", "@appSettings": {}, @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Barkod tarama duraklatıldı", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Taramayı duraklatmak için dokunun", "@barcodeScanPause": {}, "barcodeScanAssign": "Atanmış barkodu tara", "@barcodeScanAssign": {}, @@ -116,7 +116,7 @@ "@barcodeScanDelayDetail": {}, "barcodeScanGeneral": "Bir InvenTree barkodu tara", "@barcodeScanGeneral": {}, - "barcodeScanInItems": "Stok ögelerini bu konum içine tara", + "barcodeScanInItems": "Stok kalemlerini bu konumun içine tara", "@barcodeScanInItems": {}, "barcodeScanLocation": "Stok konumu tara", "@barcodeScanLocation": {}, @@ -128,7 +128,7 @@ "@barcodeScanIntoLocationSuccess": {}, "barcodeScanIntoLocationFailure": "Madde taranmış değil", "@barcodeScanIntoLocationFailure": {}, - "barcodeScanItem": "Stok öğesi tara", + "barcodeScanItem": "Stok kalemi tara", "@barcodeScanItem": {}, "barcodeTones": "Barkod Tonları", "@barcodeTones": {}, @@ -144,9 +144,9 @@ "@bom": {}, "bomEnable": "Malzeme Listesini Görüntüle", "@bomEnable": {}, - "build": "Oluştur", + "build": "Yap", "@build": {}, - "building": "Oluşturma", + "building": "Yapılıyor", "@building": {}, "cameraCreationError": "Kamera Kontrolcüsü Açılamadı", "@cameraCreationError": {}, @@ -278,7 +278,7 @@ "@editPart": { "description": "edit part" }, - "editItem": "Parçayı Düzenle", + "editItem": "Stok kalemi düzenle", "@editItem": {}, "editLineItem": "Satır Ögesini Düzenle", "@editLineItem": {}, @@ -348,7 +348,7 @@ "@filterInStockDetail": {}, "filterSerialized": "Sıralandırılmış", "@filterSerialized": {}, - "filterSerializedDetail": "Sıralandırılmış stok ürünkerini göster", + "filterSerializedDetail": "Seri numaralı stok kalemlerini göster", "@filterSerializedDetail": {}, "filterTemplate": "Şablon", "@filterTemplate": {}, @@ -414,7 +414,7 @@ "@imageUploadSuccess": {}, "inactive": "Pasif", "@inactive": {}, - "inactiveCompany": "Bu şirket inaktif olarak imlendi", + "inactiveCompany": "Bu şirket pasif olarak imlendi", "@inactiveCompany": {}, "inactiveDetail": "Bu parça pasif olarak işaretlendi", "@inactiveDetail": {}, @@ -434,7 +434,7 @@ "@info": {}, "inProduction": "Yapım Aşamasında", "@inProduction": {}, - "inProductionDetail": "Bu ürün üretim aşamasında", + "inProductionDetail": "Bu stok kalemi üretimdedir", "@inProductionDetail": {}, "internalPart": "İç Parça", "@internalPart": {}, @@ -448,7 +448,7 @@ "@invalidPartCategory": {}, "invalidStockLocation": "Geçersiz Stok Konumu", "@invalidStockLocation": {}, - "invalidStockItem": "Geçersiz Stok Parçası", + "invalidStockItem": "Geçersiz Stok Kalemi", "@invalidStockItem": {}, "invalidSupplierPart": "Geçersiz Tedarikçi Parçası", "@invalidSupplierPart": {}, @@ -474,7 +474,7 @@ "@keywords": {}, "labelDriver": "Label Driver", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "Etiket Yazıcı Sürücüsü Seçin", "@labelSelectDriver": {}, "labelPrinting": "Etiket Yazdırma", "@labelPrinting": {}, @@ -492,7 +492,7 @@ "@languageDefault": {}, "languageSelect": "Dil Seçin", "@languageSelect": {}, - "lastStocktake": "Son stok tutma", + "lastStocktake": "Son Stok Sayımı", "@lastStocktake": {}, "lastUpdated": "Son güncelleme", "@lastUpdated": {}, @@ -506,7 +506,7 @@ "@lineItems": {}, "lineItemUpdated": "Satır ögesi güncellendi", "@lineItemUpdated": {}, - "locateItem": "Stok ögesi bul", + "locateItem": "Stok kalemi bul", "@locateItem": {}, "locateLocation": "Stok konumu bul", "@locateLocation": {}, @@ -514,7 +514,7 @@ "@locationCreate": {}, "locationCreateDetail": "Yeni stok konumu oluştur", "@locationCreateDetail": {}, - "locationDefault": "Default Location", + "locationDefault": "Varsayılan Konum", "@locationDefault": {}, "locationNotSet": "Belirtilmiş konum yok", "@locationNotSet": {}, @@ -602,7 +602,7 @@ "@packageName": {}, "parameters": "Parametreler", "@parameters": {}, - "parametersSettingDetail": "Parça parametrelerini göster", + "parametersSettingDetail": "Parça parametrelerini görüntüle", "@parametersSettingDetail": {}, "parent": "Üst", "@parent": {}, @@ -712,7 +712,7 @@ "@purchaseOrderConfirmScan": {}, "purchaseOrderConfirmScanDetail": "Taranan Ürünlerin Detaylarını Onayla", "@purchaseOrderConfirmScanDetail": {}, - "purchaseOrderEnable": "Satın Alma Emirlerini Etkinleştir", + "purchaseOrderEnable": "Satın Alma Siparişlerini Etkinleştir", "@purchaseOrderEnable": {}, "purchaseOrderEnableDetail": "Satın Alma Emirlerinin İşlevselliğini Etkinleştir", "@purchaseOrderEnableDetail": {}, @@ -728,7 +728,7 @@ "@purchaseOrderEdit": {}, "purchaseOrderSettings": "Satın Alma Emri Ayarları", "@purchaseOrderSettings": {}, - "purchaseOrders": "Satınalma Siparişleri", + "purchaseOrders": "Satın Alma Siparişleri", "@purchaseOrders": {}, "purchaseOrderUpdated": "Satın Alma Siparişi güncellendi", "@purchaseOrderUpdated": {}, @@ -756,7 +756,7 @@ "@receivedFilterDetail": {}, "receiveItem": "Alınan Öğeler", "@receiveItem": {}, - "receivedItem": "Alınan stok parçaları", + "receivedItem": "Alınan stok kalemleri", "@receivedItem": {}, "reference": "Referans", "@reference": {}, @@ -838,7 +838,7 @@ "@salesOrder": {}, "salesOrders": "Satış Siparişleri", "@salesOrders": {}, - "salesOrderEnable": "Satış Emirlerini Etkinleştir", + "salesOrderEnable": "Satış Siparişlerini Etkinleştir", "@salesOrderEnable": {}, "salesOrderEnableDetail": "Satış Siparişlerinin İşlevselliğini Etkinleştir", "@salesOrderEnableDetail": {}, @@ -860,7 +860,7 @@ }, "scanBarcode": "Barkod Tara", "@scanBarcode": {}, - "scanSupplierPart": "Sağlayıcı parça barkodunu tara", + "scanSupplierPart": "Tedarikçi parça barkodunu tara", "@scanSupplierPart": {}, "scanIntoLocation": "Konuma Tara", "@scanIntoLocation": {}, @@ -998,25 +998,25 @@ "@stockItems": {}, "stockItemCreate": "Yeni Stok Kalemi", "@stockItemCreate": {}, - "stockItemCreateDetail": "Bu konuma yeni stok kalemi oluştur", + "stockItemCreateDetail": "Bu konumda yeni stok kalemi oluştur", "@stockItemCreateDetail": {}, "stockItemDelete": "Stok parçasını sil", "@stockItemDelete": {}, - "stockItemDeleteConfirm": "Bu stock ögesini silmek istediğinize emin misiniz?", + "stockItemDeleteConfirm": "Bu stok kalemini silmek istediğinize emin misiniz?", "@stockItemDeleteConfirm": {}, - "stockItemDeleteFailure": "Stok parçası silinemedi", + "stockItemDeleteFailure": "Stok kalemi silinemedi", "@stockItemDeleteFailure": {}, - "stockItemDeleteSuccess": "Stok ögesi silindi", + "stockItemDeleteSuccess": "Stok kalemi silindi", "@stockItemDeleteSuccess": {}, "stockItemHistory": "Stok Geçmişi", "@stockItemHistory": {}, - "stockItemHistoryDetail": "Geçmiş stok takip bilgisini göster", + "stockItemHistoryDetail": "Geçmiş stok takip bilgisini görüntüle", "@stockItemHistoryDetail": {}, - "stockItemTransferred": "Stok ögesi aktarıldı", + "stockItemTransferred": "Stok kalemi aktarıldı", "@stockItemTransferred": {}, - "stockItemUpdated": "Stok ögesi güncellendi", + "stockItemUpdated": "Stok kalemi güncellendi", "@stockItemUpdated": {}, - "stockItemsNotAvailable": "Kullanılabilir stok ögesi yok", + "stockItemsNotAvailable": "Stok kalemi bulunmamaktadır", "@stockItemsNotAvailable": {}, "stockItemNotes": "Stok Kalemi Notları", "@stockItemNotes": {}, @@ -1056,11 +1056,11 @@ "@supplier": {}, "supplierPart": "Tedarikçi Parçası", "@supplierPart": {}, - "supplierPartEdit": "Sağlayıcı Parçasını Düzenle", + "supplierPartEdit": "Tedarikçi Parçasını Düzenle", "@supplierPartEdit": {}, - "supplierPartNumber": "Sağlayıcı Parça Numarası", + "supplierPartNumber": "Tedarikçi Parça Numarası", "@supplierPartNumber": {}, - "supplierPartUpdated": "Sağlayıcı Parçası Güncellendi", + "supplierPartUpdated": "Tedarikçi Parçası Güncellendi", "@supplierPartUpdated": {}, "supplierParts": "Tedarikçi Parçaları", "@supplierParts": {}, @@ -1086,7 +1086,7 @@ "@testResults": { "description": "" }, - "testResultsDetail": "Stok ögesi test sonuçlarını görüntüle", + "testResultsDetail": "Stok kalemi test sonuçlarını görüntüle", "@testResultsDetail": {}, "testResultAdd": "Test Sonucu Ekle", "@testResultAdd": {}, @@ -1166,7 +1166,7 @@ "@valueCannotBeEmpty": {}, "valueRequired": "Değer gereklidir", "@valueRequired": {}, - "variants": "Türevler", + "variants": "Varyantlar", "@variants": {}, "version": "Sürüm", "@version": {}, @@ -1188,13 +1188,13 @@ "@salePrice": {}, "saleHistory": "Satış Geçmişi", "@saleHistory": {}, - "supplierPricing": "Sağlayıcı Fiyatlandırması", + "supplierPricing": "Tedarikçi Fiyatlandırması", "@supplierPricing": {}, "bomCost": "BoM Maliyeti", "@bomCost": {}, "internalCost": "Dahili Maliyet", "@internalCost": {}, - "variantCost": "Türev Maliyeti", + "variantCost": "Varyant Maliyeti", "@variantCost": {}, "overallPricing": "Genel Fiyatlandırma", "@overallPricing": {}, diff --git a/lib/l10n/uk_UA/app_uk_UA.arb b/lib/l10n/uk_UA/app_uk_UA.arb index 5eb5c48..da21c3a 100644 --- a/lib/l10n/uk_UA/app_uk_UA.arb +++ b/lib/l10n/uk_UA/app_uk_UA.arb @@ -46,7 +46,7 @@ "@aspectRatioSquare": {}, "allocateStock": "Виділити запас", "@allocateStock": {}, - "allocatedStock": "Allocated Stock", + "allocatedStock": "Виділений Запас", "@allocatedStock": {}, "appReleaseNotes": "Показати примітки до випуску", "@appReleaseNotes": {}, @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Сканування штрих-кодів призупинено", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Торкніться або утримуйте, щоб призупинити сканування", "@barcodeScanPause": {}, "barcodeScanAssign": "Сканувати щоб призначити штрих-код", "@barcodeScanAssign": {}, @@ -228,11 +228,11 @@ "@delete": {}, "deleteFailed": "Помилка видалення", "@deleteFailed": {}, - "deleteImageConfirmation": "Are you sure you want to delete this image?", + "deleteImageConfirmation": "Ви дійсно хочете видалити це зображення?", "@deleteImageConfirmation": {}, - "deleteImageTooltip": "Delete Image", + "deleteImageTooltip": "Видалити Зображення", "@deleteImageTooltip": {}, - "deleteImage": "Delete Image", + "deleteImage": "Видалити Зображення", "@deleteImage": {}, "deletePart": "Видалити деталь", "@deletePart": {}, @@ -240,7 +240,7 @@ "@deletePartDetail": {}, "deleteSuccess": "Операція видалення пройшла успішно", "@deleteSuccess": {}, - "deliveryDate": "Delivery Date", + "deliveryDate": "Дата Доставки", "@deliveryDate": {}, "description": "Опис", "@description": {}, @@ -384,9 +384,9 @@ "@homeShowPo": {}, "homeShowPoDescription": "Показувати кнопку замовлення на домашньому екрані", "@homeShowPoDescription": {}, - "homeShowShipments": "Show Shipments", + "homeShowShipments": "Показати відправлення", "@homeShowShipments": {}, - "homeShowShipmentsDescription": "Show pending shipments on the home screen", + "homeShowShipmentsDescription": "Показати відкладені відправлення на головному екрані", "@homeShowShipmentsDescription": {}, "homeShowSo": "Показати замовлення", "@homeShowSo": {}, @@ -454,15 +454,15 @@ "@invalidSupplierPart": {}, "invalidUsernamePassword": "Неправильна комбінація імені користувача та пароля", "@invalidUsernamePassword": {}, - "invoice": "Invoice", + "invoice": "Інвойс", "@invoice": {}, - "invoiceNumber": "Invoice Number", + "invoiceNumber": "Номер Інвойсу", "@invoiceNumber": {}, - "issue": "Issue", + "issue": "Видача", "@issue": {}, - "issueDate": "Issue Date", + "issueDate": "Дата Видачі", "@issueDate": {}, - "issueOrder": "Issue Order", + "issueOrder": "Оформити Замовлення", "@issueOrder": {}, "itemInLocation": "Товар вже на місці", "@itemInLocation": {}, @@ -472,9 +472,9 @@ "@itemUpdated": {}, "keywords": "Ключові слова", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "Драйвер Етикеток", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "Вибрати Драйвер Принтера Етикеток", "@labelSelectDriver": {}, "labelPrinting": "Друк Ярликів", "@labelPrinting": {}, @@ -482,9 +482,9 @@ "@labelPrintingDetail": {}, "labelTemplate": "Шаблон Ярлика", "@labelTemplate": {}, - "labelSelectTemplate": "Select Label Template", + "labelSelectTemplate": "Вибрати Шаблон Етикетки", "@labelSelectTemplate": {}, - "labelSelectPrinter": "Select Label Printer", + "labelSelectPrinter": "Вибрати Принтер Етикеток", "@labelSelectPrinter": {}, "language": "Мова", "@language": {}, @@ -492,19 +492,19 @@ "@languageDefault": {}, "languageSelect": "Вибір мови", "@languageSelect": {}, - "lastStocktake": "Last Stocktake", + "lastStocktake": "Остання інвентаризація", "@lastStocktake": {}, "lastUpdated": "Останнє оновлення", "@lastUpdated": {}, "level": "Рівень", "@level": {}, - "lineItemAdd": "Add Line Item", + "lineItemAdd": "Додати Позицію", "@lineItemAdd": {}, - "lineItem": "Line Item", + "lineItem": "Позиція", "@lineItem": {}, - "lineItems": "Line Items", + "lineItems": "Позиції", "@lineItems": {}, - "lineItemUpdated": "Line item updated", + "lineItemUpdated": "Позицію оновлено", "@lineItemUpdated": {}, "locateItem": "Знайти елемент запасів", "@locateItem": {}, @@ -514,7 +514,7 @@ "@locationCreate": {}, "locationCreateDetail": "Створити нове розташування на складі", "@locationCreateDetail": {}, - "locationDefault": "Default Location", + "locationDefault": "Розташування за замовчуванням", "@locationDefault": {}, "locationNotSet": "Розташування не вказано", "@locationNotSet": {}, @@ -544,9 +544,9 @@ "@missingData": {}, "name": "Назва", "@name": {}, - "no": "No", + "no": "Ні", "@no": {}, - "notApplicable": "N/A", + "notApplicable": "Н/Д", "@notApplicable": {}, "notConnected": "Не під’єднано", "@notConnected": {}, @@ -564,19 +564,19 @@ "@noResults": {}, "noImageAvailable": "Немає доступного зображення", "@noImageAvailable": {}, - "noPricingAvailable": "No pricing available", + "noPricingAvailable": "Ціни не вказано", "@noPricingAvailable": {}, - "noPricingDataFound": "No pricing data found for this part", + "noPricingDataFound": "Для цієї деталі не знайдено даних про ціну", "@noPricingDataFound": {}, - "noSubcategories": "No Subcategories", + "noSubcategories": "Немає Підкатегорій", "@noSubcategories": {}, - "noSubcategoriesAvailable": "No subcategories available", + "noSubcategoriesAvailable": "Немає доступних підкатегорій", "@noSubcategoriesAvailable": {}, "numberInvalid": "Некоректний номер", "@numberInvalid": {}, - "onOrder": "On Order", + "onOrder": "У замовленні", "@onOrder": {}, - "onOrderDetails": "Items currently on order", + "onOrderDetails": "Позиції в поточних замовленнях", "@onOrderDetails": {}, "orientation": "Орієнтація екрана", "@orientation": {}, @@ -632,7 +632,7 @@ "@partNoResults": {}, "partPricing": "Ціна деталі", "@partPricing": {}, - "partPricingSettingDetail": "Display part pricing information", + "partPricingSettingDetail": "Відображати інформацію про ціни на деталь", "@pricingSettingDetail": {}, "partSettings": "Налаштування позиції", "@partSettings": {}, @@ -652,7 +652,7 @@ "@partDetails": {}, "partNotes": "Примітки до позиції", "@partNotes": {}, - "partStock": "Part Stock", + "partStock": "Наявність На Складі", "@partStock": { "description": "part stock" }, @@ -660,7 +660,7 @@ "@password": {}, "passwordEmpty": "Пароль не може бути порожнім", "@passwordEmpty": {}, - "pending": "Pending", + "pending": "В очікуванні", "@pending": {}, "permissionAccountDenied": "Ваш обліковий запис не має необхідних прав для виконання цієї дії", "@permissionAccountDenied": {}, @@ -712,27 +712,27 @@ "@purchaseOrderConfirmScan": {}, "purchaseOrderConfirmScanDetail": "Підтвердити подробиці при скануванні в позицій", "@purchaseOrderConfirmScanDetail": {}, - "purchaseOrderEnable": "Enable Purchase Orders", + "purchaseOrderEnable": "Увімкнути Закупівлю", "@purchaseOrderEnable": {}, - "purchaseOrderEnableDetail": "Enable purchase order functionality", + "purchaseOrderEnableDetail": "Увімкнути функціонал закупівлі", "@purchaseOrderEnableDetail": {}, - "purchaseOrderShowCamera": "Camera Shortcut", + "purchaseOrderShowCamera": "Швидкий Доступ до Камери", "@purchaseOrderShowCamera": {}, - "purchaseOrderShowCameraDetail": "Enable image upload shortcut on purchase order screen", + "purchaseOrderShowCameraDetail": "Увімкнути ярлик для завантаження зображень на екрані закупівель", "@purchaseOrderShowCameraDetail": {}, - "purchaseOrder": "Purchase Order", + "purchaseOrder": "Замовлення на Закупівлю", "@purchaseOrder": {}, - "purchaseOrderCreate": "New Purchase Order", + "purchaseOrderCreate": "Нове Замовлення на Закупівлю", "@purchaseOrderCreate": {}, - "purchaseOrderEdit": "Edit Purchase Order", + "purchaseOrderEdit": "Редагувати Замовлення на Закупівлю", "@purchaseOrderEdit": {}, - "purchaseOrderSettings": "Purchase order settings", + "purchaseOrderSettings": "Налаштування замовлення на закупівлю", "@purchaseOrderSettings": {}, - "purchaseOrders": "Purchase Orders", + "purchaseOrders": "Закупівлі", "@purchaseOrders": {}, - "purchaseOrderUpdated": "Purchase order updated", + "purchaseOrderUpdated": "Замовлення на закупівлю оновлено", "@purchaseOrderUpdated": {}, - "purchasePrice": "Purchase Price", + "purchasePrice": "Закупівельна Ціна", "@purchasePrice": {}, "quantity": "Кількість", "@quantity": { @@ -740,7 +740,7 @@ }, "quantityAvailable": "Доступна кількість", "@quantityAvailable": {}, - "quantityEmpty": "Quantity is empty", + "quantityEmpty": "Кількість не вказана", "@quantityEmpty": {}, "quantityInvalid": "Некоректна кількість", "@quantityInvalid": {}, @@ -752,13 +752,13 @@ "@queryNoResults": {}, "received": "Отримано", "@received": {}, - "receivedFilterDetail": "Show received items", + "receivedFilterDetail": "Показувати отримані позиції", "@receivedFilterDetail": {}, - "receiveItem": "Receive Item", + "receiveItem": "Прийняти Позицію", "@receiveItem": {}, - "receivedItem": "Received Stock Item", + "receivedItem": "Отримана Складська Позиція", "@receivedItem": {}, - "reference": "Reference", + "reference": "Номер документа", "@reference": {}, "refresh": "Оновити", "@refresh": {}, @@ -766,7 +766,7 @@ "@rotateClockwise": {}, "refreshing": "Оновлення", "@refreshing": {}, - "rejected": "Rejected", + "rejected": "Відхилено", "@rejected": {}, "releaseNotes": "Замітки до випуску", "@releaseNotes": {}, From bf19ace3e93754c86d70b6cd9e0151cecf72896e Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 7 Jan 2026 10:38:10 +1100 Subject: [PATCH 07/17] New Crowdin updates (#742) * New translations app_en.arb (Turkish) * New translations app_en.arb (Persian) * New translations app_en.arb (Turkish) * New translations app_en.arb (Turkish) * New translations app_en.arb (Turkish) * New translations app_en.arb (Spanish, Mexico) * New translations app_en.arb (Turkish) * New translations app_en.arb (Chinese Simplified) * New translations app_en.arb (Turkish) * New translations app_en.arb (Danish) * New translations app_en.arb (Danish) * New translations app_en.arb (Danish) * New translations app_en.arb (Turkish) * New translations app_en.arb (Polish) * New translations app_en.arb (Romanian) * New translations app_en.arb (Romanian) * New translations app_en.arb (Danish) * New translations app_en.arb (Romanian) --- lib/l10n/da_DK/app_da_DK.arb | 936 +++++++++++++++++------------------ lib/l10n/es_MX/app_es_MX.arb | 6 +- lib/l10n/fa_IR/app_fa_IR.arb | 126 ++--- lib/l10n/pl_PL/app_pl_PL.arb | 2 +- lib/l10n/ro_RO/app_ro_RO.arb | 330 ++++++------ lib/l10n/tr_TR/app_tr_TR.arb | 110 ++-- lib/l10n/zh_CN/app_zh_CN.arb | 4 +- 7 files changed, 757 insertions(+), 757 deletions(-) diff --git a/lib/l10n/da_DK/app_da_DK.arb b/lib/l10n/da_DK/app_da_DK.arb index 697846b..c05efb3 100644 --- a/lib/l10n/da_DK/app_da_DK.arb +++ b/lib/l10n/da_DK/app_da_DK.arb @@ -42,11 +42,11 @@ "@aspectRatio3x2": {}, "aspectRatio4x3": "4:3", "@aspectRatio4x3": {}, - "aspectRatioSquare": "Square (1:1)", + "aspectRatioSquare": "Firkantet (1:1)", "@aspectRatioSquare": {}, "allocateStock": "Tildel lager", "@allocateStock": {}, - "allocatedStock": "Allocated Stock", + "allocatedStock": "Allokeret Lager", "@allocatedStock": {}, "appReleaseNotes": "Vis app-udgivelsesnoter", "@appReleaseNotes": {}, @@ -54,9 +54,9 @@ "@appSettings": {}, "appSettingsDetails": "Konfigurer InvenTree app-indstillinger", "@appSettingsDetails": {}, - "assignedToMe": "Assigned to Me", + "assignedToMe": "Tildelt til Mig", "@assignedToMe": {}, - "assignedToMeDetail": "Show orders which are assigned to me", + "assignedToMeDetail": "Vis ordrer som er tildelt mig", "@assignedToMeDetail": {}, "attachments": "Vedhæftede filer", "@attachments": {}, @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "Stregkode skanning på pause", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "Tryk for at pause scanning", "@barcodeScanPause": {}, "barcodeScanAssign": "Scan for at tildele stregkode", "@barcodeScanAssign": {}, @@ -112,135 +112,135 @@ "@barcodeScanControllerDetail": {}, "barcodeScanDelay": "Forsinkelse Af Stregkode", "@barcodeScanDelay": {}, - "barcodeScanDelayDetail": "Delay between barcode scans", + "barcodeScanDelayDetail": "Forsinkelse mellem stregkode scanninger", "@barcodeScanDelayDetail": {}, - "barcodeScanGeneral": "Scan an InvenTree barcode", + "barcodeScanGeneral": "Scan en InvenTree stregkode", "@barcodeScanGeneral": {}, - "barcodeScanInItems": "Scan stock items into this location", + "barcodeScanInItems": "Scan lagervare ind på denne lokation", "@barcodeScanInItems": {}, - "barcodeScanLocation": "Scan stock location", + "barcodeScanLocation": "Scan lager lokation", "@barcodeScanLocation": {}, - "barcodeScanSingle": "Single Scan Mode", + "barcodeScanSingle": "Enkelt Scan Tilstand", "@barcodeScanSingle": {}, - "barcodeScanSingleDetail": "Pause barcode scanner after each scan", + "barcodeScanSingleDetail": "Sæt stregkodeskanneren på pause efter hver scanning", "@barcodeScanSingleDetail": {}, - "barcodeScanIntoLocationSuccess": "Scanned into location", + "barcodeScanIntoLocationSuccess": "Scannet ind i lokation", "@barcodeScanIntoLocationSuccess": {}, - "barcodeScanIntoLocationFailure": "Item not scanned in", + "barcodeScanIntoLocationFailure": "Element er ikke scannet ind", "@barcodeScanIntoLocationFailure": {}, - "barcodeScanItem": "Scan stock item", + "barcodeScanItem": "Scan lagervare", "@barcodeScanItem": {}, - "barcodeTones": "Barcode Tones", + "barcodeTones": "Stregkodetoner", "@barcodeTones": {}, - "barcodeUnassign": "Unassign Barcode", + "barcodeUnassign": "Frigiv Stregkode", "@barcodeUnassign": {}, - "barcodeUnknown": "Barcode is not recognized", + "barcodeUnknown": "Stregkode ikke genkendt", "@barcodeUnknown": {}, - "batchCode": "Batch Code", + "batchCode": "Batch kode", "@batchCode": {}, - "billOfMaterials": "Bill of Materials", + "billOfMaterials": "Stykliste", "@billOfMaterials": {}, - "bom": "BOM", + "bom": "Stykliste", "@bom": {}, - "bomEnable": "Display Bill of Materials", + "bomEnable": "Vis Stykliste", "@bomEnable": {}, - "build": "Build", + "build": "Byg", "@build": {}, - "building": "Building", + "building": "Bygger", "@building": {}, - "cameraCreationError": "Could not open camera controller", + "cameraCreationError": "Kunne ikke åbne kameracontrolleren", "@cameraCreationError": {}, - "cameraInternal": "Internal Camera", + "cameraInternal": "Internt Kamera", "@cameraInternal": {}, - "cameraInternalDetail": "Use internal camera to read barcodes", + "cameraInternalDetail": "Brug internt kamera til at læse stregkoder", "@cameraInternalDetail": {}, - "cancel": "Cancel", + "cancel": "Annuller", "@cancel": { "description": "Cancel" }, - "cancelOrder": "Cancel Order", + "cancelOrder": "Annuller ordre", "@cancelOrder": {}, - "category": "Category", + "category": "Kategori", "@category": {}, - "categoryCreate": "New Category", + "categoryCreate": "Ny kategori", "@categoryCreate": {}, - "categoryCreateDetail": "Create new part category", + "categoryCreateDetail": "Opret ny del kategori", "@categoryCreateDetail": {}, - "categoryUpdated": "Part category updated", + "categoryUpdated": "Del kategori opdateret", "@categoryUpdated": {}, - "company": "Company", + "company": "Firma", "@company": {}, - "companyAdd": "Add Company", + "companyAdd": "Tilføj firma", "@companyAdd": {}, - "companyEdit": "Edit Company", + "companyEdit": "Rediger virksomhed", "@companyEdit": {}, - "companyNoResults": "No companies matching query", + "companyNoResults": "Ingen virksomheder, der matcher forespørgsel", "@companyNoResults": {}, - "companyUpdated": "Company details updated", + "companyUpdated": "Virksomhedsoplysninger opdateret", "@companyUpdated": {}, - "companies": "Companies", + "companies": "Firmaer", "@companies": {}, - "complete": "Complete", + "complete": "Færdiggjort", "@complete": {}, - "completeOrder": "Complete Order", + "completeOrder": "Fuldfør ordre", "@completeOrder": {}, - "completionDate": "Completion Date", + "completionDate": "Færdiggørelsesdato", "@completionDate": {}, - "configureServer": "Configure server settings", + "configureServer": "Konfigurer serverindstillinger", "@configureServer": {}, - "confirmScan": "Confirm Transfer", + "confirmScan": "Bekræft overførsel", "@confirmScan": {}, - "confirmScanDetail": "Confirm stock transfer details when scanning barcodes", + "confirmScanDetail": "Bekræft lageroverførsel detaljer ved scanning stregkoder", "@confirmScanDetail": {}, - "connectionRefused": "Connection Refused", + "connectionRefused": "Forbindelse Afvist", "@connectionRefused": {}, - "count": "Count", + "count": "Antal", "@count": { "description": "Count" }, - "countStock": "Count Stock", + "countStock": "Tæl Lager", "@countStock": { "description": "Count Stock" }, - "credits": "Credits", + "credits": "Anerkendelser", "@credits": {}, - "crop": "Crop", + "crop": "Beskær", "@crop": {}, - "cropImage": "Crop Image", + "cropImage": "Beskær billede", "@cropImage": {}, - "customer": "Customer", + "customer": "Kunde", "@customer": {}, - "customers": "Customers", + "customers": "Kunder", "@customers": {}, - "customerReference": "Customer Reference", + "customerReference": "Kundens Reference", "@customerReference": {}, - "damaged": "Damaged", + "damaged": "Beskadiget", "@damaged": {}, - "colorScheme": "Color Scheme", + "colorScheme": "Farveskema", "@colorScheme": {}, - "colorSchemeDetail": "Select color scheme", + "colorSchemeDetail": "Vælg farveskema", "@colorSchemeDetail": {}, - "darkMode": "Dark Mode", + "darkMode": "Mørk tilstand", "@darkMode": {}, - "darkModeEnable": "Enable dark mode", + "darkModeEnable": "Aktiver mørk tilstand", "@darkModeEnable": {}, - "delete": "Delete", + "delete": "Slet", "@delete": {}, - "deleteFailed": "Delete operation failed", + "deleteFailed": "Sletning fejlede", "@deleteFailed": {}, - "deleteImageConfirmation": "Are you sure you want to delete this image?", + "deleteImageConfirmation": "Er du sikker på at du vil slette dette billede?", "@deleteImageConfirmation": {}, - "deleteImageTooltip": "Delete Image", + "deleteImageTooltip": "Slet billede", "@deleteImageTooltip": {}, - "deleteImage": "Delete Image", + "deleteImage": "Slet billede", "@deleteImage": {}, - "deletePart": "Delete Part", + "deletePart": "Slet Del", "@deletePart": {}, - "deletePartDetail": "Remove this part from the database", + "deletePartDetail": "Fjern denne del fra databasen", "@deletePartDetail": {}, "deleteSuccess": "Sletning lykkedes", "@deleteSuccess": {}, - "deliveryDate": "Delivery Date", + "deliveryDate": "Leveringsdato", "@deliveryDate": {}, "description": "Beskrivelse", "@description": {}, @@ -254,9 +254,9 @@ }, "documentation": "Dokumentation", "@documentation": {}, - "downloadComplete": "Download Complete", + "downloadComplete": "Download fuldført", "@downloadComplete": {}, - "downloadError": "Error downloading image", + "downloadError": "Fejl ved download af billede", "@downloadError": {}, "downloading": "Overfører fil", "@downloading": {}, @@ -264,7 +264,7 @@ "@edit": { "description": "edit" }, - "editAttachment": "Edit Attachment", + "editAttachment": "Rediger Vedhæftning", "@editAttachment": {}, "editCategory": "Rediger kategori", "@editCategory": {}, @@ -282,91 +282,91 @@ "@editItem": {}, "editLineItem": "Rediger Linjeelement", "@editLineItem": {}, - "email": "Email", + "email": "E-mail", "@email": {}, "enterPassword": "Indtast adgangskode", "@enterPassword": {}, "enterUsername": "Indtast brugernavn", "@enterUsername": {}, - "error": "Error", + "error": "Fejl", "@error": { "description": "Error" }, - "errorCreate": "Error creating database entry", + "errorCreate": "Fejl under oprettelse af database post", "@errorCreate": {}, - "errorDelete": "Error deleting database entry", + "errorDelete": "Fejl ved sletning af databasepost", "@errorDelete": {}, - "errorDetails": "Error Details", + "errorDetails": "Fejldetaljer", "@errorDetails": {}, - "errorFetch": "Error fetching data from server", + "errorFetch": "Fejl ved hentning af data fra server", "@errorFetch": {}, - "errorUserRoles": "Error requesting user roles from server", + "errorUserRoles": "Fejl ved forespørgsel af brugerroller fra server", "@errorUserRoles": {}, - "errorPluginInfo": "Error requesting plugin data from server", + "errorPluginInfo": "Fejl ved forespørgsel af plugin data fra server", "@errorPluginInfo": {}, - "errorReporting": "Error Reporting", + "errorReporting": "Fejlrapportering", "@errorReporting": {}, - "errorReportUpload": "Upload Error Reports", + "errorReportUpload": "Upload Fejlrapporter", "@errorReportUpload": {}, - "errorReportUploadDetails": "Upload anonymous error reports and crash logs", + "errorReportUploadDetails": "Upload anonyme fejlrapporter og nedbrudslogs", "@errorReportUploadDetails": {}, - "expiryDate": "Expiry Date", + "expiryDate": "Udløbsdato", "@expiryDate": {}, - "expiryExpired": "Expired", + "expiryExpired": "Udløbet", "@expiryExpired": {}, - "expiryStale": "Stale", + "expiryStale": "Forældet", "@expiryStale": {}, - "extraLineItem": "Extra Line Item", + "extraLineItem": "Ekstra linjepost", "@extraLineItem": {}, - "extraLineItems": "Extra Line Items", + "extraLineItems": "Ekstra linjeposter", "@extraLineItems": {}, "feedback": "Feedback", "@feedback": {}, - "feedbackError": "Error submitting feedback", + "feedbackError": "Indsendelse af feedback mislykkedes", "@feedbackError": {}, - "feedbackSuccess": "Feedback submitted", + "feedbackSuccess": "Feedback indsendt", "@feedbackSuccess": {}, "filterActive": "Aktiv", "@filterActive": {}, - "filterActiveDetail": "Show active parts", + "filterActiveDetail": "Vis aktive dele", "@filterActiveDetail": {}, - "filterAssembly": "Assembled", + "filterAssembly": "Samlede", "@filterAssembly": {}, - "filterAssemblyDetail": "Show assembled parts", + "filterAssemblyDetail": "Vis samledele", "@filterAssemblyDetail": {}, - "filterComponent": "Component", + "filterComponent": "Komponent", "@filterComponent": {}, - "filterComponentDetail": "Show component parts", + "filterComponentDetail": "Vis komponentdele", "@filterComponentDetail": {}, - "filterExternal": "External", + "filterExternal": "Ekstern", "@filterExternal": {}, - "filterExternalDetail": "Show stock in external locations", + "filterExternalDetail": "Vis lager på eksterne lokationer", "@filterExternalDetail": {}, "filterInStock": "På Lager", "@filterInStock": {}, - "filterInStockDetail": "Show parts which have stock", + "filterInStockDetail": "Vis dele som har lagerbeholdning", "@filterInStockDetail": {}, - "filterSerialized": "Serialized", + "filterSerialized": "Serialiseret", "@filterSerialized": {}, - "filterSerializedDetail": "Show serialized stock items", + "filterSerializedDetail": "Vis serialiserede lagervarer", "@filterSerializedDetail": {}, - "filterTemplate": "Template", + "filterTemplate": "Skabelon", "@filterTemplate": {}, - "filterTemplateDetail": "Show template parts", + "filterTemplateDetail": "Vis skabelon dele", "@filterTemplateDetail": {}, - "filterTrackable": "Trackable", + "filterTrackable": "Sporbar", "@filterTrackable": {}, - "filterTrackableDetail": "Show trackable parts", + "filterTrackableDetail": "Vis sporbare dele", "@filterTrackableDetail": {}, "filterVirtual": "Virtuel", "@filterVirtual": {}, - "filterVirtualDetail": "Show virtual parts", + "filterVirtualDetail": "Vis virtuelle dele", "@filterVirtualDetail": {}, - "filteringOptions": "Filtering Options", + "filteringOptions": "Filtreringsindstillinger", "@filteringOptions": {}, - "formatException": "Format Exception", + "formatException": "Format Undtagelse", "@formatException": {}, - "formatExceptionJson": "JSON data format exception", + "formatExceptionJson": "Undtagelse fra JSON-dataformat", "@formatExceptionJson": {}, "formError": "Formular Fejl", "@formError": {}, @@ -384,51 +384,51 @@ "@homeShowPo": {}, "homeShowPoDescription": "Vis indkøbsordreknap på startskærmen", "@homeShowPoDescription": {}, - "homeShowShipments": "Show Shipments", + "homeShowShipments": "Vis Forsendelser", "@homeShowShipments": {}, - "homeShowShipmentsDescription": "Show pending shipments on the home screen", + "homeShowShipmentsDescription": "Vis afventende forsendelser på startskærmen", "@homeShowShipmentsDescription": {}, - "homeShowSo": "Show Sales Orders", + "homeShowSo": "Vis Salgs ordrer", "@homeShowSo": {}, - "homeShowSoDescription": "Show sales order button on home screen", + "homeShowSoDescription": "Vis salgsknap på startskærmen", "@homeShowSoDescription": {}, - "homeShowSubscribed": "Subscribed Parts", + "homeShowSubscribed": "Abonnerede Dele", "@homeShowSubscribed": {}, - "homeShowSubscribedDescription": "Show subscribed parts on home screen", + "homeShowSubscribedDescription": "Vis abonnerede dele på startskærmen", "@homeShowSubscsribedDescription": {}, "homeShowSuppliers": "Vis Leverandører", "@homeShowSuppliers": {}, - "homeShowSuppliersDescription": "Show suppliers button on home screen", + "homeShowSuppliersDescription": "Vis leverandørknap på startskærmen", "@homeShowSupplierDescription": {}, - "homeShowManufacturers": "Show Manufacturers", + "homeShowManufacturers": "Vis Producenter", "@homeShowManufacturers": {}, - "homeShowManufacturersDescription": "Show manufacturers button on home screen", + "homeShowManufacturersDescription": "Vis producent-knap på startskærmen", "@homeShowManufacturersDescription": {}, - "homeShowCustomers": "Show Customers", + "homeShowCustomers": "Vis Kunder", "@homeShowCustomers": {}, - "homeShowCustomersDescription": "Show customers button on home screen", + "homeShowCustomersDescription": "Vis kunde-knap på startskærmen", "@homeShowCustomersDescription": {}, - "imageUploadFailure": "Image upload failed", + "imageUploadFailure": "Upload af billede fejlede", "@imageUploadFailure": {}, - "imageUploadSuccess": "Image uploaded", + "imageUploadSuccess": "Billede uploadet", "@imageUploadSuccess": {}, "inactive": "Inaktiv", "@inactive": {}, - "inactiveCompany": "This company is marked as inactive", + "inactiveCompany": "Virksomheden er markeret som inaktiv", "@inactiveCompany": {}, - "inactiveDetail": "This part is marked as inactive", + "inactiveDetail": "Denne del er markeret som inaktiv", "@inactiveDetail": {}, - "includeSubcategories": "Include Subcategories", + "includeSubcategories": "Inkluder underkategorier", "@includeSubcategories": {}, - "includeSubcategoriesDetail": "Show results from subcategories", + "includeSubcategoriesDetail": "Vis resultater fra underkategorier", "@includeSubcategoriesDetail": {}, - "includeSublocations": "Include Sublocations", + "includeSublocations": "Inkluder underlokationer", "@includeSublocations": {}, - "includeSublocationsDetail": "Show results from sublocations", + "includeSublocationsDetail": "Vis resultater fra underkategorier", "@includeSublocationsDetail": {}, - "incompleteDetails": "Incomplete profile details", + "incompleteDetails": "Ukomplette profiloplysninger", "@incompleteDetails": {}, - "internalPartNumber": "Internal Part Number", + "internalPartNumber": "Internt Delnummer", "@internalPartNumber": {}, "info": "Info", "@info": {}, @@ -438,9 +438,9 @@ "@inProductionDetail": {}, "internalPart": "Intern Del", "@internalPart": {}, - "invalidHost": "Invalid hostname", + "invalidHost": "Ugyldigt hostnavn", "@invalidHost": {}, - "invalidHostDetails": "Provided hostname is not valid", + "invalidHostDetails": "Det angivne hostnavn er ikke gyldigt", "@invalidHostDetails": {}, "invalidPart": "Ugyldig Del", "@invalidPart": {}, @@ -454,754 +454,754 @@ "@invalidSupplierPart": {}, "invalidUsernamePassword": "Ugyldigt brugernavn/adgangskode-kombination", "@invalidUsernamePassword": {}, - "invoice": "Invoice", + "invoice": "Faktura", "@invoice": {}, - "invoiceNumber": "Invoice Number", + "invoiceNumber": "Fakturanummer", "@invoiceNumber": {}, - "issue": "Issue", + "issue": "Problem", "@issue": {}, - "issueDate": "Issue Date", + "issueDate": "Udstedelsesdato", "@issueDate": {}, - "issueOrder": "Issue Order", + "issueOrder": "Udstede Ordre", "@issueOrder": {}, - "itemInLocation": "Item already in location", + "itemInLocation": "Element allerede på placering", "@itemInLocation": {}, - "itemDeleted": "Item has been removed", + "itemDeleted": "Element er blevet fjernet", "@itemDeleted": {}, - "itemUpdated": "Item updated", + "itemUpdated": "Element opdateret", "@itemUpdated": {}, - "keywords": "Keywords", + "keywords": "Nøgleord", "@keywords": {}, "labelDriver": "Label Driver", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "Vælg Label Printer Driver", "@labelSelectDriver": {}, - "labelPrinting": "Label Printing", + "labelPrinting": "Label Udskriver", "@labelPrinting": {}, - "labelPrintingDetail": "Enable label printing", + "labelPrintingDetail": "Aktiver label udskrivning", "@labelPrintingDetail": {}, - "labelTemplate": "Label Template", + "labelTemplate": "Label Skabelon", "@labelTemplate": {}, - "labelSelectTemplate": "Select Label Template", + "labelSelectTemplate": "Vælg Label Skabelon", "@labelSelectTemplate": {}, - "labelSelectPrinter": "Select Label Printer", + "labelSelectPrinter": "Vælg Label Printer", "@labelSelectPrinter": {}, - "language": "Language", + "language": "Sprog", "@language": {}, - "languageDefault": "Default system language", + "languageDefault": "Standard systemsprog", "@languageDefault": {}, - "languageSelect": "Select Language", + "languageSelect": "Vælg sprog", "@languageSelect": {}, - "lastStocktake": "Last Stocktake", + "lastStocktake": "Sidste lageroptagelse", "@lastStocktake": {}, - "lastUpdated": "Last Updated", + "lastUpdated": "Senest opdateret", "@lastUpdated": {}, - "level": "Level", + "level": "Niveau", "@level": {}, - "lineItemAdd": "Add Line Item", + "lineItemAdd": "Tilføj Linjeelement", "@lineItemAdd": {}, - "lineItem": "Line Item", + "lineItem": "Linje Element", "@lineItem": {}, - "lineItems": "Line Items", + "lineItems": "Linjeelementer", "@lineItems": {}, - "lineItemUpdated": "Line item updated", + "lineItemUpdated": "Linje element opdateret", "@lineItemUpdated": {}, - "locateItem": "Locate stock item", + "locateItem": "Find lagervare", "@locateItem": {}, - "locateLocation": "Locate stock location", + "locateLocation": "Find lager lokation", "@locateLocation": {}, - "locationCreate": "New Location", + "locationCreate": "Ny lokation", "@locationCreate": {}, - "locationCreateDetail": "Create new stock location", + "locationCreateDetail": "Opret ny lagerlokation", "@locationCreateDetail": {}, - "locationDefault": "Default Location", + "locationDefault": "Standard lokation", "@locationDefault": {}, - "locationNotSet": "No location specified", + "locationNotSet": "Ingen lokation specificeret", "@locationNotSet": {}, - "locationUpdated": "Stock location updated", + "locationUpdated": "Lager lokation opdateret", "@locationUpdated": {}, - "login": "Login", + "login": "Log ind", "@login": {}, - "loginEnter": "Enter login details", + "loginEnter": "Indtast login detaljer", "@loginEnter": {}, - "loginEnterDetails": "Username and password are not stored locally", + "loginEnterDetails": "Brugernavn og adgangskode er ikke gemt lokalt", "@loginEnterDetails": {}, "link": "Link", "@link": {}, - "lost": "Lost", + "lost": "Mistet", "@lost": {}, - "manufacturerPart": "Manufacturer Part", + "manufacturerPart": "Producent Del", "@manufacturerPart": {}, - "manufacturerPartEdit": "Edit Manufacturer Part", + "manufacturerPartEdit": "Rediger Producent Del", "@manufacturerPartEdit": {}, - "manufacturerPartNumber": "Manufacturer Part Number", + "manufacturerPartNumber": "Producent Delnummer", "@manufacturerPartNumber": {}, - "manufacturer": "Manufacturer", + "manufacturer": "Producent", "@manufacturer": {}, - "manufacturers": "Manufacturers", + "manufacturers": "Producenter", "@manufacturers": {}, - "missingData": "Missing Data", + "missingData": "Mangler data", "@missingData": {}, - "name": "Name", + "name": "Navn", "@name": {}, - "no": "No", + "no": "Nej", "@no": {}, "notApplicable": "N/A", "@notApplicable": {}, - "notConnected": "Not Connected", + "notConnected": "Ikke Forbundet", "@notConnected": {}, - "notes": "Notes", + "notes": "Noter", "@notes": { "description": "Notes" }, - "notifications": "Notifications", + "notifications": "Notifikationer", "@notifications": {}, - "notificationsEmpty": "No unread notifications", + "notificationsEmpty": "Ingen ulæste notifikationer", "@notificationsEmpty": {}, - "noResponse": "No Response from Server", + "noResponse": "Intet svar fra server", "@noResponse": {}, - "noResults": "No Results", + "noResults": "Ingen Resultater", "@noResults": {}, - "noImageAvailable": "No image available", + "noImageAvailable": "Intet billede tilgængeligt", "@noImageAvailable": {}, - "noPricingAvailable": "No pricing available", + "noPricingAvailable": "Ingen priser tilgængelig", "@noPricingAvailable": {}, - "noPricingDataFound": "No pricing data found for this part", + "noPricingDataFound": "Ingen prisdata fundet for denne del", "@noPricingDataFound": {}, - "noSubcategories": "No Subcategories", + "noSubcategories": "Ingen Underkategorier", "@noSubcategories": {}, - "noSubcategoriesAvailable": "No subcategories available", + "noSubcategoriesAvailable": "Ingen underkategorier tilgængelige", "@noSubcategoriesAvailable": {}, - "numberInvalid": "Invalid number", + "numberInvalid": "Ugyldigt nummer", "@numberInvalid": {}, - "onOrder": "On Order", + "onOrder": "På bestilling", "@onOrder": {}, - "onOrderDetails": "Items currently on order", + "onOrderDetails": "Elementer i øjeblikket på ordre", "@onOrderDetails": {}, - "orientation": "Screen Orientation", + "orientation": "Skærm Orientering", "@orientation": {}, - "orientationDetail": "Screen orientation (requires restart)", + "orientationDetail": "Skærm orientering (kræver genstart)", "@orientationDetail": {}, - "orientationLandscape": "Landscape", + "orientationLandscape": "Landskab", "@orientationLandscape": {}, - "orientationPortrait": "Portrait", + "orientationPortrait": "Portræt", "@orientationPortrait": {}, "orientationSystem": "System", "@orientationSystem": {}, - "outstanding": "Outstanding", + "outstanding": "Udestående", "@outstanding": {}, - "outstandingOrderDetail": "Show outstanding orders", + "outstandingOrderDetail": "Vis udestående ordrer", "@outstandingOrderDetail": {}, - "overdue": "Overdue", + "overdue": "Overskredet", "@overdue": {}, - "overdueDetail": "Show overdue orders", + "overdueDetail": "Vis forfaldne ordre", "@overdueDetail": {}, - "packaging": "Packaging", + "packaging": "Emballage", "@packaging": {}, - "packageName": "Package Name", + "packageName": "Pakkenavn", "@packageName": {}, - "parameters": "Parameters", + "parameters": "Parametre", "@parameters": {}, - "parametersSettingDetail": "Display part parameters", + "parametersSettingDetail": "Vis delparametre", "@parametersSettingDetail": {}, - "parent": "Parent", + "parent": "Overordnet", "@parent": {}, - "parentCategory": "Parent Category", + "parentCategory": "Overordnet kategori", "@parentCategory": {}, - "parentLocation": "Parent Location", + "parentLocation": "Overordnet Placering", "@parentLocation": {}, - "part": "Part", + "part": "Del", "@part": { "description": "Part (single)" }, - "partCreate": "New Part", + "partCreate": "Ny Del", "@partCreate": {}, - "partCreateDetail": "Create new part in this category", + "partCreateDetail": "Opret ny del i denne kategori", "@partCreateDetail": {}, - "partEdited": "Part updated", + "partEdited": "Del opdateret", "@partEdited": {}, - "parts": "Parts", + "parts": "Dele", "@parts": { "description": "Part (multiple)" }, - "partNotSalable": "Part not marked as salable", + "partNotSalable": "Del ikke markeret som salgbart", "@partNotSalable": {}, - "partsNone": "No Parts", + "partsNone": "Ingen Dele", "@partsNone": {}, - "partNoResults": "No parts matching query", + "partNoResults": "Ingen dele matcher forespørgsel", "@partNoResults": {}, - "partPricing": "Part Pricing", + "partPricing": "Del Prisfastsættelse", "@partPricing": {}, - "partPricingSettingDetail": "Display part pricing information", + "partPricingSettingDetail": "Vis delprisinformation", "@pricingSettingDetail": {}, - "partSettings": "Part Settings", + "partSettings": "Del Indstillinger", "@partSettings": {}, - "partsStarred": "Subscribed Parts", + "partsStarred": "Abonnerede Dele", "@partsStarred": {}, - "partsStarredNone": "No starred parts available", + "partsStarredNone": "Ingen markerede dele til rådighed", "@partsStarredNone": {}, - "partSuppliers": "Part Suppliers", + "partSuppliers": "Del Leverandører", "@partSuppliers": {}, - "partCategory": "Part Category", + "partCategory": "Del Kategori", "@partCategory": {}, - "partCategoryTopLevel": "Top level part category", + "partCategoryTopLevel": "Top niveau del kategori", "@partCategoryTopLevel": {}, - "partCategories": "Part Categories", + "partCategories": "Del Kategorier", "@partCategories": {}, - "partDetails": "Part Details", + "partDetails": "Del Detaljer", "@partDetails": {}, - "partNotes": "Part Notes", + "partNotes": "Del Noter", "@partNotes": {}, - "partStock": "Part Stock", + "partStock": "Del Lagerbeholdning", "@partStock": { "description": "part stock" }, - "password": "Password", + "password": "Adgangskode", "@password": {}, - "passwordEmpty": "Password cannot be empty", + "passwordEmpty": "Adgangskode kan ikke være tom", "@passwordEmpty": {}, - "pending": "Pending", + "pending": "Afventende", "@pending": {}, - "permissionAccountDenied": "Your account does not have the required permissions to perform this action", + "permissionAccountDenied": "Din konto har ikke de nødvendige tilladelser til at udføre denne handling", "@permissionAccountDenied": {}, - "permissionRequired": "Permission Required", + "permissionRequired": "Tilladelse påkrævet", "@permissionRequired": {}, - "phone": "Phone", + "phone": "Telefon", "@phone": {}, - "printLabel": "Print Label", + "printLabel": "Udskriv label", "@printLabel": {}, "plugin": "Plugin", "@plugin": {}, "pluginPrinter": "Printer", "@pluginPrinter": {}, - "pluginSupport": "Plugin Support Enabled", + "pluginSupport": "Plugin Support Aktiveret", "@pluginSupport": {}, - "pluginSupportDetail": "The server supports custom plugins", + "pluginSupportDetail": "Serveren understøtter brugerdefinerede plugins", "@pluginSupportDetail": {}, - "printLabelFailure": "Label printing failed", + "printLabelFailure": "Label udskrivning mislykkedes", "@printLabelFailure": {}, - "printLabelSuccess": "Label sent to printer", + "printLabelSuccess": "Label sendt til printer", "@printLabelSuccess": {}, - "profile": "Profile", + "profile": "Profil", "@profile": {}, - "profileAdd": "Add Server Profile", + "profileAdd": "Tilføj Serverprofil", "@profileAdd": {}, - "profileConnect": "Connect to Server", + "profileConnect": "Opretter forbindelse til server", "@profileConnect": {}, - "profileEdit": "Edit Server Profile", + "profileEdit": "Rediger serverprofil", "@profileEdit": {}, - "profileDelete": "Delete Server Profile", + "profileDelete": "Slet Server Profil", "@profileDelete": {}, - "profileLogout": "Logout Profile", + "profileLogout": "Log Af Profil", "@profileLogout": {}, - "profileName": "Profile Name", + "profileName": "Profilnavn", "@profileName": {}, - "profileNone": "No profiles available", + "profileNone": "Ingen profiler til rådighed", "@profileNone": {}, - "profileNotSelected": "No Profile Selected", + "profileNotSelected": "Ingen Profil Valgt", "@profileNotSelected": {}, - "profileSelect": "Select InvenTree Server", + "profileSelect": "Vælg InvenTree Server", "@profileSelect": {}, - "profileSelectOrCreate": "Select server or create a new profile", + "profileSelectOrCreate": "Vælg server eller opret ny profil", "@profileSelectOrCreate": {}, - "profileTapToCreate": "Tap to create or select a profile", + "profileTapToCreate": "Tryk for at oprette eller vælge en profil", "@profileTapToCreate": {}, - "projectCode": "Project Code", + "projectCode": "Projektkode", "@projectCode": {}, - "purchaseOrderConfirmScan": "Confirm Scan Data", + "purchaseOrderConfirmScan": "Bekræft Scanningsdata", "@purchaseOrderConfirmScan": {}, - "purchaseOrderConfirmScanDetail": "Confirm details when scanning in items", + "purchaseOrderConfirmScanDetail": "Bekræft detaljer ved ind scanning af elementer", "@purchaseOrderConfirmScanDetail": {}, - "purchaseOrderEnable": "Enable Purchase Orders", + "purchaseOrderEnable": "Aktive Indkøbsordrer", "@purchaseOrderEnable": {}, - "purchaseOrderEnableDetail": "Enable purchase order functionality", + "purchaseOrderEnableDetail": "Aktiver salgsordre funktionalitet", "@purchaseOrderEnableDetail": {}, - "purchaseOrderShowCamera": "Camera Shortcut", + "purchaseOrderShowCamera": "Genvej Til Kamera", "@purchaseOrderShowCamera": {}, - "purchaseOrderShowCameraDetail": "Enable image upload shortcut on purchase order screen", + "purchaseOrderShowCameraDetail": "Aktiver genvej til billedupload på købsordre skærmen", "@purchaseOrderShowCameraDetail": {}, - "purchaseOrder": "Purchase Order", + "purchaseOrder": "Købsordre", "@purchaseOrder": {}, - "purchaseOrderCreate": "New Purchase Order", + "purchaseOrderCreate": "Ny købsordre", "@purchaseOrderCreate": {}, - "purchaseOrderEdit": "Edit Purchase Order", + "purchaseOrderEdit": "Rediger Købsordre", "@purchaseOrderEdit": {}, - "purchaseOrderSettings": "Purchase order settings", + "purchaseOrderSettings": "Indstillinger for indkøbsordre", "@purchaseOrderSettings": {}, - "purchaseOrders": "Purchase Orders", + "purchaseOrders": "Indkøbsordrer", "@purchaseOrders": {}, - "purchaseOrderUpdated": "Purchase order updated", + "purchaseOrderUpdated": "Købsordre opdateret", "@purchaseOrderUpdated": {}, - "purchasePrice": "Purchase Price", + "purchasePrice": "Købspris", "@purchasePrice": {}, - "quantity": "Quantity", + "quantity": "Antal", "@quantity": { "description": "Quantity" }, - "quantityAvailable": "Quantity Available", + "quantityAvailable": "Antal Tilgængelig", "@quantityAvailable": {}, - "quantityEmpty": "Quantity is empty", + "quantityEmpty": "Antal er tomt", "@quantityEmpty": {}, - "quantityInvalid": "Quantity is invalid", + "quantityInvalid": "Antal er ugyldigt", "@quantityInvalid": {}, - "quantityPositive": "Quantity must be positive", + "quantityPositive": "Antallet skal være positivt", "@quantityPositive": {}, - "queryEmpty": "Enter search query", + "queryEmpty": "Indtast søgestreng", "@queryEmpty": {}, - "queryNoResults": "No results for query", + "queryNoResults": "Ingen resultater fundet", "@queryNoResults": {}, - "received": "Received", + "received": "Modtaget", "@received": {}, - "receivedFilterDetail": "Show received items", + "receivedFilterDetail": "Vis modtagne elementer", "@receivedFilterDetail": {}, - "receiveItem": "Receive Item", + "receiveItem": "Modtage Element", "@receiveItem": {}, - "receivedItem": "Received Stock Item", + "receivedItem": "Modtaget Lagervare", "@receivedItem": {}, "reference": "Reference", "@reference": {}, - "refresh": "Refresh", + "refresh": "Genindlæs", "@refresh": {}, - "rotateClockwise": "Rotate 90° clockwise", + "rotateClockwise": "Roter 90° med uret", "@rotateClockwise": {}, - "refreshing": "Refreshing", + "refreshing": "Genindlæser", "@refreshing": {}, - "rejected": "Rejected", + "rejected": "Afvist", "@rejected": {}, "releaseNotes": "Release Notes", "@releaseNotes": {}, - "remove": "Remove", + "remove": "Fjern", "@remove": { "description": "remove" }, - "removeStock": "Remove Stock", + "removeStock": "Fjern Lagervarer", "@removeStock": { "description": "remove stock" }, - "reportBug": "Report Bug", + "reportBug": "Rapporter fejl", "@reportBug": {}, - "reportBugDescription": "Submit bug report (requires GitHub account)", + "reportBugDescription": "Indsend fejlrapport (kræver GitHub konto)", "@reportBugDescription": {}, - "responsible": "Responsible", + "responsible": "Ansvarlig", "@responsible": {}, - "results": "Results", + "results": "Resultater", "@results": {}, - "request": "Request", + "request": "Anmodning", "@request": {}, - "requestFailed": "Request Failed", + "requestFailed": "Anmodning fejlede", "@requestFailed": {}, - "requestSuccessful": "Request successful", + "requestSuccessful": "Anmodning succesfuld", "@requestSuccessful": {}, - "requestingData": "Requesting Data", + "requestingData": "Anmoder Data", "@requestingData": {}, - "required": "Required", + "required": "Påkrævet", "@required": { "description": "This field is required" }, - "response400": "Bad Request", + "response400": "Dårlig anmodning", "@response400": {}, - "response401": "Unauthorized", + "response401": "Uautoriseret", "@response401": {}, - "response403": "Permission Denied", + "response403": "Adgang nægtet", "@response403": {}, - "response404": "Resource Not Found", + "response404": "Ressource Ikke Fundet", "@response404": {}, - "response405": "Method Not Allowed", + "response405": "Metode ikke tilladt", "@response405": {}, - "response429": "Too Many Requests", + "response429": "For Mange Anmodninger", "@response429": {}, - "response500": "Internal Server Error", + "response500": "Intern serverfejl", "@response500": {}, - "response501": "Not Implemented", + "response501": "Ikke implementeret", "@response501": {}, - "response502": "Bad Gateway", + "response502": "Dårlig Gateway", "@response502": {}, - "response503": "Service Unavailable", + "response503": "Service er utilgængelig", "@response503": {}, "response504": "Gateway Timeout", "@response504": {}, - "response505": "HTTP Version Not Supported", + "response505": "HTTP-version understøttes ikke", "@response505": {}, - "responseData": "Response data", + "responseData": "Svardata", "@responseData": {}, - "responseInvalid": "Invalid Response Code", + "responseInvalid": "Ugyldig Svar Kode", "@responseInvalid": {}, - "responseUnknown": "Unknown Response", + "responseUnknown": "Ukendt Svar", "@responseUnknown": {}, - "result": "Result", + "result": "Resultat", "@result": { "description": "" }, - "returned": "Returned", + "returned": "Returneret", "@returned": {}, - "salesOrder": "Sales Order", + "salesOrder": "Salgsordrer", "@salesOrder": {}, - "salesOrders": "Sales Orders", + "salesOrders": "Salgsordrer", "@salesOrders": {}, - "salesOrderEnable": "Enable Sales Orders", + "salesOrderEnable": "Aktiver Salgsordrer", "@salesOrderEnable": {}, - "salesOrderEnableDetail": "Enable sales order functionality", + "salesOrderEnableDetail": "Aktiver salgsordre funktionalitet", "@salesOrderEnableDetail": {}, - "salesOrderShowCamera": "Camera Shortcut", + "salesOrderShowCamera": "Genvej Til Kamera", "@salesOrderShowCamera": {}, - "salesOrderShowCameraDetail": "Enable image upload shortcut on sales order screen", + "salesOrderShowCameraDetail": "Aktiver genvej til billedupload til salgsordre på skærmen", "@salesOrderShowCameraDetail": {}, - "salesOrderSettings": "Sales order settings", + "salesOrderSettings": "Indstillinger for salgsordre", "@salesOrderSettings": {}, - "salesOrderCreate": "New Sales Order", + "salesOrderCreate": "Ny salgsordre", "@saleOrderCreate": {}, - "salesOrderEdit": "Edit Sales Order", + "salesOrderEdit": "Rediger Salgsordre", "@salesOrderEdit": {}, - "salesOrderUpdated": "Sales order updated", + "salesOrderUpdated": "Salgs ordre opdateret", "@salesOrderUpdated": {}, - "save": "Save", + "save": "Gem", "@save": { "description": "Save" }, - "scanBarcode": "Scan Barcode", + "scanBarcode": "Scan stregkode", "@scanBarcode": {}, - "scanSupplierPart": "Scan supplier part barcode", + "scanSupplierPart": "Scan leverandørdel stregkode", "@scanSupplierPart": {}, - "scanIntoLocation": "Scan Into Location", + "scanIntoLocation": "Scan Til Placering", "@scanIntoLocation": {}, - "scanIntoLocationDetail": "Scan this item into location", + "scanIntoLocationDetail": "Skan dette element til placering", "@scanIntoLocationDetail": {}, - "scannerExternal": "External Scanner", + "scannerExternal": "Ekstern Scanner", "@scannerExternal": {}, - "scannerExternalDetail": "Use external scanner to read barcodes (wedge mode)", + "scannerExternalDetail": "Brug ekstern scanner til at læse stregkoder (kiletilstand)", "@scannerExternalDetail": {}, - "scanReceivedParts": "Scan Received Parts", + "scanReceivedParts": "Scan Modtagne Dele", "@scanReceivedParts": {}, - "search": "Search", + "search": "Søg", "@search": { "description": "search" }, - "searching": "Searching", + "searching": "Søger", "@searching": {}, - "searchLocation": "Search for location", + "searchLocation": "Søg efter lokation", "@searchLocation": {}, - "searchParts": "Search Parts", + "searchParts": "Søg efter dele", "@searchParts": {}, - "searchStock": "Search Stock", + "searchStock": "Søg Lager", "@searchStock": {}, - "select": "Select", + "select": "Vælg", "@select": {}, - "selectFile": "Select File", + "selectFile": "Vælg fil", "@selectFile": {}, - "selectImage": "Select Image", + "selectImage": "Vælg billede", "@selectImage": {}, - "selectLocation": "Select a location", + "selectLocation": "Vælg en placering", "@selectLocation": {}, "send": "Send", "@send": {}, - "serialNumber": "Serial Number", + "serialNumber": "Serienummer", "@serialNumber": {}, - "serialNumbers": "Serial Numbers", + "serialNumbers": "Serienummer", "@serialNumbers": {}, "server": "Server", "@server": {}, - "serverAddress": "Server Address", + "serverAddress": "Serveradresse", "@serverAddress": {}, - "serverApiRequired": "Required API Version", + "serverApiRequired": "Kræver API-version", "@serverApiRequired": {}, "serverApiVersion": "Server API Version", "@serverApiVersion": {}, - "serverAuthenticationError": "Authentication Error", + "serverAuthenticationError": "Autentificeringsfejl", "@serverAuthenticationError": {}, - "serverCertificateError": "Cerficate Error", + "serverCertificateError": "Certifikatfejl", "@serverCertificateError": {}, - "serverCertificateInvalid": "Server HTTPS certificate is invalid", + "serverCertificateInvalid": "Server HTTPS certifikat er ugyldigt", "@serverCertificateInvalid": {}, - "serverConnected": "Connected to Server", + "serverConnected": "Forbundet til server", "@serverConnected": {}, - "serverConnecting": "Connecting to server", + "serverConnecting": "Opretter forbindelse til server", "@serverConnecting": {}, - "serverCouldNotConnect": "Could not connect to server", + "serverCouldNotConnect": "Kunne ikke forbinde til server", "@serverCouldNotConnect": {}, - "serverEmpty": "Server cannot be empty", + "serverEmpty": "Serveren kan ikke være tom", "@serverEmpty": {}, - "serverError": "Server Error", + "serverError": "Serverfejl", "@serverError": {}, - "serverDetails": "Server Details", + "serverDetails": "Server detaljer", "@serverDetails": {}, - "serverMissingData": "Server response missing required fields", + "serverMissingData": "Server svar mangler obligatoriske felter", "@serverMissingData": {}, - "serverOld": "Old Server Version", + "serverOld": "Gammel Server Version", "@serverOld": {}, - "serverSettings": "Server Settings", + "serverSettings": "Server indstillinger", "@serverSettings": {}, - "serverStart": "Server must start with http[s]", + "serverStart": "Server skal starte med http[s]", "@serverStart": {}, - "settings": "Settings", + "settings": "Indstillinger", "@settings": {}, - "serverInstance": "Server Instance", + "serverInstance": "Server Instans", "@serverInstance": {}, - "serverNotConnected": "Server not connected", + "serverNotConnected": "Server ikke forbundet", "@serverNotConnected": {}, - "serverNotSelected": "Server not selected", + "serverNotSelected": "Server ikke valgt", "@serverNotSelected": {}, - "shipment": "Shipment", + "shipment": "Forsendelse", "@shipment": {}, - "shipments": "Shipments", + "shipments": "Forsendelser", "@shipments": {}, - "shipmentsPending": "Pending Shipments", + "shipmentsPending": "Afventer Forsendelser", "@shipmentsPending": {}, - "shipmentAdd": "Add Shipment", + "shipmentAdd": "Tilføj Forsendelse", "@shipmentAdd": {}, - "shipmentCheck": "Check Shipment", + "shipmentCheck": "Tjek Forsendelse", "@shipmentCheck": {}, - "shipmentCheckDetail": "Mark this shipment as checked", + "shipmentCheckDetail": "Marker denne forsendelse som kontrolleret", "@shipmentCheckDetail": {}, - "shipmentChecked": "Shipment Checked", + "shipmentChecked": "Forsendelse Kontrolleret", "@shipmentChecked": {}, - "shipmentDate": "Shipment Date", + "shipmentDate": "Afsendelsesdato", "@shipmentDate": {}, - "shipmentEdit": "Edit Shipment", + "shipmentEdit": "Rediger Forsendelse", "@shipmentEdit": {}, - "shipmentReference": "Shipment Reference", + "shipmentReference": "Forsendelse Reference", "@shipmentReference": {}, - "shipmentSend": "Send Shipment", + "shipmentSend": "Send Forsendelse", "@shipmentSend": {}, - "shipmentUncheck": "Uncheck Shipment", + "shipmentUncheck": "Afmarkér Forsendelse", "@shipmentUncheck": {}, - "shipmentUncheckDetail": "Mark this shipment as unchecked", + "shipmentUncheckDetail": "Marker denne forsendelse som afmarkeret", "@shipmentUncheckDetail": {}, - "shipmentUpdated": "Shipment Updated", + "shipmentUpdated": "Forsendelse Opdateret", "@shipmentUpdated": {}, - "shipped": "Shipped", + "shipped": "Afsendt", "@shipped": {}, - "sku": "SKU", + "sku": "Lagerbeholdning", "@sku": {}, - "sounds": "Sounds", + "sounds": "Lyde", "@sounds": {}, - "soundOnBarcodeAction": "Play audible tone on barcode action", + "soundOnBarcodeAction": "Afspil hørbar tone ved stregkodehandling", "@soundOnBarcodeAction": {}, - "soundOnServerError": "Play audible tone on server error", + "soundOnServerError": "Afspil akustisk tone ved serverfejl", "@soundOnServerError": {}, - "startDate": "Start Date", + "startDate": "Startdato", "@startDate": {}, "status": "Status", "@status": {}, - "statusCode": "Status Code", + "statusCode": "Status Kode", "@statusCode": {}, - "stock": "Stock", + "stock": "Lager", "@stock": { "description": "stock" }, - "stockDetails": "Current available stock quantity", + "stockDetails": "Aktuel disponibel lagermængde", "@stockDetails": {}, - "stockItem": "Stock Item", + "stockItem": "Lagervarer", "@stockItem": { "description": "stock item title" }, - "stockItems": "Stock Items", + "stockItems": "Lagervarer", "@stockItems": {}, - "stockItemCreate": "New Stock Item", + "stockItemCreate": "Ny Lagervare", "@stockItemCreate": {}, - "stockItemCreateDetail": "Create new stock item in this location", + "stockItemCreateDetail": "Opret ny lagervare på denne lokation", "@stockItemCreateDetail": {}, - "stockItemDelete": "Delete Stock Item", + "stockItemDelete": "Slet Lagervare", "@stockItemDelete": {}, - "stockItemDeleteConfirm": "Are you sure you want to delete this stock item?", + "stockItemDeleteConfirm": "Er du sikker på, at du vil slette denne lagervare?", "@stockItemDeleteConfirm": {}, - "stockItemDeleteFailure": "Could not delete stock item", + "stockItemDeleteFailure": "Kunne ikke slette lagervare", "@stockItemDeleteFailure": {}, - "stockItemDeleteSuccess": "Stock item deleted", + "stockItemDeleteSuccess": "Lagervare slettet", "@stockItemDeleteSuccess": {}, - "stockItemHistory": "Stock History", + "stockItemHistory": "Lager Historik", "@stockItemHistory": {}, - "stockItemHistoryDetail": "Display historical stock tracking information", + "stockItemHistoryDetail": "Vis historisk lagersporings information", "@stockItemHistoryDetail": {}, - "stockItemTransferred": "Stock item transferred", + "stockItemTransferred": "Lagervare overført", "@stockItemTransferred": {}, - "stockItemUpdated": "Stock item updated", + "stockItemUpdated": "Lagervare opdateret", "@stockItemUpdated": {}, - "stockItemsNotAvailable": "No stock items available", + "stockItemsNotAvailable": "Ingen lagervarer tilgængelige", "@stockItemsNotAvailable": {}, - "stockItemNotes": "Stock Item Notes", + "stockItemNotes": "Lager Vare Noter", "@stockItemNotes": {}, - "stockItemUpdateSuccess": "Stock item updated", + "stockItemUpdateSuccess": "Lagervare opdateret", "@stockItemUpdateSuccess": {}, - "stockItemUpdateFailure": "Stock item update failed", + "stockItemUpdateFailure": "Lagervare opdatering mislykkedes", "@stockItemUpdateFailure": {}, - "stockLocation": "Stock Location", + "stockLocation": "Lagerlokationer", "@stockLocation": { "description": "stock location" }, - "stockLocations": "Stock Locations", + "stockLocations": "Lagerlokationer", "@stockLocations": {}, - "stockTopLevel": "Top level stock location", + "stockTopLevel": "Top niveau lager lokation", "@stockTopLevel": {}, - "strictHttps": "Use Strict HTTPS", + "strictHttps": "Brug Streng HTTPS", "@strictHttps": {}, - "strictHttpsDetails": "Enforce strict checking of HTTPs certificates", + "strictHttpsDetails": "Håndhæve streng kontrol af HTTPS-certifikater", "@strictHttpsDetails": {}, - "subcategory": "Subcategory", + "subcategory": "Underkategori", "@subcategory": {}, - "subcategories": "Subcategories", + "subcategories": "Underkategorier", "@subcategories": {}, - "sublocation": "Sublocation", + "sublocation": "Under lokation", "@sublocation": {}, - "sublocations": "Sublocations", + "sublocations": "Under lokationer", "@sublocations": {}, - "sublocationNone": "No Sublocations", + "sublocationNone": "Ingen under lokationer", "@sublocationNone": {}, - "sublocationNoneDetail": "No sublocations available", + "sublocationNoneDetail": "Ingen under lokationer tilgængelige", "@sublocationNoneDetail": {}, - "submitFeedback": "Submit Feedback", + "submitFeedback": "Indsend feedback", "@submitFeedback": {}, - "suppliedParts": "Supplied Parts", + "suppliedParts": "Leveret Dele", "@suppliedParts": {}, - "supplier": "Supplier", + "supplier": "Leverandør", "@supplier": {}, - "supplierPart": "Supplier Part", + "supplierPart": "Leverandør Del", "@supplierPart": {}, - "supplierPartEdit": "Edit Supplier Part", + "supplierPartEdit": "Rediger Leverandør Del", "@supplierPartEdit": {}, - "supplierPartNumber": "Supplier Part Number", + "supplierPartNumber": "Leverandør Delnummer", "@supplierPartNumber": {}, - "supplierPartUpdated": "Supplier Part Updated", + "supplierPartUpdated": "Leverandør Del Opdateret", "@supplierPartUpdated": {}, - "supplierParts": "Supplier Parts", + "supplierParts": "Leverandør Dele", "@supplierParts": {}, - "suppliers": "Suppliers", + "suppliers": "Leverandør", "@suppliers": {}, - "supplierReference": "Supplier Reference", + "supplierReference": "Leverandør Reference", "@supplierReference": {}, - "switchCamera": "Switch Camera", + "switchCamera": "Skift Kamera", "@switchCamera": {}, - "takePicture": "Take Picture", + "takePicture": "Tag billede", "@takePicture": {}, - "targetDate": "Target Date", + "targetDate": "Måldato", "@targetDate": {}, - "templatePart": "Parent Template Part", + "templatePart": "Overordnet Skabelon Del", "@templatePart": {}, - "testName": "Test Name", + "testName": "Test navn", "@testName": {}, - "testPassedOrFailed": "Test passed or failed", + "testPassedOrFailed": "Test bestået eller fejlet", "@testPassedOrFailed": {}, - "testsRequired": "Required Tests", + "testsRequired": "Påkrævede Test", "@testsRequired": {}, - "testResults": "Test Results", + "testResults": "Testresultater", "@testResults": { "description": "" }, - "testResultsDetail": "Display stock item test results", + "testResultsDetail": "Vis testresultater for lagervarer", "@testResultsDetail": {}, - "testResultAdd": "Add Test Result", + "testResultAdd": "Tilføj Testresultat", "@testResultAdd": {}, - "testResultNone": "No Test Results", + "testResultNone": "Ingen Testresultater", "@testResultNone": {}, - "testResultNoneDetail": "No test results available", + "testResultNoneDetail": "Ingen testresultater tilgængelige", "@testResultNoneDetail": {}, - "testResultUploadFail": "Error uploading test result", + "testResultUploadFail": "Fejl under upload af testresultat", "@testResultUploadFail": {}, - "testResultUploadPass": "Test result uploaded", + "testResultUploadPass": "Test resultat uploadet", "@testResultUploadPass": {}, "timeout": "Timeout", "@timeout": { "description": "" }, - "toggleTorch": "Toggle Torch", + "toggleTorch": "Tænd/sluk lys", "@toggleTorch": {}, - "tokenError": "Token Error", + "tokenError": "Token Fejl", "@tokenError": {}, - "tokenMissing": "Missing Token", + "tokenMissing": "Mangler Token", "@tokenMissing": {}, - "tokenMissingFromResponse": "Access token missing from response", + "tokenMissingFromResponse": "Adgangstoken mangler fra svar", "@tokenMissingFromResponse": {}, - "totalPrice": "Total Price", + "totalPrice": "Total Pris", "@totalPrice": {}, - "trackingNumber": "Tracking Number", + "trackingNumber": "Sporingsnummer", "@trackingNumber": {}, - "transfer": "Transfer", + "transfer": "Overfør", "@transfer": { "description": "transfer" }, - "transferStock": "Transfer Stock", + "transferStock": "Overfør Lager", "@transferStock": { "description": "transfer stock" }, - "transferStockDetail": "Transfer item to a different location", + "transferStockDetail": "Overfør element til en anden lokation", "@transferStockDetail": {}, - "transferStockLocation": "Transfer Stock Location", + "transferStockLocation": "Overføre lager lokation", "@transferStockLocation": {}, - "transferStockLocationDetail": "Transfer this stock location into another", + "transferStockLocationDetail": "Overfør denne lager lokation til en anden", "@transferStockLocationDetail": {}, - "translate": "Translate", + "translate": "Oversæt", "@translate": {}, - "translateHelp": "Help translate the InvenTree app", + "translateHelp": "Hjælp med at oversætte InvenTree appen", "@translateHelp": {}, - "unavailable": "Unavailable", + "unavailable": "Utilgængelig", "@unavailable": {}, - "unavailableDetail": "Item is not available", + "unavailableDetail": "Elementet er ikke tilgængeligt", "@unavailableDetail": {}, - "unitPrice": "Unit Price", + "unitPrice": "Enhedspris", "@unitPrice": {}, - "units": "Units", + "units": "Enheder", "@units": {}, - "unknownResponse": "Unknown Response", + "unknownResponse": "Ukendt Svar", "@unknownResponse": {}, "upload": "Upload", "@upload": {}, - "uploadFailed": "File upload failed", + "uploadFailed": "File upload mislykkedes", "@uploadFailed": {}, - "uploadSuccess": "File uploaded", + "uploadSuccess": "Fil uploadet", "@uploadSuccess": {}, - "uploadImage": "Upload Image", + "uploadImage": "Upload billede", "@uploadImage": {}, - "usedIn": "Used In", + "usedIn": "Brugt I", "@usedIn": {}, - "usedInDetails": "Assemblies which require this part", + "usedInDetails": "Samlinger som kræver denne del", "@usedInDetails": {}, - "username": "Username", + "username": "Brugernavn", "@username": {}, - "usernameEmpty": "Username cannot be empty", + "usernameEmpty": "Brugernavn kan ikke være tomt", "@usernameEmpty": {}, - "value": "Value", + "value": "Værdi", "@value": { "description": "value" }, - "valueCannotBeEmpty": "Value cannot be empty", + "valueCannotBeEmpty": "Værdien kan ikke være tom", "@valueCannotBeEmpty": {}, - "valueRequired": "Value is required", + "valueRequired": "Værdi er påkrævet", "@valueRequired": {}, - "variants": "Variants", + "variants": "Varianter", "@variants": {}, "version": "Version", "@version": {}, - "viewSupplierPart": "View Supplier Part", + "viewSupplierPart": "Vis Leverandør Del", "@viewSupplierPart": {}, - "website": "Website", + "website": "Hjemmeside", "@website": {}, - "yes": "Yes", + "yes": "Ja", "@yes": {}, - "price": "Price", + "price": "Pris", "@price": {}, - "priceRange": "Price Range", + "priceRange": "Prisklasse", "@priceRange": {}, - "priceOverrideMin": "Minimum Price Override", + "priceOverrideMin": "Tilsidesættelse af minimumspris", "@priceOverrideMin": {}, - "priceOverrideMax": "Maximum Price Override", + "priceOverrideMax": "Tilsidesættelse af maksimalpris", "@priceOverrideMax": {}, - "salePrice": "Sale Price", + "salePrice": "Salgspris", "@salePrice": {}, - "saleHistory": "Sale History", + "saleHistory": "Salgs Historik", "@saleHistory": {}, - "supplierPricing": "Supplier Pricing", + "supplierPricing": "Leverandør Pris", "@supplierPricing": {}, - "bomCost": "BOM Cost", + "bomCost": "Stykliste Pris", "@bomCost": {}, - "internalCost": "Internal Cost", + "internalCost": "Intern Omkostning", "@internalCost": {}, - "variantCost": "Variant Cost", + "variantCost": "Variant Pris", "@variantCost": {}, - "overallPricing": "Overall Pricing", + "overallPricing": "Samlet prisfastsættelse", "@overallPricing": {}, - "pricingOverrides": "Pricing Overrides", + "pricingOverrides": "Tilsidesætter Prisfastsættelse", "@pricingOverrides": {}, - "currency": "Currency", + "currency": "Valuta", "@currency": {}, - "priceBreaks": "Price Breaks", + "priceBreaks": "Prispauser", "@priceBreaks": {} } \ No newline at end of file diff --git a/lib/l10n/es_MX/app_es_MX.arb b/lib/l10n/es_MX/app_es_MX.arb index 4f0ec84..1197082 100644 --- a/lib/l10n/es_MX/app_es_MX.arb +++ b/lib/l10n/es_MX/app_es_MX.arb @@ -962,7 +962,7 @@ "@shipmentReference": {}, "shipmentSend": "Send Shipment", "@shipmentSend": {}, - "shipmentUncheck": "Uncheck Shipment", + "shipmentUncheck": "Deseleccionar Envío", "@shipmentUncheck": {}, "shipmentUncheckDetail": "Mark this shipment as unchecked", "@shipmentUncheckDetail": {}, @@ -1068,7 +1068,7 @@ "@suppliers": {}, "supplierReference": "Referencia del proveedor", "@supplierReference": {}, - "switchCamera": "Switch Camera", + "switchCamera": "Cambiar Cámara", "@switchCamera": {}, "takePicture": "Tomar una foto", "@takePicture": {}, @@ -1148,7 +1148,7 @@ "@uploadFailed": {}, "uploadSuccess": "Archivo subido", "@uploadSuccess": {}, - "uploadImage": "Upload Image", + "uploadImage": "Subir Imagen", "@uploadImage": {}, "usedIn": "Usado en", "@usedIn": {}, diff --git a/lib/l10n/fa_IR/app_fa_IR.arb b/lib/l10n/fa_IR/app_fa_IR.arb index 02358b0..ceb836d 100644 --- a/lib/l10n/fa_IR/app_fa_IR.arb +++ b/lib/l10n/fa_IR/app_fa_IR.arb @@ -36,17 +36,17 @@ "@appDetails": {}, "allocated": "اختصاص داده شده", "@allocated": {}, - "aspectRatio16x9": "16:9", + "aspectRatio16x9": "۱۶ به ۹", "@aspectRatio16x9": {}, - "aspectRatio3x2": "3:2", + "aspectRatio3x2": "۳ به ۲", "@aspectRatio3x2": {}, - "aspectRatio4x3": "4:3", + "aspectRatio4x3": "۴ به ۳", "@aspectRatio4x3": {}, - "aspectRatioSquare": "Square (1:1)", + "aspectRatioSquare": "مربعی (۱ به ۱)", "@aspectRatioSquare": {}, "allocateStock": "موجودی اختصاص داده شده", "@allocateStock": {}, - "allocatedStock": "Allocated Stock", + "allocatedStock": "موجودی اختصاص داده شده", "@allocatedStock": {}, "appReleaseNotes": "نمایش یادداشت های انتشار برنامه", "@appReleaseNotes": {}, @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "اسکن بارکد متوقف شد", "@barodeScanPaused": {}, - "barcodeScanPause": "Tap to pause scanning", + "barcodeScanPause": "برای توقف اسکن لمس کنید", "@barcodeScanPause": {}, "barcodeScanAssign": "برای اختصاص بارکد اسکن کنید", "@barcodeScanAssign": {}, @@ -180,9 +180,9 @@ "@companyUpdated": {}, "companies": "شرکت‌ها", "@companies": {}, - "complete": "Complete", + "complete": "تکمیل", "@complete": {}, - "completeOrder": "Complete Order", + "completeOrder": "تکمیل سفارش", "@completeOrder": {}, "completionDate": "تاریخ تکمیل", "@completionDate": {}, @@ -204,9 +204,9 @@ }, "credits": "اعتبارات", "@credits": {}, - "crop": "Crop", + "crop": "برش", "@crop": {}, - "cropImage": "Crop Image", + "cropImage": "برش تصویر", "@cropImage": {}, "customer": "مشتری", "@customer": {}, @@ -228,11 +228,11 @@ "@delete": {}, "deleteFailed": "عملیات حذف ناموفق بوده است", "@deleteFailed": {}, - "deleteImageConfirmation": "Are you sure you want to delete this image?", + "deleteImageConfirmation": "آیا مطمئن هستید که میخواهید این تصویر را حذف کنید؟", "@deleteImageConfirmation": {}, - "deleteImageTooltip": "Delete Image", + "deleteImageTooltip": "حذف تصویر", "@deleteImageTooltip": {}, - "deleteImage": "Delete Image", + "deleteImage": "حذف تصویر", "@deleteImage": {}, "deletePart": "حذف قسمت", "@deletePart": {}, @@ -240,7 +240,7 @@ "@deletePartDetail": {}, "deleteSuccess": "عملیات حذف با موفقیت انجام شد", "@deleteSuccess": {}, - "deliveryDate": "Delivery Date", + "deliveryDate": "تاریخ تحویل", "@deliveryDate": {}, "description": "توضیحات", "@description": {}, @@ -254,9 +254,9 @@ }, "documentation": "مستندات", "@documentation": {}, - "downloadComplete": "Download Complete", + "downloadComplete": "دانلود انجام شد", "@downloadComplete": {}, - "downloadError": "Error downloading image", + "downloadError": "خطای دانلود تصویر", "@downloadError": {}, "downloading": "در حال دانلود فایل", "@downloading": {}, @@ -282,7 +282,7 @@ "@editItem": {}, "editLineItem": "ویرایش ایتم خط", "@editLineItem": {}, - "email": "Email", + "email": "پست الکترونیکی", "@email": {}, "enterPassword": "رمز عبور را وارد کنید", "@enterPassword": {}, @@ -384,9 +384,9 @@ "@homeShowPo": {}, "homeShowPoDescription": "نمایش دکمه سفارش خرید در صفحه خانه", "@homeShowPoDescription": {}, - "homeShowShipments": "Show Shipments", + "homeShowShipments": "نمایش محموله", "@homeShowShipments": {}, - "homeShowShipmentsDescription": "Show pending shipments on the home screen", + "homeShowShipmentsDescription": "نمایش محموله در انتظار ارسال بر روی صفحه اصلی", "@homeShowShipmentsDescription": {}, "homeShowSo": "نمایش سفارش های فروش", "@homeShowSo": {}, @@ -454,9 +454,9 @@ "@invalidSupplierPart": {}, "invalidUsernamePassword": "ترکیب نام کاربری / رمز عبور نامعتبر", "@invalidUsernamePassword": {}, - "invoice": "Invoice", + "invoice": "صورت‌حساب", "@invoice": {}, - "invoiceNumber": "Invoice Number", + "invoiceNumber": "شماره صورت‌حساب", "@invoiceNumber": {}, "issue": "موضوع", "@issue": {}, @@ -472,9 +472,9 @@ "@itemUpdated": {}, "keywords": "کلمات کلیدی", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "درایور چاپگر برچسب", "@labelDriver": {}, - "labelSelectDriver": "Select Label Printer Driver", + "labelSelectDriver": "انتخاب درایور چاپگر برچسب", "@labelSelectDriver": {}, "labelPrinting": "چاپ لیبل", "@labelPrinting": {}, @@ -514,7 +514,7 @@ "@locationCreate": {}, "locationCreateDetail": "مکان سهام جدید ایجاد کنید", "@locationCreateDetail": {}, - "locationDefault": "Default Location", + "locationDefault": "مکان پیش‌فرض", "@locationDefault": {}, "locationNotSet": "هیچ مکانی مشخص نشده است", "@locationNotSet": {}, @@ -544,9 +544,9 @@ "@missingData": {}, "name": "نام", "@name": {}, - "no": "No", + "no": "خیر", "@no": {}, - "notApplicable": "N/A", + "notApplicable": "موجود نیست", "@notApplicable": {}, "notConnected": "متصل نیست", "@notConnected": {}, @@ -562,11 +562,11 @@ "@noResponse": {}, "noResults": "بدون نتیجه", "@noResults": {}, - "noImageAvailable": "No image available", + "noImageAvailable": "هیچ تصویری موجود نیست", "@noImageAvailable": {}, - "noPricingAvailable": "No pricing available", + "noPricingAvailable": "هیچ قیمتی موجود نیست", "@noPricingAvailable": {}, - "noPricingDataFound": "No pricing data found for this part", + "noPricingDataFound": "هیچ اطلاعات قیمتی برای این قطعه یافت نشد", "@noPricingDataFound": {}, "noSubcategories": "بدون زیر دسته بندی", "@noSubcategories": {}, @@ -630,9 +630,9 @@ "@partsNone": {}, "partNoResults": "هیچ قطعه ای مطابق با جست و جو یافت نشد", "@partNoResults": {}, - "partPricing": "Part Pricing", + "partPricing": "قیمت‌گذاری قطعات", "@partPricing": {}, - "partPricingSettingDetail": "Display part pricing information", + "partPricingSettingDetail": "نمایش اطلاعات قیمت‌گذاری قطعات", "@pricingSettingDetail": {}, "partSettings": "تنظیمات قطعه", "@partSettings": {}, @@ -660,13 +660,13 @@ "@password": {}, "passwordEmpty": "رمز عبور نمی تواند خالی باشد", "@passwordEmpty": {}, - "pending": "Pending", + "pending": "در حال بررسی", "@pending": {}, "permissionAccountDenied": "حساب شما مجوزهای لازم برای انجام این عمل را ندارد", "@permissionAccountDenied": {}, "permissionRequired": "نیازمند مجوز", "@permissionRequired": {}, - "phone": "Phone", + "phone": "تماس", "@phone": {}, "printLabel": "پرینت برچسب", "@printLabel": {}, @@ -762,7 +762,7 @@ "@reference": {}, "refresh": "تازه سازی", "@refresh": {}, - "rotateClockwise": "Rotate 90° clockwise", + "rotateClockwise": "چرخش °90 درجه در جهت عقربه های ساعت", "@rotateClockwise": {}, "refreshing": "در حال تازه سازی", "@refreshing": {}, @@ -940,33 +940,33 @@ "@serverNotConnected": {}, "serverNotSelected": "سرور انتخاب نشده است", "@serverNotSelected": {}, - "shipment": "Shipment", + "shipment": "محموله", "@shipment": {}, "shipments": "محموله ها", "@shipments": {}, - "shipmentsPending": "Pending Shipments", + "shipmentsPending": "محموله در انتظار ارسال", "@shipmentsPending": {}, "shipmentAdd": "افزودن محموله", "@shipmentAdd": {}, - "shipmentCheck": "Check Shipment", + "shipmentCheck": "بررسی محموله", "@shipmentCheck": {}, - "shipmentCheckDetail": "Mark this shipment as checked", + "shipmentCheckDetail": "این محموله را بررسی شده علامت گذاری کن", "@shipmentCheckDetail": {}, - "shipmentChecked": "Shipment Checked", + "shipmentChecked": "محموله بررسی شده", "@shipmentChecked": {}, - "shipmentDate": "Shipment Date", + "shipmentDate": "تاریخ ارسال", "@shipmentDate": {}, - "shipmentEdit": "Edit Shipment", + "shipmentEdit": "تغییر محموله", "@shipmentEdit": {}, - "shipmentReference": "Shipment Reference", + "shipmentReference": "کد محموله", "@shipmentReference": {}, - "shipmentSend": "Send Shipment", + "shipmentSend": "ارسال محموله", "@shipmentSend": {}, - "shipmentUncheck": "Uncheck Shipment", + "shipmentUncheck": "محموله بررسی نشده", "@shipmentUncheck": {}, - "shipmentUncheckDetail": "Mark this shipment as unchecked", + "shipmentUncheckDetail": "این محموله را بررسی نشده علامت گذاری کن", "@shipmentUncheckDetail": {}, - "shipmentUpdated": "Shipment Updated", + "shipmentUpdated": "محموله به روز رسانی شد", "@shipmentUpdated": {}, "shipped": "ارسال شده", "@shipped": {}, @@ -1112,7 +1112,7 @@ "@tokenMissingFromResponse": {}, "totalPrice": "قیمت کل", "@totalPrice": {}, - "trackingNumber": "Tracking Number", + "trackingNumber": "کد رهگیری", "@trackingNumber": {}, "transfer": "انتقال", "@transfer": { @@ -1148,7 +1148,7 @@ "@uploadFailed": {}, "uploadSuccess": "فایل اپلود شد", "@uploadSuccess": {}, - "uploadImage": "Upload Image", + "uploadImage": "بارگذاری تصویر", "@uploadImage": {}, "usedIn": "استفاده شده در", "@usedIn": {}, @@ -1174,34 +1174,34 @@ "@viewSupplierPart": {}, "website": "وب سایت", "@website": {}, - "yes": "Yes", + "yes": "بله", "@yes": {}, - "price": "Price", + "price": "قیمت", "@price": {}, - "priceRange": "Price Range", + "priceRange": "بازه‌ قیمت", "@priceRange": {}, - "priceOverrideMin": "Minimum Price Override", + "priceOverrideMin": "قیمت دستی مینیمم", "@priceOverrideMin": {}, - "priceOverrideMax": "Maximum Price Override", + "priceOverrideMax": "قیمت دستی ماکزیمم", "@priceOverrideMax": {}, - "salePrice": "Sale Price", + "salePrice": "قیمت حراج", "@salePrice": {}, - "saleHistory": "Sale History", + "saleHistory": "تاریخچه حراج", "@saleHistory": {}, - "supplierPricing": "Supplier Pricing", + "supplierPricing": "قیمت تامین کننده", "@supplierPricing": {}, - "bomCost": "BOM Cost", + "bomCost": "هزینه تمام شده", "@bomCost": {}, - "internalCost": "Internal Cost", + "internalCost": "هزینه داخلی", "@internalCost": {}, - "variantCost": "Variant Cost", + "variantCost": "هزینه متغیر", "@variantCost": {}, - "overallPricing": "Overall Pricing", + "overallPricing": "قیمت نهایی", "@overallPricing": {}, - "pricingOverrides": "Pricing Overrides", + "pricingOverrides": "قیمت دستی", "@pricingOverrides": {}, - "currency": "Currency", + "currency": "واحد پول", "@currency": {}, - "priceBreaks": "Price Breaks", + "priceBreaks": "کاهش قیمت", "@priceBreaks": {} } \ No newline at end of file diff --git a/lib/l10n/pl_PL/app_pl_PL.arb b/lib/l10n/pl_PL/app_pl_PL.arb index ac7a6c2..5aa8e5c 100644 --- a/lib/l10n/pl_PL/app_pl_PL.arb +++ b/lib/l10n/pl_PL/app_pl_PL.arb @@ -1202,6 +1202,6 @@ "@pricingOverrides": {}, "currency": "Waluta", "@currency": {}, - "priceBreaks": "Price Breaks", + "priceBreaks": "Widełki cenowe", "@priceBreaks": {} } \ No newline at end of file diff --git a/lib/l10n/ro_RO/app_ro_RO.arb b/lib/l10n/ro_RO/app_ro_RO.arb index 6f07c0d..adfed52 100644 --- a/lib/l10n/ro_RO/app_ro_RO.arb +++ b/lib/l10n/ro_RO/app_ro_RO.arb @@ -834,374 +834,374 @@ }, "returned": "Returnat", "@returned": {}, - "salesOrder": "Sales Order", + "salesOrder": "Comenzi de Vânzare", "@salesOrder": {}, - "salesOrders": "Sales Orders", + "salesOrders": "Comenzi de Vânzare", "@salesOrders": {}, - "salesOrderEnable": "Enable Sales Orders", + "salesOrderEnable": "Activează Comenzile de Vânzări", "@salesOrderEnable": {}, - "salesOrderEnableDetail": "Enable sales order functionality", + "salesOrderEnableDetail": "Activați funcționalitatea comenzilor de vânzare", "@salesOrderEnableDetail": {}, - "salesOrderShowCamera": "Camera Shortcut", + "salesOrderShowCamera": "Scurtătura Cameră", "@salesOrderShowCamera": {}, - "salesOrderShowCameraDetail": "Enable image upload shortcut on sales order screen", + "salesOrderShowCameraDetail": "Activează scurtătura de încărcare a imaginilor pe ecranul comenzii de vânzare", "@salesOrderShowCameraDetail": {}, - "salesOrderSettings": "Sales order settings", + "salesOrderSettings": "Setările comenzii de vânzare", "@salesOrderSettings": {}, - "salesOrderCreate": "New Sales Order", + "salesOrderCreate": "Comandă de vânzări nouă", "@saleOrderCreate": {}, - "salesOrderEdit": "Edit Sales Order", + "salesOrderEdit": "Editează Comanda de Vânzare", "@salesOrderEdit": {}, - "salesOrderUpdated": "Sales order updated", + "salesOrderUpdated": "Comanda de vanzare actualizată", "@salesOrderUpdated": {}, - "save": "Save", + "save": "Salvaţi", "@save": { "description": "Save" }, - "scanBarcode": "Scan Barcode", + "scanBarcode": "Scanați codul de bare", "@scanBarcode": {}, - "scanSupplierPart": "Scan supplier part barcode", + "scanSupplierPart": "Scanare cod de bare furnizor", "@scanSupplierPart": {}, - "scanIntoLocation": "Scan Into Location", + "scanIntoLocation": "Scanare în locație", "@scanIntoLocation": {}, - "scanIntoLocationDetail": "Scan this item into location", + "scanIntoLocationDetail": "Scanează acest articol în locație", "@scanIntoLocationDetail": {}, - "scannerExternal": "External Scanner", + "scannerExternal": "Scanner extern", "@scannerExternal": {}, - "scannerExternalDetail": "Use external scanner to read barcodes (wedge mode)", + "scannerExternalDetail": "Utilizează scanerul extern pentru a citi codurile de bare (modul wedge)", "@scannerExternalDetail": {}, - "scanReceivedParts": "Scan Received Parts", + "scanReceivedParts": "Scanați capitolele primite", "@scanReceivedParts": {}, - "search": "Search", + "search": "Caută", "@search": { "description": "search" }, - "searching": "Searching", + "searching": "Căutare", "@searching": {}, - "searchLocation": "Search for location", + "searchLocation": "Căutați locația", "@searchLocation": {}, - "searchParts": "Search Parts", + "searchParts": "Caută componente", "@searchParts": {}, - "searchStock": "Search Stock", + "searchStock": "Căutare Stoc", "@searchStock": {}, - "select": "Select", + "select": "Selectează", "@select": {}, - "selectFile": "Select File", + "selectFile": "Selectează fișier", "@selectFile": {}, - "selectImage": "Select Image", + "selectImage": "Selectează imagine", "@selectImage": {}, - "selectLocation": "Select a location", + "selectLocation": "Selectați o locație", "@selectLocation": {}, - "send": "Send", + "send": "Trimite", "@send": {}, - "serialNumber": "Serial Number", + "serialNumber": "Număr de serie", "@serialNumber": {}, - "serialNumbers": "Serial Numbers", + "serialNumbers": "Număr de serie", "@serialNumbers": {}, "server": "Server", "@server": {}, - "serverAddress": "Server Address", + "serverAddress": "Adresă server", "@serverAddress": {}, - "serverApiRequired": "Required API Version", + "serverApiRequired": "Versiunea API necesară", "@serverApiRequired": {}, - "serverApiVersion": "Server API Version", + "serverApiVersion": "Versiune API server", "@serverApiVersion": {}, - "serverAuthenticationError": "Authentication Error", + "serverAuthenticationError": "Eroare autentificare", "@serverAuthenticationError": {}, "serverCertificateError": "Cerficate Error", "@serverCertificateError": {}, - "serverCertificateInvalid": "Server HTTPS certificate is invalid", + "serverCertificateInvalid": "Certificatul HTTPS al serverului nu este valid", "@serverCertificateInvalid": {}, - "serverConnected": "Connected to Server", + "serverConnected": "Conectare la server", "@serverConnected": {}, - "serverConnecting": "Connecting to server", + "serverConnecting": "Se conecteaza la server", "@serverConnecting": {}, - "serverCouldNotConnect": "Could not connect to server", + "serverCouldNotConnect": "Nu s-a putut conecta la server", "@serverCouldNotConnect": {}, - "serverEmpty": "Server cannot be empty", + "serverEmpty": "Serverul nu poate fi gol", "@serverEmpty": {}, - "serverError": "Server Error", + "serverError": "Eroare de server", "@serverError": {}, - "serverDetails": "Server Details", + "serverDetails": "Detalii despre server", "@serverDetails": {}, - "serverMissingData": "Server response missing required fields", + "serverMissingData": "Răspuns server lipsă câmpuri obligatorii", "@serverMissingData": {}, - "serverOld": "Old Server Version", + "serverOld": "Versiunea veche a serverului", "@serverOld": {}, - "serverSettings": "Server Settings", + "serverSettings": "Setări server", "@serverSettings": {}, - "serverStart": "Server must start with http[s]", + "serverStart": "Serverul trebuie să înceapă cu http[s]", "@serverStart": {}, - "settings": "Settings", + "settings": "Setări", "@settings": {}, - "serverInstance": "Server Instance", + "serverInstance": "Instanță server", "@serverInstance": {}, - "serverNotConnected": "Server not connected", + "serverNotConnected": "Serverul nu este conectat", "@serverNotConnected": {}, - "serverNotSelected": "Server not selected", + "serverNotSelected": "Serverul nu este selectat", "@serverNotSelected": {}, - "shipment": "Shipment", + "shipment": "Expediere", "@shipment": {}, - "shipments": "Shipments", + "shipments": "Livrări", "@shipments": {}, - "shipmentsPending": "Pending Shipments", + "shipmentsPending": "Livrări în așteptare", "@shipmentsPending": {}, - "shipmentAdd": "Add Shipment", + "shipmentAdd": "Adaugă livrare", "@shipmentAdd": {}, - "shipmentCheck": "Check Shipment", + "shipmentCheck": "Verifica livrare", "@shipmentCheck": {}, - "shipmentCheckDetail": "Mark this shipment as checked", + "shipmentCheckDetail": "Marchează livrarea ca verificată", "@shipmentCheckDetail": {}, - "shipmentChecked": "Shipment Checked", + "shipmentChecked": "Livrare verificată", "@shipmentChecked": {}, - "shipmentDate": "Shipment Date", + "shipmentDate": "Data livrării", "@shipmentDate": {}, - "shipmentEdit": "Edit Shipment", + "shipmentEdit": "Editare livrare", "@shipmentEdit": {}, - "shipmentReference": "Shipment Reference", + "shipmentReference": "Referință livrare", "@shipmentReference": {}, - "shipmentSend": "Send Shipment", + "shipmentSend": "Livrare Trimisa", "@shipmentSend": {}, - "shipmentUncheck": "Uncheck Shipment", + "shipmentUncheck": "Debifează livrare", "@shipmentUncheck": {}, - "shipmentUncheckDetail": "Mark this shipment as unchecked", + "shipmentUncheckDetail": "Marchează livrarea ca nebifat", "@shipmentUncheckDetail": {}, - "shipmentUpdated": "Shipment Updated", + "shipmentUpdated": "Livrare actualizată", "@shipmentUpdated": {}, - "shipped": "Shipped", + "shipped": "Livrat", "@shipped": {}, "sku": "SKU", "@sku": {}, - "sounds": "Sounds", + "sounds": "Sunete", "@sounds": {}, - "soundOnBarcodeAction": "Play audible tone on barcode action", + "soundOnBarcodeAction": "Redă ton sonor la acțiunea codului de bare", "@soundOnBarcodeAction": {}, - "soundOnServerError": "Play audible tone on server error", + "soundOnServerError": "Redă sunetul sonor la eroarea serverului", "@soundOnServerError": {}, - "startDate": "Start Date", + "startDate": "Data inceput", "@startDate": {}, "status": "Status", "@status": {}, "statusCode": "Status Code", "@statusCode": {}, - "stock": "Stock", + "stock": "Stoc", "@stock": { "description": "stock" }, - "stockDetails": "Current available stock quantity", + "stockDetails": "Stoc disponibil curent", "@stockDetails": {}, - "stockItem": "Stock Item", + "stockItem": "Articol Stoc", "@stockItem": { "description": "stock item title" }, - "stockItems": "Stock Items", + "stockItems": "Articol Stoc", "@stockItems": {}, - "stockItemCreate": "New Stock Item", + "stockItemCreate": "Element nou în stoc", "@stockItemCreate": {}, - "stockItemCreateDetail": "Create new stock item in this location", + "stockItemCreateDetail": "Crează element nou în stoc în această locație", "@stockItemCreateDetail": {}, - "stockItemDelete": "Delete Stock Item", + "stockItemDelete": "Şterge elementul din stoc", "@stockItemDelete": {}, - "stockItemDeleteConfirm": "Are you sure you want to delete this stock item?", + "stockItemDeleteConfirm": "Sunteţi sigur că doriţi să ştergeţi acest articol din stoc?", "@stockItemDeleteConfirm": {}, - "stockItemDeleteFailure": "Could not delete stock item", + "stockItemDeleteFailure": "Nu s-a putut șterge articolul din stoc", "@stockItemDeleteFailure": {}, - "stockItemDeleteSuccess": "Stock item deleted", + "stockItemDeleteSuccess": "Articol șters", "@stockItemDeleteSuccess": {}, - "stockItemHistory": "Stock History", + "stockItemHistory": "Istoric Stoc", "@stockItemHistory": {}, - "stockItemHistoryDetail": "Display historical stock tracking information", + "stockItemHistoryDetail": "Afişează informaţii istorice de urmărire stoc", "@stockItemHistoryDetail": {}, - "stockItemTransferred": "Stock item transferred", + "stockItemTransferred": "Articol stoc transferat", "@stockItemTransferred": {}, - "stockItemUpdated": "Stock item updated", + "stockItemUpdated": "Articol stoc actualizat", "@stockItemUpdated": {}, - "stockItemsNotAvailable": "No stock items available", + "stockItemsNotAvailable": "Nu sunt articole disponibile în stoc", "@stockItemsNotAvailable": {}, - "stockItemNotes": "Stock Item Notes", + "stockItemNotes": "Note element de stoc", "@stockItemNotes": {}, - "stockItemUpdateSuccess": "Stock item updated", + "stockItemUpdateSuccess": "Articol stoc actualizat", "@stockItemUpdateSuccess": {}, - "stockItemUpdateFailure": "Stock item update failed", + "stockItemUpdateFailure": "Actualizarea articolului stoc a eșuat", "@stockItemUpdateFailure": {}, - "stockLocation": "Stock Location", + "stockLocation": "Locația stocului", "@stockLocation": { "description": "stock location" }, - "stockLocations": "Stock Locations", + "stockLocations": "Locația stocului", "@stockLocations": {}, - "stockTopLevel": "Top level stock location", + "stockTopLevel": "Locație stoc nivel superior", "@stockTopLevel": {}, - "strictHttps": "Use Strict HTTPS", + "strictHttps": "Folosește HTTPS Strict", "@strictHttps": {}, - "strictHttpsDetails": "Enforce strict checking of HTTPs certificates", + "strictHttpsDetails": "Impune controlul strict al certificatelor HTTP", "@strictHttpsDetails": {}, - "subcategory": "Subcategory", + "subcategory": "Subcategorie", "@subcategory": {}, - "subcategories": "Subcategories", + "subcategories": "Subcategorii", "@subcategories": {}, - "sublocation": "Sublocation", + "sublocation": "Sublocare", "@sublocation": {}, - "sublocations": "Sublocations", + "sublocations": "Sublocare", "@sublocations": {}, - "sublocationNone": "No Sublocations", + "sublocationNone": "Fără sublocări", "@sublocationNone": {}, - "sublocationNoneDetail": "No sublocations available", + "sublocationNoneDetail": "Nu există sublocații disponibile", "@sublocationNoneDetail": {}, - "submitFeedback": "Submit Feedback", + "submitFeedback": "Trimiteți feedback", "@submitFeedback": {}, - "suppliedParts": "Supplied Parts", + "suppliedParts": "Piese furnizate", "@suppliedParts": {}, - "supplier": "Supplier", + "supplier": "Furnizor", "@supplier": {}, - "supplierPart": "Supplier Part", + "supplierPart": "Piesă Furnizor", "@supplierPart": {}, - "supplierPartEdit": "Edit Supplier Part", + "supplierPartEdit": "Editați articol furnizorului", "@supplierPartEdit": {}, - "supplierPartNumber": "Supplier Part Number", + "supplierPartNumber": "Cod furnizor", "@supplierPartNumber": {}, - "supplierPartUpdated": "Supplier Part Updated", + "supplierPartUpdated": "Cod furnizor actualizat", "@supplierPartUpdated": {}, - "supplierParts": "Supplier Parts", + "supplierParts": "Piese Furnizor", "@supplierParts": {}, - "suppliers": "Suppliers", + "suppliers": "Furnizori", "@suppliers": {}, - "supplierReference": "Supplier Reference", + "supplierReference": "Cod furnizor", "@supplierReference": {}, - "switchCamera": "Switch Camera", + "switchCamera": "Comutați Camera", "@switchCamera": {}, - "takePicture": "Take Picture", + "takePicture": "Faceți o fotografie", "@takePicture": {}, - "targetDate": "Target Date", + "targetDate": "Data țintă", "@targetDate": {}, - "templatePart": "Parent Template Part", + "templatePart": "Capitol șablon părinte", "@templatePart": {}, - "testName": "Test Name", + "testName": "Nume test", "@testName": {}, - "testPassedOrFailed": "Test passed or failed", + "testPassedOrFailed": "Testul a trecut sau a eșuat", "@testPassedOrFailed": {}, - "testsRequired": "Required Tests", + "testsRequired": "Teste necesare", "@testsRequired": {}, - "testResults": "Test Results", + "testResults": "Rezultatele testului", "@testResults": { "description": "" }, - "testResultsDetail": "Display stock item test results", + "testResultsDetail": "Afișează rezultatele testului produsului în stoc", "@testResultsDetail": {}, - "testResultAdd": "Add Test Result", + "testResultAdd": "Adăugare rezultat test", "@testResultAdd": {}, - "testResultNone": "No Test Results", + "testResultNone": "Niciun rezultat de test", "@testResultNone": {}, - "testResultNoneDetail": "No test results available", + "testResultNoneDetail": "Nici un rezultat de test disponibil", "@testResultNoneDetail": {}, - "testResultUploadFail": "Error uploading test result", + "testResultUploadFail": "Eroare încărcare rezultat test", "@testResultUploadFail": {}, - "testResultUploadPass": "Test result uploaded", + "testResultUploadPass": "Rezultat test încărcat", "@testResultUploadPass": {}, "timeout": "Timeout", "@timeout": { "description": "" }, - "toggleTorch": "Toggle Torch", + "toggleTorch": "Comutare lanternă", "@toggleTorch": {}, - "tokenError": "Token Error", + "tokenError": "Eroare token", "@tokenError": {}, - "tokenMissing": "Missing Token", + "tokenMissing": "Token lipsă", "@tokenMissing": {}, - "tokenMissingFromResponse": "Access token missing from response", + "tokenMissingFromResponse": "Token-ul de acces lipsește din răspuns", "@tokenMissingFromResponse": {}, - "totalPrice": "Total Price", + "totalPrice": "Preț total", "@totalPrice": {}, - "trackingNumber": "Tracking Number", + "trackingNumber": "Număr de urmărire", "@trackingNumber": {}, "transfer": "Transfer", "@transfer": { "description": "transfer" }, - "transferStock": "Transfer Stock", + "transferStock": "Transfera stoc", "@transferStock": { "description": "transfer stock" }, - "transferStockDetail": "Transfer item to a different location", + "transferStockDetail": "Transferați articolul într-o locație diferită", "@transferStockDetail": {}, - "transferStockLocation": "Transfer Stock Location", + "transferStockLocation": "Transfer locație stoc", "@transferStockLocation": {}, - "transferStockLocationDetail": "Transfer this stock location into another", + "transferStockLocationDetail": "Transferați această locație a stocului în alta", "@transferStockLocationDetail": {}, - "translate": "Translate", + "translate": "Traduceți", "@translate": {}, - "translateHelp": "Help translate the InvenTree app", + "translateHelp": "Ajută la traducerea aplicației InvenTree", "@translateHelp": {}, - "unavailable": "Unavailable", + "unavailable": "Indisponibil", "@unavailable": {}, - "unavailableDetail": "Item is not available", + "unavailableDetail": "Articolul nu este disponibil", "@unavailableDetail": {}, - "unitPrice": "Unit Price", + "unitPrice": "Preţ Unitar", "@unitPrice": {}, - "units": "Units", + "units": "Unități", "@units": {}, - "unknownResponse": "Unknown Response", + "unknownResponse": "Răspuns necunoscut", "@unknownResponse": {}, - "upload": "Upload", + "upload": "Încărcaţi", "@upload": {}, - "uploadFailed": "File upload failed", + "uploadFailed": "Încărcare fișier eșuată", "@uploadFailed": {}, - "uploadSuccess": "File uploaded", + "uploadSuccess": "Fişier încărcat", "@uploadSuccess": {}, - "uploadImage": "Upload Image", + "uploadImage": "Încărcare imagine", "@uploadImage": {}, - "usedIn": "Used In", + "usedIn": "Folosite în", "@usedIn": {}, - "usedInDetails": "Assemblies which require this part", + "usedInDetails": "Ansambluri care necesită aceast articol", "@usedInDetails": {}, "username": "Nume utilizator", "@username": {}, "usernameEmpty": "Numele de utilizator nu poate fi gol", "@usernameEmpty": {}, - "value": "Value", + "value": "Valoare", "@value": { "description": "value" }, - "valueCannotBeEmpty": "Value cannot be empty", + "valueCannotBeEmpty": "Valoarea nu poate fi goală", "@valueCannotBeEmpty": {}, - "valueRequired": "Value is required", + "valueRequired": "Valoarea este obligatorie", "@valueRequired": {}, - "variants": "Variants", + "variants": "Variante", "@variants": {}, - "version": "Version", + "version": "Verisune", "@version": {}, - "viewSupplierPart": "View Supplier Part", + "viewSupplierPart": "Vezi capitol furnizor", "@viewSupplierPart": {}, "website": "Website", "@website": {}, - "yes": "Yes", + "yes": "Da", "@yes": {}, - "price": "Price", + "price": "Preț", "@price": {}, - "priceRange": "Price Range", + "priceRange": "Interval de preț", "@priceRange": {}, - "priceOverrideMin": "Minimum Price Override", + "priceOverrideMin": "Suprascriere Preț Minim", "@priceOverrideMin": {}, - "priceOverrideMax": "Maximum Price Override", + "priceOverrideMax": "Suprascriere de preț maximă", "@priceOverrideMax": {}, - "salePrice": "Sale Price", + "salePrice": "Preț de vânzare", "@salePrice": {}, - "saleHistory": "Sale History", + "saleHistory": "Istoric vanzari", "@saleHistory": {}, - "supplierPricing": "Supplier Pricing", + "supplierPricing": "Prețurile furnizorului", "@supplierPricing": {}, - "bomCost": "BOM Cost", + "bomCost": "Cost BOM", "@bomCost": {}, - "internalCost": "Internal Cost", + "internalCost": "Cost intern", "@internalCost": {}, - "variantCost": "Variant Cost", + "variantCost": "Cost variantă", "@variantCost": {}, - "overallPricing": "Overall Pricing", + "overallPricing": "Preț general", "@overallPricing": {}, - "pricingOverrides": "Pricing Overrides", + "pricingOverrides": "Suprascrieri preturi", "@pricingOverrides": {}, - "currency": "Currency", + "currency": "Monedă", "@currency": {}, - "priceBreaks": "Price Breaks", + "priceBreaks": "Reduceri de preț", "@priceBreaks": {} } \ No newline at end of file diff --git a/lib/l10n/tr_TR/app_tr_TR.arb b/lib/l10n/tr_TR/app_tr_TR.arb index 464d390..2281a9a 100644 --- a/lib/l10n/tr_TR/app_tr_TR.arb +++ b/lib/l10n/tr_TR/app_tr_TR.arb @@ -10,7 +10,7 @@ }, "about": "Hakkında", "@about": {}, - "accountDetails": "Hesap Detayları", + "accountDetails": "Hesap Ayrıntıları", "@accountDetails": {}, "actions": "Eylemler", "@actions": { @@ -34,7 +34,7 @@ "@appCredits": {}, "appDetails": "Uygulama Ayrıntıları", "@appDetails": {}, - "allocated": "Tahsis edildi", + "allocated": "Tahsis Edildi", "@allocated": {}, "aspectRatio16x9": "16:9", "@aspectRatio16x9": {}, @@ -44,7 +44,7 @@ "@aspectRatio4x3": {}, "aspectRatioSquare": "Kare (1:1)", "@aspectRatioSquare": {}, - "allocateStock": "Tahsisli stok", + "allocateStock": "Stoku Tahsis Et", "@allocateStock": {}, "allocatedStock": "Tahsis Edilen Stok", "@allocatedStock": {}, @@ -60,7 +60,7 @@ "@assignedToMeDetail": {}, "attachments": "Ekler", "@attachments": {}, - "attachImage": "Resim ekle", + "attachImage": "Görsel Ekle", "@attachImage": { "description": "Attach an image" }, @@ -98,7 +98,7 @@ "@barcodeNotAssigned": {}, "barcodeScanPart": "Parça barkodnu tara", "@barcodeScanPart": {}, - "barcodeReceivePart": "Tesellüm barkodunu tara", + "barcodeReceivePart": "Parçayı teslim almak için barkodu tarayın", "@barcodeReceivePart": {}, "barcodeScanPaused": "Barkod tarama duraklatıldı", "@barodeScanPaused": {}, @@ -138,15 +138,15 @@ "@barcodeUnknown": {}, "batchCode": "Grup kodu", "@batchCode": {}, - "billOfMaterials": "Fatura materyalleri", + "billOfMaterials": "Ürün Ağacı", "@billOfMaterials": {}, "bom": "BOM", "@bom": {}, - "bomEnable": "Malzeme Listesini Görüntüle", + "bomEnable": "Ürün Ağacını Görüntüle", "@bomEnable": {}, - "build": "Yap", + "build": "Üret", "@build": {}, - "building": "Yapılıyor", + "building": "Üretiliyor", "@building": {}, "cameraCreationError": "Kamera Kontrolcüsü Açılamadı", "@cameraCreationError": {}, @@ -176,7 +176,7 @@ "@companyEdit": {}, "companyNoResults": "Sorguyla eşleşen şirket yok", "@companyNoResults": {}, - "companyUpdated": "Firma bilgileri güncellendi", + "companyUpdated": "Şirket bilgileri güncellendi", "@companyUpdated": {}, "companies": "Şirketler", "@companies": {}, @@ -206,7 +206,7 @@ "@credits": {}, "crop": "Kırp", "@crop": {}, - "cropImage": "Resmi Kırp", + "cropImage": "Görseli Kırp", "@cropImage": {}, "customer": "Müşteri", "@customer": {}, @@ -228,11 +228,11 @@ "@delete": {}, "deleteFailed": "Silme işlemi başarısız", "@deleteFailed": {}, - "deleteImageConfirmation": "Bu resmi silmek istediğinizden emin misiniz?", + "deleteImageConfirmation": "Bu görseli silmek istediğinize emin misiniz?", "@deleteImageConfirmation": {}, - "deleteImageTooltip": "Görüntüyü Sil", + "deleteImageTooltip": "Görseli Sil", "@deleteImageTooltip": {}, - "deleteImage": "Resmi sil", + "deleteImage": "Görseli sil", "@deleteImage": {}, "deletePart": "Parça Sil", "@deletePart": {}, @@ -244,11 +244,11 @@ "@deliveryDate": {}, "description": "Açıklama", "@description": {}, - "destination": "Varış Yeri", + "destination": "Hedef", "@destination": {}, "destroyed": "Yok edildi", "@destroyed": {}, - "details": "Detaylar", + "details": "Ayrıntılar", "@details": { "description": "details" }, @@ -280,7 +280,7 @@ }, "editItem": "Stok kalemi düzenle", "@editItem": {}, - "editLineItem": "Satır Ögesini Düzenle", + "editLineItem": "Satırı Düzenle", "@editLineItem": {}, "email": "E-posta", "@email": {}, @@ -316,9 +316,9 @@ "@expiryExpired": {}, "expiryStale": "Eskimiş", "@expiryStale": {}, - "extraLineItem": "Fazladan Satır Ögesi", + "extraLineItem": "Ek Kalem", "@extraLineItem": {}, - "extraLineItems": "Fazladan Satır Ögeleri", + "extraLineItems": "Ek Kalemler", "@extraLineItems": {}, "feedback": "Geri Bildirim", "@feedback": {}, @@ -392,9 +392,9 @@ "@homeShowSo": {}, "homeShowSoDescription": "Satış siparişleri tuşunu giriş ekranında göster", "@homeShowSoDescription": {}, - "homeShowSubscribed": "Parça bildirimlerine abone ol", + "homeShowSubscribed": "Takip Edilen Parçalar", "@homeShowSubscribed": {}, - "homeShowSubscribedDescription": "Abone olunan bölümleri ana ekranda göster", + "homeShowSubscribedDescription": "Takip edilen parçaları ana ekranda göster", "@homeShowSubscsribedDescription": {}, "homeShowSuppliers": "Tedarikçileri Göster", "@homeShowSuppliers": {}, @@ -408,13 +408,13 @@ "@homeShowCustomers": {}, "homeShowCustomersDescription": "Müşteri butonunu ana ekranda göster", "@homeShowCustomersDescription": {}, - "imageUploadFailure": "Fotoğraf yükleme başarısız", + "imageUploadFailure": "Görsel yükleme başarısız", "@imageUploadFailure": {}, - "imageUploadSuccess": "Resim yüklendi", + "imageUploadSuccess": "Görsel yüklendi", "@imageUploadSuccess": {}, "inactive": "Pasif", "@inactive": {}, - "inactiveCompany": "Bu şirket pasif olarak imlendi", + "inactiveCompany": "Bu şirket pasif olarak işaretlendi", "@inactiveCompany": {}, "inactiveDetail": "Bu parça pasif olarak işaretlendi", "@inactiveDetail": {}, @@ -432,7 +432,7 @@ "@internalPartNumber": {}, "info": "Bilgi", "@info": {}, - "inProduction": "Yapım Aşamasında", + "inProduction": "Üretimde", "@inProduction": {}, "inProductionDetail": "Bu stok kalemi üretimdedir", "@inProductionDetail": {}, @@ -462,7 +462,7 @@ "@issue": {}, "issueDate": "Sorun Tarihi", "@issueDate": {}, - "issueOrder": "Sipariş Ver", + "issueOrder": "Sipariş Düzenle", "@issueOrder": {}, "itemInLocation": "Parça zaten konumda", "@itemInLocation": {}, @@ -472,13 +472,13 @@ "@itemUpdated": {}, "keywords": "Anahtar kelimeler", "@keywords": {}, - "labelDriver": "Label Driver", + "labelDriver": "Etiket Sürücü", "@labelDriver": {}, "labelSelectDriver": "Etiket Yazıcı Sürücüsü Seçin", "@labelSelectDriver": {}, "labelPrinting": "Etiket Yazdırma", "@labelPrinting": {}, - "labelPrintingDetail": "Etiket yazdırmayı aktifleştir", + "labelPrintingDetail": "Etiket yazdırmayı etkinleştir", "@labelPrintingDetail": {}, "labelTemplate": "Etiket Şablonu", "@labelTemplate": {}, @@ -496,15 +496,15 @@ "@lastStocktake": {}, "lastUpdated": "Son güncelleme", "@lastUpdated": {}, - "level": "Düzey", + "level": "Seviye", "@level": {}, - "lineItemAdd": "Satır Ögesi Ekle", + "lineItemAdd": "Satır Ekle", "@lineItemAdd": {}, - "lineItem": "Parça Sırası", + "lineItem": "Satır", "@lineItem": {}, - "lineItems": "Parçalar Sırası", + "lineItems": "Satırlar", "@lineItems": {}, - "lineItemUpdated": "Satır ögesi güncellendi", + "lineItemUpdated": "Satır güncellendi", "@lineItemUpdated": {}, "locateItem": "Stok kalemi bul", "@locateItem": {}, @@ -562,7 +562,7 @@ "@noResponse": {}, "noResults": "Sonuç Yok", "@noResults": {}, - "noImageAvailable": "Kullanılabilir resim yok", + "noImageAvailable": "Görsel yok", "@noImageAvailable": {}, "noPricingAvailable": "Fiyatlandırma mevcut değil", "@noPricingAvailable": {}, @@ -588,9 +588,9 @@ "@orientationPortrait": {}, "orientationSystem": "Sistem", "@orientationSystem": {}, - "outstanding": "Beklemede", + "outstanding": "Açık", "@outstanding": {}, - "outstandingOrderDetail": "Bekleyen siparişleri göster", + "outstandingOrderDetail": "Açık siparişleri göster", "@outstandingOrderDetail": {}, "overdue": "Gecikmede", "@overdue": {}, @@ -624,7 +624,7 @@ "@parts": { "description": "Part (multiple)" }, - "partNotSalable": "Parça satılabilir olarak imlenmemiş", + "partNotSalable": "Parça satılabilir olarak işaretli değil", "@partNotSalable": {}, "partsNone": "Parça Yok", "@partsNone": {}, @@ -636,7 +636,7 @@ "@pricingSettingDetail": {}, "partSettings": "Parça Ayarları", "@partSettings": {}, - "partsStarred": "Sürekli Gelen parçalar", + "partsStarred": "Takip Edilen Parçalar", "@partsStarred": {}, "partsStarredNone": "Yıldızlı parça yok", "@partsStarredNone": {}, @@ -648,7 +648,7 @@ "@partCategoryTopLevel": {}, "partCategories": "Parça Kategorileri", "@partCategories": {}, - "partDetails": "Parça detayları", + "partDetails": "Parça Ayrıntıları", "@partDetails": {}, "partNotes": "Parça notları", "@partNotes": {}, @@ -710,7 +710,7 @@ "@projectCode": {}, "purchaseOrderConfirmScan": "Tarama Verisini Onayla", "@purchaseOrderConfirmScan": {}, - "purchaseOrderConfirmScanDetail": "Taranan Ürünlerin Detaylarını Onayla", + "purchaseOrderConfirmScanDetail": "Kalemleri tararken ayrıntıları onayla", "@purchaseOrderConfirmScanDetail": {}, "purchaseOrderEnable": "Satın Alma Siparişlerini Etkinleştir", "@purchaseOrderEnable": {}, @@ -718,7 +718,7 @@ "@purchaseOrderEnableDetail": {}, "purchaseOrderShowCamera": "Kamera Kısayolu", "@purchaseOrderShowCamera": {}, - "purchaseOrderShowCameraDetail": "Satın alma emirleri ekranında fotoğraf yükleme kısayolunu etkinleştir", + "purchaseOrderShowCameraDetail": "Satın alma siparişi ekranında görsel yükleme kısayolunu etkinleştir", "@purchaseOrderShowCameraDetail": {}, "purchaseOrder": "Satınalma Siparişi", "@purchaseOrder": {}, @@ -750,13 +750,13 @@ "@queryEmpty": {}, "queryNoResults": "Sorgu için sonuç yok", "@queryNoResults": {}, - "received": "Alınan", + "received": "Teslim Alındı", "@received": {}, - "receivedFilterDetail": "Alınan ögeleri göster", + "receivedFilterDetail": "Teslim alınan kalemleri göster", "@receivedFilterDetail": {}, - "receiveItem": "Alınan Öğeler", + "receiveItem": "Kalemi Teslim Al", "@receiveItem": {}, - "receivedItem": "Alınan stok kalemleri", + "receivedItem": "Teslim alınan stok kalemleri", "@receivedItem": {}, "reference": "Referans", "@reference": {}, @@ -844,7 +844,7 @@ "@salesOrderEnableDetail": {}, "salesOrderShowCamera": "Kamera Kısayolu", "@salesOrderShowCamera": {}, - "salesOrderShowCameraDetail": "Satış emirleri ekranında fotoğraf yükleme kısayolunu etkinleştir", + "salesOrderShowCameraDetail": "Satış siparişi ekranında görsel yükleme kısayolunu etkinleştir", "@salesOrderShowCameraDetail": {}, "salesOrderSettings": "Satış emirleri ayarları", "@salesOrderSettings": {}, @@ -870,7 +870,7 @@ "@scannerExternal": {}, "scannerExternalDetail": "Barkodları okumak için harici tarayıcı kullan (keyboard wedge modu)", "@scannerExternalDetail": {}, - "scanReceivedParts": "Alınan Parçaları Tara", + "scanReceivedParts": "Teslim Alınan Parçaları Tara", "@scanReceivedParts": {}, "search": "Ara", "@search": { @@ -888,7 +888,7 @@ "@select": {}, "selectFile": "Dosya Seç", "@selectFile": {}, - "selectImage": "Resim Seç", + "selectImage": "Görsel Seç", "@selectImage": {}, "selectLocation": "Bir yer seçin", "@selectLocation": {}, @@ -922,7 +922,7 @@ "@serverEmpty": {}, "serverError": "Sunucu Hatası", "@serverError": {}, - "serverDetails": "Sunucu Detayları", + "serverDetails": "Sunucu Ayrıntıları", "@serverDetails": {}, "serverMissingData": "Sunucu yanıtında gerekli alanlar eksik", "@serverMissingData": {}, @@ -948,11 +948,11 @@ "@shipmentsPending": {}, "shipmentAdd": "Gönderi Ekle", "@shipmentAdd": {}, - "shipmentCheck": "Teslimatı Kontrol Et", + "shipmentCheck": "Sevkiyatı Kontrol Et", "@shipmentCheck": {}, - "shipmentCheckDetail": "Bu teslimatı kontrol edildi olarak işaretle", + "shipmentCheckDetail": "Bu sevkiyatı kontrol edildi olarak işaretle", "@shipmentCheckDetail": {}, - "shipmentChecked": "Teslimat Kontrol Edildi", + "shipmentChecked": "Sevkiyat Kontrol Edildi", "@shipmentChecked": {}, "shipmentDate": "Teslimat Tarihi", "@shipmentDate": {}, @@ -962,7 +962,7 @@ "@shipmentReference": {}, "shipmentSend": "Teslimatı Gönder", "@shipmentSend": {}, - "shipmentUncheck": "Teslimat İşaretini Kaldır", + "shipmentUncheck": "Sevkiyat Kontrolünü Kaldır", "@shipmentUncheck": {}, "shipmentUncheckDetail": "Bu teslimatı kontrol edilmedi olarak işaretle", "@shipmentUncheckDetail": {}, @@ -1148,7 +1148,7 @@ "@uploadFailed": {}, "uploadSuccess": "Dosya yüklendi", "@uploadSuccess": {}, - "uploadImage": "Resim Yükleyin", + "uploadImage": "Görsel Yükle", "@uploadImage": {}, "usedIn": "Burada Kullanıldı", "@usedIn": {}, @@ -1202,6 +1202,6 @@ "@pricingOverrides": {}, "currency": "Para Birimi", "@currency": {}, - "priceBreaks": "Fiyat Aralığı", + "priceBreaks": "Fiyat Kademeleri", "@priceBreaks": {} } \ No newline at end of file diff --git a/lib/l10n/zh_CN/app_zh_CN.arb b/lib/l10n/zh_CN/app_zh_CN.arb index 876f122..26cdce4 100644 --- a/lib/l10n/zh_CN/app_zh_CN.arb +++ b/lib/l10n/zh_CN/app_zh_CN.arb @@ -102,7 +102,7 @@ "@barcodeReceivePart": {}, "barcodeScanPaused": "条形码扫描已暂停", "@barodeScanPaused": {}, - "barcodeScanPause": "点击或按住以暂停扫描", + "barcodeScanPause": "点击以暂停扫描", "@barcodeScanPause": {}, "barcodeScanAssign": "扫描以分配条形码", "@barcodeScanAssign": {}, @@ -514,7 +514,7 @@ "@locationCreate": {}, "locationCreateDetail": "创建新库存地点", "@locationCreateDetail": {}, - "locationDefault": "默认库存地点", + "locationDefault": "默认位置", "@locationDefault": {}, "locationNotSet": "没有指定仓储位置", "@locationNotSet": {}, From 225c40f9a678661149187f15c67e4a056d8d2698 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 10 Jan 2026 09:23:00 +1100 Subject: [PATCH 08/17] New Crowdin updates (#744) * New translations app_en.arb (Dutch) * New translations app_en.arb (German) --- lib/l10n/de_DE/app_de_DE.arb | 6 +++--- lib/l10n/nl_NL/app_nl_NL.arb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/l10n/de_DE/app_de_DE.arb b/lib/l10n/de_DE/app_de_DE.arb index e0bb95c..83e0bdc 100644 --- a/lib/l10n/de_DE/app_de_DE.arb +++ b/lib/l10n/de_DE/app_de_DE.arb @@ -546,7 +546,7 @@ "@name": {}, "no": "Nein", "@no": {}, - "notApplicable": "nicht verfügbar", + "notApplicable": "Nicht Anwendbar", "@notApplicable": {}, "notConnected": "Nicht verbunden", "@notConnected": {}, @@ -1180,9 +1180,9 @@ "@price": {}, "priceRange": "Preisspanne", "@priceRange": {}, - "priceOverrideMin": "Mindestpreis überschreiben", + "priceOverrideMin": "Mindestpreis ignorieren", "@priceOverrideMin": {}, - "priceOverrideMax": "Maximalen Preis ignorieren", + "priceOverrideMax": "Maximalpreis ignorieren", "@priceOverrideMax": {}, "salePrice": "Verkaufspreis", "@salePrice": {}, diff --git a/lib/l10n/nl_NL/app_nl_NL.arb b/lib/l10n/nl_NL/app_nl_NL.arb index ba45758..f789d4a 100644 --- a/lib/l10n/nl_NL/app_nl_NL.arb +++ b/lib/l10n/nl_NL/app_nl_NL.arb @@ -958,7 +958,7 @@ "@shipmentDate": {}, "shipmentEdit": "Wijzig levering", "@shipmentEdit": {}, - "shipmentReference": "Shipment Reference", + "shipmentReference": "Referentie verzending", "@shipmentReference": {}, "shipmentSend": "Verzending versturen", "@shipmentSend": {}, From a4631cda7ab10d9635687765fc21bb25536e6718 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 14 Jan 2026 15:15:21 +1100 Subject: [PATCH 09/17] List filtering fix (#746) * Bug fix for API forms without URL - Ensure submitted data is returned * Translate search fields * Update release notes * Remove debug message * dart format --- assets/release_notes.md | 1 + lib/api_form.dart | 11 +++++------ lib/l10n/app_en.arb | 12 ++++++++++++ lib/widget/paginator.dart | 8 ++++---- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/assets/release_notes.md b/assets/release_notes.md index cbde004..e4e571c 100644 --- a/assets/release_notes.md +++ b/assets/release_notes.md @@ -2,6 +2,7 @@ --- - Fixes bug which launched camera twice when uploading an attachment +- Fixed bug related to list sorting and filtering ### 0.21.1 - November 2025 --- diff --git a/lib/api_form.dart b/lib/api_form.dart index 429c71d..7201b7d 100644 --- a/lib/api_form.dart +++ b/lib/api_form.dart @@ -1011,17 +1011,16 @@ Future launchApiForm( APIFormWidgetState? formHandler, IconData icon = TablerIcons.device_floppy, }) async { - showLoadingOverlay(); - // List of fields defined by the server Map serverFields = {}; if (url.isNotEmpty) { + showLoadingOverlay(); var options = await InvenTreeAPI().options(url); + hideLoadingOverlay(); // Invalid response from server if (!options.isValid()) { - hideLoadingOverlay(); return; } @@ -1030,8 +1029,6 @@ Future launchApiForm( if (serverFields.isEmpty) { // User does not have permission to perform this action showSnackIcon(L10().response403, icon: TablerIcons.user_x); - - hideLoadingOverlay(); return; } } @@ -1075,6 +1072,8 @@ Future launchApiForm( formFields.add(field); } + showLoadingOverlay(); + // Grab existing data for each form field for (var field in formFields) { await field.loadInitialData(); @@ -1430,7 +1429,7 @@ class APIFormWidgetState extends State { // Perhaps we just want to process the data? if (widget.url.isEmpty) { // Hide the form - handleSuccess(data, {}); + handleSuccess(data, data); return; } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 905be19..cab9260 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1298,6 +1298,18 @@ "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, + "searchParts": "Search Parts", "@searchParts": {}, diff --git a/lib/widget/paginator.dart b/lib/widget/paginator.dart index c525de5..e18957e 100644 --- a/lib/widget/paginator.dart +++ b/lib/widget/paginator.dart @@ -152,19 +152,19 @@ abstract class PaginatedSearchState Map fields = { "ordering_field": { "type": "choice", - "label": "Ordering Field", + "label": L10().searchOrderingField, "required": true, "choices": _opts, "value": _field, }, "ordering_order": { "type": "choice", - "label": "Ordering Direction", + "label": L10().searchOrderingDirection, "required": true, "value": _order, "choices": [ - {"value": "+", "display_name": "Ascending"}, - {"value": "-", "display_name": "Descending"}, + {"value": "+", "display_name": L10().searchOrderingAscending}, + {"value": "-", "display_name": L10().searchOrderingDescending}, ], }, }; From 80f62091b1d4bc5ae3d96616126606a8c1b3a6f7 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 14 Jan 2026 22:12:04 +1100 Subject: [PATCH 10/17] Bump version number (#747) --- assets/release_notes.md | 2 +- pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/release_notes.md b/assets/release_notes.md index e4e571c..e989e79 100644 --- a/assets/release_notes.md +++ b/assets/release_notes.md @@ -1,4 +1,4 @@ -### x.xx.x - Month Year +### 0.21.2 - January 2026 --- - Fixes bug which launched camera twice when uploading an attachment diff --git a/pubspec.yaml b/pubspec.yaml index bf7987f..129d635 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: inventree description: InvenTree stock management -version: 0.21.1+107 +version: 0.21.2+108 environment: sdk: ^3.8.1 From 9002fb78d304b45f17d21eb5cd5ce3c08a7701dc Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 15 Jan 2026 09:57:18 +1100 Subject: [PATCH 11/17] New Crowdin updates (#748) * New translations app_en.arb (Turkish) * New translations app_en.arb (Romanian) * New translations app_en.arb (Danish) * New translations app_en.arb (Polish) * New translations app_en.arb (Japanese) * New translations app_en.arb (Dutch) * New translations app_en.arb (German) * New translations app_en.arb (Chinese Simplified) * New translations app_en.arb (Indonesian) * New translations app_en.arb (Persian) * New translations app_en.arb (French) * New translations app_en.arb (Spanish) * New translations app_en.arb (Arabic) * New translations app_en.arb (Bulgarian) * New translations app_en.arb (Czech) * New translations app_en.arb (Greek) * New translations app_en.arb (Finnish) * New translations app_en.arb (Hebrew) * New translations app_en.arb (Hungarian) * New translations app_en.arb (Italian) * New translations app_en.arb (Korean) * New translations app_en.arb (Lithuanian) * New translations app_en.arb (Norwegian) * New translations app_en.arb (Portuguese) * New translations app_en.arb (Russian) * New translations app_en.arb (Slovak) * New translations app_en.arb (Slovenian) * New translations app_en.arb (Swedish) * New translations app_en.arb (Ukrainian) * New translations app_en.arb (Chinese Traditional) * New translations app_en.arb (Vietnamese) * New translations app_en.arb (Portuguese, Brazilian) * New translations app_en.arb (Spanish, Mexico) * New translations app_en.arb (Thai) * New translations app_en.arb (Estonian) * New translations app_en.arb (Latvian) * New translations app_en.arb (Hindi) * New translations app_en.arb (Serbian (Latin)) --- lib/l10n/ar_SA/app_ar_SA.arb | 8 ++++++++ lib/l10n/bg_BG/app_bg_BG.arb | 8 ++++++++ lib/l10n/cs_CZ/app_cs_CZ.arb | 8 ++++++++ lib/l10n/da_DK/app_da_DK.arb | 8 ++++++++ lib/l10n/de_DE/app_de_DE.arb | 8 ++++++++ lib/l10n/el_GR/app_el_GR.arb | 8 ++++++++ lib/l10n/es_ES/app_es_ES.arb | 8 ++++++++ lib/l10n/es_MX/app_es_MX.arb | 8 ++++++++ lib/l10n/et_EE/app_et_EE.arb | 8 ++++++++ lib/l10n/fa_IR/app_fa_IR.arb | 8 ++++++++ lib/l10n/fi_FI/app_fi_FI.arb | 8 ++++++++ lib/l10n/fr_FR/app_fr_FR.arb | 8 ++++++++ lib/l10n/he_IL/app_he_IL.arb | 8 ++++++++ lib/l10n/hi_IN/app_hi_IN.arb | 8 ++++++++ lib/l10n/hu_HU/app_hu_HU.arb | 8 ++++++++ lib/l10n/id_ID/app_id_ID.arb | 8 ++++++++ lib/l10n/it_IT/app_it_IT.arb | 8 ++++++++ lib/l10n/ja_JP/app_ja_JP.arb | 8 ++++++++ lib/l10n/ko_KR/app_ko_KR.arb | 8 ++++++++ lib/l10n/lt_LT/app_lt_LT.arb | 8 ++++++++ lib/l10n/lv_LV/app_lv_LV.arb | 8 ++++++++ lib/l10n/nl_NL/app_nl_NL.arb | 8 ++++++++ lib/l10n/no_NO/app_no_NO.arb | 8 ++++++++ lib/l10n/pl_PL/app_pl_PL.arb | 8 ++++++++ lib/l10n/pt_BR/app_pt_BR.arb | 8 ++++++++ lib/l10n/pt_PT/app_pt_PT.arb | 8 ++++++++ lib/l10n/ro_RO/app_ro_RO.arb | 8 ++++++++ lib/l10n/ru_RU/app_ru_RU.arb | 8 ++++++++ lib/l10n/sk_SK/app_sk_SK.arb | 8 ++++++++ lib/l10n/sl_SI/app_sl_SI.arb | 8 ++++++++ lib/l10n/sr_CS/app_sr_CS.arb | 8 ++++++++ lib/l10n/sv_SE/app_sv_SE.arb | 8 ++++++++ lib/l10n/th_TH/app_th_TH.arb | 8 ++++++++ lib/l10n/tr_TR/app_tr_TR.arb | 8 ++++++++ lib/l10n/uk_UA/app_uk_UA.arb | 8 ++++++++ lib/l10n/vi_VN/app_vi_VN.arb | 8 ++++++++ lib/l10n/zh_CN/app_zh_CN.arb | 8 ++++++++ lib/l10n/zh_TW/app_zh_TW.arb | 8 ++++++++ 38 files changed, 304 insertions(+) diff --git a/lib/l10n/ar_SA/app_ar_SA.arb b/lib/l10n/ar_SA/app_ar_SA.arb index 1f8c94e..af1cb2a 100644 --- a/lib/l10n/ar_SA/app_ar_SA.arb +++ b/lib/l10n/ar_SA/app_ar_SA.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/bg_BG/app_bg_BG.arb b/lib/l10n/bg_BG/app_bg_BG.arb index 01a6299..0a11bd2 100644 --- a/lib/l10n/bg_BG/app_bg_BG.arb +++ b/lib/l10n/bg_BG/app_bg_BG.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/cs_CZ/app_cs_CZ.arb b/lib/l10n/cs_CZ/app_cs_CZ.arb index ccd9d94..37150c8 100644 --- a/lib/l10n/cs_CZ/app_cs_CZ.arb +++ b/lib/l10n/cs_CZ/app_cs_CZ.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Hledat umístění", "@searchLocation": {}, + "searchOrderingField": "Pole pro řazení", + "@searchOrderingField": {}, + "searchOrderingDirection": "Směr řazení", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Vzestupně", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Sestupně", + "@searchOrderingDescending": {}, "searchParts": "Hledat díly", "@searchParts": {}, "searchStock": "Hledat zásoby", diff --git a/lib/l10n/da_DK/app_da_DK.arb b/lib/l10n/da_DK/app_da_DK.arb index c05efb3..c78e5e0 100644 --- a/lib/l10n/da_DK/app_da_DK.arb +++ b/lib/l10n/da_DK/app_da_DK.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Søg efter lokation", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Søg efter dele", "@searchParts": {}, "searchStock": "Søg Lager", diff --git a/lib/l10n/de_DE/app_de_DE.arb b/lib/l10n/de_DE/app_de_DE.arb index 83e0bdc..66e5dc8 100644 --- a/lib/l10n/de_DE/app_de_DE.arb +++ b/lib/l10n/de_DE/app_de_DE.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Lagerort suchen", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Teile suchen", "@searchParts": {}, "searchStock": "Bestand durchsuchen", diff --git a/lib/l10n/el_GR/app_el_GR.arb b/lib/l10n/el_GR/app_el_GR.arb index 436d4f7..7e697ae 100644 --- a/lib/l10n/el_GR/app_el_GR.arb +++ b/lib/l10n/el_GR/app_el_GR.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Αναζήτηση τοποθεσίας", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Αναζήτηση εξαρτημάτων", "@searchParts": {}, "searchStock": "Αναζήτηση αποθέματος", diff --git a/lib/l10n/es_ES/app_es_ES.arb b/lib/l10n/es_ES/app_es_ES.arb index ef947d4..0fcb849 100644 --- a/lib/l10n/es_ES/app_es_ES.arb +++ b/lib/l10n/es_ES/app_es_ES.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Buscar ubicación", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Buscar piezas", "@searchParts": {}, "searchStock": "Buscar Stock", diff --git a/lib/l10n/es_MX/app_es_MX.arb b/lib/l10n/es_MX/app_es_MX.arb index 1197082..1ea7ace 100644 --- a/lib/l10n/es_MX/app_es_MX.arb +++ b/lib/l10n/es_MX/app_es_MX.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Buscar ubicación", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Buscar partes", "@searchParts": {}, "searchStock": "Buscar inventario", diff --git a/lib/l10n/et_EE/app_et_EE.arb b/lib/l10n/et_EE/app_et_EE.arb index b6847d8..3616a21 100644 --- a/lib/l10n/et_EE/app_et_EE.arb +++ b/lib/l10n/et_EE/app_et_EE.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/fa_IR/app_fa_IR.arb b/lib/l10n/fa_IR/app_fa_IR.arb index ceb836d..8cc41e9 100644 --- a/lib/l10n/fa_IR/app_fa_IR.arb +++ b/lib/l10n/fa_IR/app_fa_IR.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "جست و جو موقعیت", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "جست و جو قطعه ها", "@searchParts": {}, "searchStock": "جست و جو موجودی", diff --git a/lib/l10n/fi_FI/app_fi_FI.arb b/lib/l10n/fi_FI/app_fi_FI.arb index 26ba3e3..ea2c362 100644 --- a/lib/l10n/fi_FI/app_fi_FI.arb +++ b/lib/l10n/fi_FI/app_fi_FI.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Etsi osia", "@searchParts": {}, "searchStock": "Etsi varastosta", diff --git a/lib/l10n/fr_FR/app_fr_FR.arb b/lib/l10n/fr_FR/app_fr_FR.arb index 929c962..9831dcb 100644 --- a/lib/l10n/fr_FR/app_fr_FR.arb +++ b/lib/l10n/fr_FR/app_fr_FR.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Rechercher un emplacement", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Rechercher de pièces", "@searchParts": {}, "searchStock": "Rechercher un stock", diff --git a/lib/l10n/he_IL/app_he_IL.arb b/lib/l10n/he_IL/app_he_IL.arb index 2273108..c508c93 100644 --- a/lib/l10n/he_IL/app_he_IL.arb +++ b/lib/l10n/he_IL/app_he_IL.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "חפש מיקום", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "חיפוש פריטים", "@searchParts": {}, "searchStock": "חפש מלאי", diff --git a/lib/l10n/hi_IN/app_hi_IN.arb b/lib/l10n/hi_IN/app_hi_IN.arb index c0c3cbb..6c8fde6 100644 --- a/lib/l10n/hi_IN/app_hi_IN.arb +++ b/lib/l10n/hi_IN/app_hi_IN.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/hu_HU/app_hu_HU.arb b/lib/l10n/hu_HU/app_hu_HU.arb index 509d9d2..0144f68 100644 --- a/lib/l10n/hu_HU/app_hu_HU.arb +++ b/lib/l10n/hu_HU/app_hu_HU.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Hely keresése", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Alkatrészek keresése", "@searchParts": {}, "searchStock": "Készlet keresése", diff --git a/lib/l10n/id_ID/app_id_ID.arb b/lib/l10n/id_ID/app_id_ID.arb index 2346557..7cce4a5 100644 --- a/lib/l10n/id_ID/app_id_ID.arb +++ b/lib/l10n/id_ID/app_id_ID.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Caro Lokasi", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Cari Part", "@searchParts": {}, "searchStock": "Cari Persediaan", diff --git a/lib/l10n/it_IT/app_it_IT.arb b/lib/l10n/it_IT/app_it_IT.arb index ecbe8b1..6683476 100644 --- a/lib/l10n/it_IT/app_it_IT.arb +++ b/lib/l10n/it_IT/app_it_IT.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Cerca Ubicazione", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Cerca Articoli", "@searchParts": {}, "searchStock": "Cerca Scorte", diff --git a/lib/l10n/ja_JP/app_ja_JP.arb b/lib/l10n/ja_JP/app_ja_JP.arb index 88722da..baffd2c 100644 --- a/lib/l10n/ja_JP/app_ja_JP.arb +++ b/lib/l10n/ja_JP/app_ja_JP.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "在庫場所を検索", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "パーツの検索", "@searchParts": {}, "searchStock": "在庫を検索", diff --git a/lib/l10n/ko_KR/app_ko_KR.arb b/lib/l10n/ko_KR/app_ko_KR.arb index 390183d..f1e2e9b 100644 --- a/lib/l10n/ko_KR/app_ko_KR.arb +++ b/lib/l10n/ko_KR/app_ko_KR.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/lt_LT/app_lt_LT.arb b/lib/l10n/lt_LT/app_lt_LT.arb index dbb63e9..ecdf8de 100644 --- a/lib/l10n/lt_LT/app_lt_LT.arb +++ b/lib/l10n/lt_LT/app_lt_LT.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/lv_LV/app_lv_LV.arb b/lib/l10n/lv_LV/app_lv_LV.arb index 064ec61..7a792ed 100644 --- a/lib/l10n/lv_LV/app_lv_LV.arb +++ b/lib/l10n/lv_LV/app_lv_LV.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/nl_NL/app_nl_NL.arb b/lib/l10n/nl_NL/app_nl_NL.arb index f789d4a..bc9c2c9 100644 --- a/lib/l10n/nl_NL/app_nl_NL.arb +++ b/lib/l10n/nl_NL/app_nl_NL.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Zoeken naar locatie", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Zoek Onderdelen", "@searchParts": {}, "searchStock": "Zoek Voorraad", diff --git a/lib/l10n/no_NO/app_no_NO.arb b/lib/l10n/no_NO/app_no_NO.arb index d9e3196..68a6db4 100644 --- a/lib/l10n/no_NO/app_no_NO.arb +++ b/lib/l10n/no_NO/app_no_NO.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Søk etter plassering", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Søk i deler", "@searchParts": {}, "searchStock": "Søk i lagerbeholdning", diff --git a/lib/l10n/pl_PL/app_pl_PL.arb b/lib/l10n/pl_PL/app_pl_PL.arb index 5aa8e5c..af85d05 100644 --- a/lib/l10n/pl_PL/app_pl_PL.arb +++ b/lib/l10n/pl_PL/app_pl_PL.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Wyszukaj lokalizację", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Szukaj części", "@searchParts": {}, "searchStock": "Szukaj zapasów", diff --git a/lib/l10n/pt_BR/app_pt_BR.arb b/lib/l10n/pt_BR/app_pt_BR.arb index 991ea1d..85866f9 100644 --- a/lib/l10n/pt_BR/app_pt_BR.arb +++ b/lib/l10n/pt_BR/app_pt_BR.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Procurar um Local", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Procurar Peças", "@searchParts": {}, "searchStock": "Procurar o Estoque", diff --git a/lib/l10n/pt_PT/app_pt_PT.arb b/lib/l10n/pt_PT/app_pt_PT.arb index 4fc3583..87997d3 100644 --- a/lib/l10n/pt_PT/app_pt_PT.arb +++ b/lib/l10n/pt_PT/app_pt_PT.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/ro_RO/app_ro_RO.arb b/lib/l10n/ro_RO/app_ro_RO.arb index adfed52..2753c0c 100644 --- a/lib/l10n/ro_RO/app_ro_RO.arb +++ b/lib/l10n/ro_RO/app_ro_RO.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Căutați locația", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Caută componente", "@searchParts": {}, "searchStock": "Căutare Stoc", diff --git a/lib/l10n/ru_RU/app_ru_RU.arb b/lib/l10n/ru_RU/app_ru_RU.arb index 8eb938f..b22d092 100644 --- a/lib/l10n/ru_RU/app_ru_RU.arb +++ b/lib/l10n/ru_RU/app_ru_RU.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Искать по месту", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Найти номенклатуру", "@searchParts": {}, "searchStock": "Поиск в наличии", diff --git a/lib/l10n/sk_SK/app_sk_SK.arb b/lib/l10n/sk_SK/app_sk_SK.arb index ef1ac29..e60c333 100644 --- a/lib/l10n/sk_SK/app_sk_SK.arb +++ b/lib/l10n/sk_SK/app_sk_SK.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/sl_SI/app_sl_SI.arb b/lib/l10n/sl_SI/app_sl_SI.arb index 1414c2c..e0c78b1 100644 --- a/lib/l10n/sl_SI/app_sl_SI.arb +++ b/lib/l10n/sl_SI/app_sl_SI.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/sr_CS/app_sr_CS.arb b/lib/l10n/sr_CS/app_sr_CS.arb index e48713c..75d28b4 100644 --- a/lib/l10n/sr_CS/app_sr_CS.arb +++ b/lib/l10n/sr_CS/app_sr_CS.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/sv_SE/app_sv_SE.arb b/lib/l10n/sv_SE/app_sv_SE.arb index 88d8b85..7ff3063 100644 --- a/lib/l10n/sv_SE/app_sv_SE.arb +++ b/lib/l10n/sv_SE/app_sv_SE.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Sök efter plats", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Sök efter artiklar", "@searchParts": {}, "searchStock": "Sök i lager", diff --git a/lib/l10n/th_TH/app_th_TH.arb b/lib/l10n/th_TH/app_th_TH.arb index af0ca84..ada0c69 100644 --- a/lib/l10n/th_TH/app_th_TH.arb +++ b/lib/l10n/th_TH/app_th_TH.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/tr_TR/app_tr_TR.arb b/lib/l10n/tr_TR/app_tr_TR.arb index 2281a9a..9f6b03f 100644 --- a/lib/l10n/tr_TR/app_tr_TR.arb +++ b/lib/l10n/tr_TR/app_tr_TR.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Konum için Ara", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Parçaları Ara", "@searchParts": {}, "searchStock": "Stok Ara", diff --git a/lib/l10n/uk_UA/app_uk_UA.arb b/lib/l10n/uk_UA/app_uk_UA.arb index da21c3a..8201634 100644 --- a/lib/l10n/uk_UA/app_uk_UA.arb +++ b/lib/l10n/uk_UA/app_uk_UA.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Search for location", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Search Parts", "@searchParts": {}, "searchStock": "Search Stock", diff --git a/lib/l10n/vi_VN/app_vi_VN.arb b/lib/l10n/vi_VN/app_vi_VN.arb index 77777c0..b981e99 100644 --- a/lib/l10n/vi_VN/app_vi_VN.arb +++ b/lib/l10n/vi_VN/app_vi_VN.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "Vị trí tìm kiếm", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "Tìm kiếm phụ tùng", "@searchParts": {}, "searchStock": "Tìm kiếm có sẵn", diff --git a/lib/l10n/zh_CN/app_zh_CN.arb b/lib/l10n/zh_CN/app_zh_CN.arb index 26cdce4..2f7c498 100644 --- a/lib/l10n/zh_CN/app_zh_CN.arb +++ b/lib/l10n/zh_CN/app_zh_CN.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "搜索仓储位置", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "搜索零件", "@searchParts": {}, "searchStock": "搜索库存", diff --git a/lib/l10n/zh_TW/app_zh_TW.arb b/lib/l10n/zh_TW/app_zh_TW.arb index f0ba7e5..b0871e1 100644 --- a/lib/l10n/zh_TW/app_zh_TW.arb +++ b/lib/l10n/zh_TW/app_zh_TW.arb @@ -880,6 +880,14 @@ "@searching": {}, "searchLocation": "搜索倉儲位置", "@searchLocation": {}, + "searchOrderingField": "Ordering Field", + "@searchOrderingField": {}, + "searchOrderingDirection": "Ordering Direction", + "@searchOrderingDirection": {}, + "searchOrderingAscending": "Ascending", + "@searchOrderingAscending": {}, + "searchOrderingDescending": "Descending", + "@searchOrderingDescending": {}, "searchParts": "搜索零件", "@searchParts": {}, "searchStock": "搜索庫存", From 74f468dc1b3469ff48a184d078522d347c727df8 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 15 Jan 2026 13:20:24 +1100 Subject: [PATCH 12/17] Default filters (#749) * Bug fix for filters - Fix key shadowing * Adjust default filters for stock list * Adjust default filter values * Add "active" filter for stock items * Code formatting --- assets/release_notes.md | 6 ++++++ lib/inventree/model.dart | 2 -- lib/widget/order/purchase_order_list.dart | 1 + lib/widget/order/sales_order_list.dart | 1 + lib/widget/paginator.dart | 15 +++++++++------ lib/widget/part/part_list.dart | 1 + lib/widget/stock/stock_list.dart | 7 ++++++- 7 files changed, 24 insertions(+), 9 deletions(-) diff --git a/assets/release_notes.md b/assets/release_notes.md index e989e79..2027c93 100644 --- a/assets/release_notes.md +++ b/assets/release_notes.md @@ -1,3 +1,9 @@ +### x.xx.x - Month Year +--- + +- Fix default values for list sorting + + ### 0.21.2 - January 2026 --- diff --git a/lib/inventree/model.dart b/lib/inventree/model.dart index f87b2de..25c1708 100644 --- a/lib/inventree/model.dart +++ b/lib/inventree/model.dart @@ -730,8 +730,6 @@ class InvenTreeModel { var response = await api.get(URL, params: params); - print("paginated: ${URL}: ${params}"); - if (!response.isValid()) { return null; } diff --git a/lib/widget/order/purchase_order_list.dart b/lib/widget/order/purchase_order_list.dart index 4c1b363..85fc668 100644 --- a/lib/widget/order/purchase_order_list.dart +++ b/lib/widget/order/purchase_order_list.dart @@ -133,6 +133,7 @@ class _PaginatedPurchaseOrderListState "label": L10().outstanding, "help_text": L10().outstandingOrderDetail, "tristate": true, + "default": true, }, "overdue": { "label": L10().overdue, diff --git a/lib/widget/order/sales_order_list.dart b/lib/widget/order/sales_order_list.dart index 2c0ff4a..0a8bfb0 100644 --- a/lib/widget/order/sales_order_list.dart +++ b/lib/widget/order/sales_order_list.dart @@ -115,6 +115,7 @@ class _PaginatedSalesOrderListState "label": L10().outstanding, "help_text": L10().outstandingOrderDetail, "tristate": true, + "default": true, }, "overdue": { "label": L10().overdue, diff --git a/lib/widget/paginator.dart b/lib/widget/paginator.dart index e18957e..4aa6be1 100644 --- a/lib/widget/paginator.dart +++ b/lib/widget/paginator.dart @@ -47,25 +47,28 @@ abstract class PaginatedSearchState // Return the boolean value of a particular boolean filter Future getFilterValue(String key) async { - key = "${prefix}filter_${key}"; + final String settings_key = "${prefix}filter_${key}"; Map opts = filterOptions[key] ?? {}; bool tristate = (opts["tristate"] ?? true) as bool; - dynamic backup = tristate ? null : opts["default"]; - final result = await InvenTreeSettingsManager().getValue(key, backup); + dynamic backup = tristate ? opts["default"] : opts["default"] ?? false; + final result = await InvenTreeSettingsManager().getValue( + settings_key, + backup, + ); return result; } // Set the boolean value of a particular boolean filter Future setFilterValue(String key, dynamic value) async { - key = "${prefix}filter_${key}"; + final String settings_key = "${prefix}filter_${key}"; if (value == null) { - await InvenTreeSettingsManager().removeValue(key); + await InvenTreeSettingsManager().removeValue(settings_key); } else { - await InvenTreeSettingsManager().setValue(key, value); + await InvenTreeSettingsManager().setValue(settings_key, value); } } diff --git a/lib/widget/part/part_list.dart b/lib/widget/part/part_list.dart index 3f219b5..040de2c 100644 --- a/lib/widget/part/part_list.dart +++ b/lib/widget/part/part_list.dart @@ -74,6 +74,7 @@ class _PaginatedPartListState extends PaginatedSearchState { "label": L10().filterActive, "help_text": L10().filterActiveDetail, "tristate": true, + "default": true, }, "assembly": { "label": L10().filterAssembly, diff --git a/lib/widget/stock/stock_list.dart b/lib/widget/stock/stock_list.dart index 8e6e89d..d969792 100644 --- a/lib/widget/stock/stock_list.dart +++ b/lib/widget/stock/stock_list.dart @@ -75,8 +75,13 @@ class _PaginatedStockItemListState "help_text": L10().filterInStockDetail, "tristate": true, }, + "active": { + "default": true, + "label": L10().filterActive, + "help_text": L10().filterActiveDetail, + }, "cascade": { - "default": false, + "default": true, "label": L10().includeSublocations, "help_text": L10().includeSublocationsDetail, "tristate": false, From 97e4c98e463775e09ada7b2a2b847f840b25f7c5 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 20 Jan 2026 09:11:40 +1100 Subject: [PATCH 13/17] Default filters (#755) * Bug fix for filters - Fix key shadowing * Adjust default filters for stock list * Adjust default filter values * Add "active" filter for stock items * Code formatting * Add "default ordering" option * Enable pathstring sorting * dart format --- lib/l10n/app_en.arb | 27 +++++++++++++++------------ lib/widget/paginator.dart | 6 ++++++ lib/widget/part/category_list.dart | 9 ++++++++- lib/widget/stock/location_list.dart | 4 ++++ 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index cab9260..4f6560f 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -974,6 +974,9 @@ "passwordEmpty": "Password cannot be empty", "@passwordEmpty": {}, + "path": "Path", + "@path": {}, + "pending": "Pending", "@pending": {}, @@ -1046,23 +1049,23 @@ "projectCode": "Project Code", "@projectCode": {}, - "purchaseOrderConfirmScan": "Confirm Scan Data", - "@purchaseOrderConfirmScan": {}, + "purchaseOrderConfirmScan": "Confirm Scan Data", + "@purchaseOrderConfirmScan": {}, - "purchaseOrderConfirmScanDetail": "Confirm details when scanning in items", - "@purchaseOrderConfirmScanDetail": {}, + "purchaseOrderConfirmScanDetail": "Confirm details when scanning in items", + "@purchaseOrderConfirmScanDetail": {}, - "purchaseOrderEnable": "Enable Purchase Orders", - "@purchaseOrderEnable": {}, + "purchaseOrderEnable": "Enable Purchase Orders", + "@purchaseOrderEnable": {}, - "purchaseOrderEnableDetail": "Enable purchase order functionality", - "@purchaseOrderEnableDetail": {}, + "purchaseOrderEnableDetail": "Enable purchase order functionality", + "@purchaseOrderEnableDetail": {}, - "purchaseOrderShowCamera": "Camera Shortcut", - "@purchaseOrderShowCamera": {}, + "purchaseOrderShowCamera": "Camera Shortcut", + "@purchaseOrderShowCamera": {}, - "purchaseOrderShowCameraDetail": "Enable image upload shortcut on purchase order screen", - "@purchaseOrderShowCameraDetail": {}, + "purchaseOrderShowCameraDetail": "Enable image upload shortcut on purchase order screen", + "@purchaseOrderShowCameraDetail": {}, "purchaseOrder": "Purchase Order", "@purchaseOrder": {}, diff --git a/lib/widget/paginator.dart b/lib/widget/paginator.dart index 4aa6be1..123c7ab 100644 --- a/lib/widget/paginator.dart +++ b/lib/widget/paginator.dart @@ -42,6 +42,9 @@ abstract class PaginatedSearchState // Override in implementing class String get prefix => "prefix_"; + // Default ordering option (can be overridden) + String get defaultOrdering => ""; + // Should be overridden by an implementing subclass Map> get filterOptions => {}; @@ -103,6 +106,9 @@ abstract class PaginatedSearchState if (field != null && orderingOptions.containsKey(field.toString())) { // A valid ordering field has been found return field.toString(); + } else if (defaultOrdering.isNotEmpty) { + // A default ordering value is supplied + return defaultOrdering; } else if (orderingOptions.isNotEmpty) { // By default, return the first specified key return orderingOptions.keys.first; diff --git a/lib/widget/part/category_list.dart b/lib/widget/part/category_list.dart index ced2783..b90f2f6 100644 --- a/lib/widget/part/category_list.dart +++ b/lib/widget/part/category_list.dart @@ -61,9 +61,16 @@ class _PaginatedPartCategoryListState }, }; + @override + String get defaultOrdering => "pathstring"; + @override Map get orderingOptions { - Map options = {"name": L10().name, "level": L10().level}; + Map options = { + "name": L10().name, + "pathstring": L10().path, + "level": L10().level, + }; // Note: API v69 changed 'parts' to 'part_count' if (InvenTreeAPI().apiVersion >= 69) { diff --git a/lib/widget/stock/location_list.dart b/lib/widget/stock/location_list.dart index a27182d..d59c369 100644 --- a/lib/widget/stock/location_list.dart +++ b/lib/widget/stock/location_list.dart @@ -52,10 +52,14 @@ class _PaginatedStockLocationListState @override Map get orderingOptions => { "name": L10().name, + "pathstring": L10().path, "items": L10().stockItems, "level": L10().level, }; + @override + String get defaultOrdering => "pathstring"; + @override Map> get filterOptions => { "cascade": { From 772c88170eef6f358385016ad689582a1985f96e Mon Sep 17 00:00:00 2001 From: Enmanuel Sancho Quintanilla Date: Wed, 21 Jan 2026 15:37:42 -0600 Subject: [PATCH 14/17] Improve Sales Order UX: Stock Location, Customer Filtering & Enhanced List View (#756) * feat(sales-order): Improve UX with location display, customer filtering, and enhanced list - Show stock location when selecting items to allocate in sales orders - Filter inactive customers from customer selection dropdown - Display customer name and order total in sales order list view These changes improve the day-to-day usability for warehouse and field staff by providing more context in key workflows without requiring extra navigation. * Format code --- lib/api_form.dart | 1 + lib/inventree/sales_order.dart | 2 +- lib/widget/order/sales_order_list.dart | 9 ++++++++- lib/widget/order/so_allocation_list.dart | 3 ++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/api_form.dart b/lib/api_form.dart index 7201b7d..9df134c 100644 --- a/lib/api_form.dart +++ b/lib/api_form.dart @@ -732,6 +732,7 @@ class APIFormField { return ListTile( title: Text(item.partName), + subtitle: Text(item.locationPathString), leading: InvenTreeAPI().getThumbnail(item.partThumbnail), trailing: Text(item.quantityString()), ); diff --git a/lib/inventree/sales_order.dart b/lib/inventree/sales_order.dart index 77c3469..82cc074 100644 --- a/lib/inventree/sales_order.dart +++ b/lib/inventree/sales_order.dart @@ -48,7 +48,7 @@ class InvenTreeSalesOrder extends InvenTreeOrder { Map> fields = { "reference": {}, "customer": { - "filters": {"is_customer": true}, + "filters": {"is_customer": true, "active": true}, }, "customer_reference": {}, "description": {}, diff --git a/lib/widget/order/sales_order_list.dart b/lib/widget/order/sales_order_list.dart index 0a8bfb0..e05bcf5 100644 --- a/lib/widget/order/sales_order_list.dart +++ b/lib/widget/order/sales_order_list.dart @@ -151,9 +151,16 @@ class _PaginatedSalesOrderListState InvenTreeCompany? customer = order.customer; + // Build subtitle with customer name and optional total price + String subtitle = customer?.name ?? order.description; + if (order.totalPrice != null && order.totalPrice! > 0) { + subtitle += + " • ${order.totalPriceCurrency} ${order.totalPrice!.toStringAsFixed(2)}"; + } + return ListTile( title: Text(order.reference), - subtitle: Text(order.description), + subtitle: Text(subtitle), leading: customer == null ? null : InvenTreeAPI().getThumbnail(customer.thumbnail), diff --git a/lib/widget/order/so_allocation_list.dart b/lib/widget/order/so_allocation_list.dart index 5076f07..88699d0 100644 --- a/lib/widget/order/so_allocation_list.dart +++ b/lib/widget/order/so_allocation_list.dart @@ -55,10 +55,11 @@ class _PaginatedSOAllocationListState InvenTreePart? part = allocation.part; InvenTreeStockItem? stockItem = allocation.stockItem; + InvenTreeStockLocation? location = allocation.location; return ListTile( title: Text(part?.fullname ?? ""), - subtitle: Text(part?.description ?? ""), + subtitle: Text(location?.pathstring ?? L10().locationNotSet), onTap: () async { stockItem?.goToDetailPage(context); }, From c5bf4be3d1a76e7fe1d23f89c144af3006fa73de Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 22 Jan 2026 23:35:09 +1100 Subject: [PATCH 15/17] Support logical and custom status fields for models (#758) * Support logical and custom status fields for models * Update release notes --- assets/release_notes.md | 1 + lib/inventree/model.dart | 18 ++++++++++++++++++ lib/inventree/orders.dart | 4 ---- lib/inventree/stock.dart | 2 -- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/assets/release_notes.md b/assets/release_notes.md index 2027c93..72324c1 100644 --- a/assets/release_notes.md +++ b/assets/release_notes.md @@ -1,6 +1,7 @@ ### x.xx.x - Month Year --- +- Support display of custom status codes - Fix default values for list sorting diff --git a/lib/inventree/model.dart b/lib/inventree/model.dart index 25c1708..3a39e64 100644 --- a/lib/inventree/model.dart +++ b/lib/inventree/model.dart @@ -334,6 +334,24 @@ class InvenTreeModel { String get description => getString("description"); + int get logicalStatus => getInt("status"); + + int get customStatus => getInt("status_custom_key"); + + // Return the effective status of this object + // If a custom status is defined, return that, otherwise return the logical status + int get status { + if (customStatus > 0) { + return customStatus; + } else { + return logicalStatus; + } + } + + String get statusText => getString("status_text"); + + bool get hasCustomStatus => customStatus > 0 && customStatus != status; + String get notes => getString("notes"); int get parentId => getInt("parent"); diff --git a/lib/inventree/orders.dart b/lib/inventree/orders.dart index 8ffc478..124ded2 100644 --- a/lib/inventree/orders.dart +++ b/lib/inventree/orders.dart @@ -57,10 +57,6 @@ class InvenTreeOrder extends InvenTreeModel { bool get hasProjectCode => projectCode.isNotEmpty; - int get status => getInt("status"); - - String get statusText => getString("status_text"); - double? get totalPrice { String price = getString("total_price"); diff --git a/lib/inventree/stock.dart b/lib/inventree/stock.dart index 4b5bf3b..657a218 100644 --- a/lib/inventree/stock.dart +++ b/lib/inventree/stock.dart @@ -256,8 +256,6 @@ class InvenTreeStockItem extends InvenTreeModel { }); } - int get status => getInt("status"); - bool get isInStock => getBool("in_stock", backup: true); String get packaging => getString("packaging"); From a1f057667183a73706bc6d4d682af0642cd3ddff Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 22 Jan 2026 23:35:16 +1100 Subject: [PATCH 16/17] Run dart-format on commit (#760) --- .pre-commit-config.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..5dd1dc0 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,8 @@ +repos: + - repo: local + hooks: + - id: dart-format + name: Dart Format + entry: dart format + language: system + types: [dart] \ No newline at end of file From ae457e82355d939f9388c2c4fbdf9a6f05c6e60e Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 22 Jan 2026 23:35:22 +1100 Subject: [PATCH 17/17] Tweak parameter display size (#759) - Increase size of displayed parameter value --- lib/widget/parameter_widget.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widget/parameter_widget.dart b/lib/widget/parameter_widget.dart index 07a38fc..8bcc360 100644 --- a/lib/widget/parameter_widget.dart +++ b/lib/widget/parameter_widget.dart @@ -142,7 +142,7 @@ class _PaginatedParameterState } }, ) - : Text(parameter.value), + : LargeText(parameter.value), onTap: parameter.is_checkbox ? null : () async {