Compare commits

...

40 commits

Author SHA1 Message Date
HendrikRauh
96627adf7b Update .gitignore and add flake.nix patching script for Flutter version management
Some checks failed
Android / build (push) Has been cancelled
CI / test (push) Has been cancelled
iOS / build (push) Has been cancelled
2026-01-10 14:16:05 +01:00
HendrikRauh
0546fba37f Update NOTE.md to add troubleshooting section for Flutter Java version issues
Some checks are pending
Android / build (push) Waiting to run
CI / test (push) Waiting to run
iOS / build (push) Waiting to run
2026-01-10 00:37:58 +01:00
HendrikRauh
5f623c0594 Add .envrc for Nix environment setup 2026-01-09 23:13:28 +01:00
Oliver
bf19ace3e9
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)
2026-01-07 10:38:10 +11:00
Oliver
8c15bdafdf
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)
2025-12-19 09:52:38 +11:00
Oliver
571ff1880f
New translations app_en.arb (Chinese Simplified) (#739) 2025-12-06 11:24:17 +11:00
Oliver
864c3eea76
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
2025-12-04 18:34:05 +11:00
Oliver
346b1a150f
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
2025-11-28 23:53:10 +11:00
Oliver
bb10117f01
New Crowdin updates (#736)
* New translations app_en.arb (Czech)

* New translations app_en.arb (Russian)
2025-11-28 20:01:55 +11:00
Oliver
0f31638bdc
[CI] Build Fixes (#734)
* precache for ios build

* build android on push too

* try without cache
2025-11-24 09:10:59 +11:00
Oliver
7283c07b76
Form success fix (#733)
* Fix order of operations on form success

- Pop widget before running callback

* Update release notes
2025-11-23 09:18:49 +11:00
Oliver
6e02d1da97
New Crowdin updates (#731)
* New translations app_en.arb (Romanian)

* 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 (Danish)

* New translations app_en.arb (German)

* 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 (Japanese)

* New translations app_en.arb (Korean)

* New translations app_en.arb (Lithuanian)

* New translations app_en.arb (Dutch)

* New translations app_en.arb (Norwegian)

* New translations app_en.arb (Polish)

* 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 (Turkish)

* New translations app_en.arb (Chinese Simplified)

* 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 (Indonesian)

* New translations app_en.arb (Persian)

* 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))

* New translations app_en.arb (Ukrainian)

* New translations app_en.arb (Romanian)
2025-11-23 09:08:14 +11:00
Alexander Leisentritt
3ee2192c92
Update barcode scan pause instruction text (#728) 2025-11-22 07:27:26 +11:00
Oliver
01ac0fc59e
New Crowdin updates (#727)
* New translations app_en.arb (German)

* New translations app_en.arb (Vietnamese)

* New translations app_en.arb (Greek)
2025-11-22 07:26:55 +11:00
Oliver
13d95dd1b1
Modern Label printing (#724)
* Basic widget

* Redirect label printing action

* Refactor label printing code

* Construct form elements

* Refactor to allow re-use of forms

* Basic rendering of label printing form

* Remove dead code

* Pass custom handler through to form context

* Refactoring API forms:

- Allow custom pk field name
- Add callback when values change

* linting

* Dynamically rebuild form

* Handle nested fields

* Handle label printing status

* Run dart format

* Update release notes

* Remove unused var

* Enable close icon

* Handle initial plugin default value

* Store default values:

- Selected template (per label type)
- Selected printing plugin

* Dart format

* Fix dart linting

* use setter

* Just use a public field
2025-11-22 07:26:37 +11:00
Oliver
e41842a31d
Barcode tweaks (#726)
* Barcode tweaks

- Disable autozoom
- Update release notes
- Update contributor credits

* format
2025-11-20 07:51:19 +11:00
Oliver
d039f3cfcf
New Crowdin updates (#722)
* New translations app_en.arb (German)

* New translations app_en.arb (German)

* New translations app_en.arb (Romanian)

* New translations app_en.arb (Italian)

* New translations app_en.arb (Swedish)
2025-11-20 06:48:19 +11:00
Alexander Leisentritt
a75245b183
Add zoom slider to barcode scanning (#725) 2025-11-20 06:44:02 +11:00
Oliver
8a4750d298
New Crowdin updates (#719)
* New translations app_en.arb (Romanian)

* 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 (Danish)

* New translations app_en.arb (German)

* 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 (Japanese)

* New translations app_en.arb (Korean)

* New translations app_en.arb (Lithuanian)

* New translations app_en.arb (Dutch)

* New translations app_en.arb (Norwegian)

* New translations app_en.arb (Polish)

* 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 (Turkish)

* New translations app_en.arb (Chinese Simplified)

* 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 (Indonesian)

* New translations app_en.arb (Persian)

* 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))
2025-11-15 08:03:12 +11:00
Oliver
6707f89019
Display supplier part stock (#717)
* Display supplier part stock

* dart format

* Update release notes
2025-11-13 23:54:03 +11:00
Oliver
ed7d73b9c0
Default location (#715)
* Fix async loading of parent part

- Don't block render while fetching data

* Display default location on part detail page

* Use pathstring instead of name

* Update release notes

* Display in stock detail too

* dart format
2025-11-13 23:37:05 +11:00
Oliver
0eedf25d11
New Crowdin updates (#709)
* New translations app_en.arb (Ukrainian)

* New translations app_en.arb (Swedish)

* New translations app_en.arb (Swedish)

* New translations app_en.arb (Romanian)

* New translations app_en.arb (Romanian)

* New translations app_en.arb (Romanian)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (German)
2025-11-13 23:16:07 +11:00
Oliver
daf3bf8291
Update python version for CI (#714) 2025-11-13 23:01:24 +11:00
Oliver
ae1d8dd188
File upload fix (#712)
* Allow file upload with non-strict https

- Create custom client for uploads
- Observe the USE_STRICT_HTTPS setting

* Formatting

* Update release notes

* Fix await code
2025-11-04 12:32:38 +11:00
Oliver
2252dd2fd6
Thumbnail errors (#708)
* Extract error info from thumbnail errors

* Formatting
2025-11-03 22:10:00 +11:00
Oliver
490d008447
Fix URL for reporting an issue via GitHub (#706)
* Fix URL for reporting an issue via GitHub

* Format
2025-11-03 21:39:48 +11:00
Oliver
0fc80b1be3
Tweaks (#707)
* Remove debug msg

* Only request test templates for testable parts

* Format
2025-11-03 21:39:39 +11:00
Oliver
9083f19531
New Crowdin updates (#703)
* New translations app_en.arb (Chinese Simplified)

* New translations app_en.arb (Swedish)

* New translations app_en.arb (Swedish)
2025-11-03 20:33:54 +11:00
Oliver
2f8f42822a
Possible fix for barcode scanner issues (#702)
* Possible fix for barcode scanner issues

Ref: https://github.com/juliansteenbakker/mobile_scanner/issues/1454#issuecomment-3329405748

* Bump release notes

* Bump app revision
2025-10-31 15:26:18 +11:00
Oliver
2b68c30568
New translations app_en.arb (Portuguese) (#701) 2025-10-29 15:03:59 +11:00
Oliver
4a094f4a77
New Crowdin updates (#699)
* New translations app_en.arb (Russian)

* New translations app_en.arb (Ukrainian)

* New translations app_en.arb (Indonesian)

* New translations app_en.arb (Vietnamese)

* New translations app_en.arb (Romanian)

* 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 (Danish)

* New translations app_en.arb (German)

* 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 (Japanese)

* New translations app_en.arb (Korean)

* New translations app_en.arb (Lithuanian)

* New translations app_en.arb (Dutch)

* New translations app_en.arb (Norwegian)

* New translations app_en.arb (Polish)

* New translations app_en.arb (Portuguese)

* New translations app_en.arb (Slovak)

* New translations app_en.arb (Slovenian)

* New translations app_en.arb (Swedish)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (Chinese Simplified)

* New translations app_en.arb (Chinese Traditional)

* New translations app_en.arb (Portuguese, Brazilian)

* New translations app_en.arb (Persian)

* 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))
2025-10-26 18:41:29 +11:00
Oliver
a078a9d126
Update release notes (#698) 2025-10-24 13:48:10 +11:00
Oliver
624655ec6b
SalesOrderShipment (#697)
* Add detail widget for SalesOrderShipment

* Support editing of shipment details

* Rearrange SalesOrderDetail page

* Add support for attachments against shipment model

* refactoring

* Add shipment details page

* Add user actions for shipments:

- Check / uncheck
- Take photo

* Placeholder action to send shipment

* Send shipment from app

* Display pending shipments on the home screen

* Improve rending for shipments list

* Add class definition for SalesOrderAllocation

* Display list of items allocated against SalesOrderShipment

* Bump release notse

* Click through to stock item

* Bump version number

* dart format

* cleanup

* Remove unused imports
2025-10-24 13:36:10 +11:00
Oliver
6b67cc9e50
New Crowdin updates (#696)
* New translations app_en.arb (Russian)

* New translations app_en.arb (Ukrainian)

* New translations app_en.arb (Indonesian)

* New translations app_en.arb (Vietnamese)
2025-10-21 16:28:53 +11:00
Oliver
790abb4c7d
New Crowdin updates (#695)
* New translations app_en.arb (Hungarian)

* New translations app_en.arb (Czech)

* New translations app_en.arb (Swedish)

* New translations app_en.arb (Polish)

* New translations app_en.arb (Russian)

* New translations app_en.arb (Portuguese, Brazilian)
2025-10-11 12:07:58 +11:00
Oliver
1407d8bc37
Use fvm for building workflows (#694) 2025-09-28 16:47:39 +10:00
Oliver
bdc5573311
Re-order barcode scanning priority (#693)
* Re-order barcode scanning priority

- Closes https://github.com/inventree/inventree-app/issues/692

* dart format

* Try with removed line

* Try without pythonscript

* just pub get

* try with fvm

* Remove fvm

* set working dir

* try just pub get

* Install python first

* Updates

* Use fvm

* Adjust CI
2025-09-28 13:34:22 +10:00
Oliver
d237a0e076
New Crowdin updates (#690)
* New translations app_en.arb (Turkish)

* New translations app_en.arb (Hindi)

* New translations app_en.arb (German)

* New translations app_en.arb (Chinese Simplified)
2025-09-04 11:33:00 +10:00
Oliver
449f4a4ce5
New Crowdin updates (#689)
* New translations app_en.arb (Italian)

* New translations app_en.arb (Chinese Simplified)
2025-08-30 21:56:57 +10:00
Oliver
3739c88e93
New Crowdin updates (#688)
* New translations app_en.arb (Polish)

* New translations app_en.arb (German)

* New translations app_en.arb (Hungarian)

* New translations app_en.arb (Italian)

* New translations app_en.arb (Czech)

* New translations app_en.arb (Portuguese, Brazilian)

* New translations app_en.arb (Ukrainian)

* New translations app_en.arb (Swedish)

* New translations app_en.arb (Thai)

* New translations app_en.arb (Estonian)

* New translations app_en.arb (Romanian)

* 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 (Danish)

* New translations app_en.arb (Greek)

* New translations app_en.arb (Finnish)

* New translations app_en.arb (Hebrew)

* New translations app_en.arb (Japanese)

* New translations app_en.arb (Korean)

* New translations app_en.arb (Lithuanian)

* New translations app_en.arb (Dutch)

* 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 (Turkish)

* New translations app_en.arb (Chinese Simplified)

* New translations app_en.arb (Chinese Traditional)

* New translations app_en.arb (Vietnamese)

* New translations app_en.arb (Indonesian)

* New translations app_en.arb (Persian)

* New translations app_en.arb (Spanish, Mexico)

* New translations app_en.arb (Latvian)

* New translations app_en.arb (Hindi)

* New translations app_en.arb (Serbian (Latin))

* New translations app_en.arb (Portuguese)

* New translations app_en.arb (Portuguese, Brazilian)

* New translations app_en.arb (Dutch)

* New translations app_en.arb (Spanish)

* New translations app_en.arb (French)

* New translations app_en.arb (Chinese Simplified)
2025-08-26 18:12:09 +10:00
86 changed files with 6777 additions and 3136 deletions

14
.envrc Normal file
View file

@ -0,0 +1,14 @@
# Check if nix is available
if command -v nix &> /dev/null; then
use flake
echo "✅ Nix development environment loaded"
else
# Nix is not available - show instructions for non-Nix users
echo "⚠️ Nix not detected. Please ensure the following are installed manually:"
echo " - Java JDK 17"
echo " - Python 3 with invoke package"
echo " - Android SDK"
echo " - FVM (Flutter Version Management)"
echo "💡 To use Nix: Install from https://nixos.org/download.html"
fi

View file

@ -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:"
@ -50,5 +53,7 @@ jobs:
- name: Build for Android
run: |
flutter pub get
flutter build apk --debug
dart pub global activate fvm
fvm install
fvm flutter pub get
fvm flutter build apk --debug

View file

@ -30,6 +30,11 @@ jobs:
with:
submodules: recursive
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Setup Java
uses: actions/setup-java@v3
with:
@ -53,20 +58,18 @@ jobs:
- name: Collect Translation Files
run: |
cd lib/l10n
python3 collect_translations.py
python collect_translations.py
- name: Static Analysis Tests
working-directory: .
run: |
python3 find_dart_files.py
flutter pub get
flutter analyze
python ./find_dart_files.py
dart pub global activate fvm
fvm install
fvm flutter pub get
fvm flutter analyze
dart format --output=none --set-exit-if-changed .
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Start InvenTree Server
run: |
sudo apt-get install python3-dev python3-pip python3-venv python3-wheel g++
@ -82,7 +85,7 @@ jobs:
- name: Unit Tests
run: |
flutter test --coverage
fvm flutter test --coverage
- name: Coveralls
uses: coverallsapp/github-action@master

View file

@ -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:"
@ -46,9 +49,12 @@ jobs:
- name: Build for iOS
run: |
flutter pub get
dart pub global activate fvm
fvm install
fvm flutter pub get
fvm flutter precache --ios
cd ios
pod repo update
pod install
cd ..
flutter build ios --release --no-codesign --no-tree-shake-icons
fvm flutter build ios --release --no-codesign --no-tree-shake-icons

2
.gitignore vendored
View file

@ -8,6 +8,8 @@
.buildlog/
.history
.svn/
.direnv
flake.nix.bak
coverage/*

47
NOTE.md Normal file
View file

@ -0,0 +1,47 @@
## Codeänderung
- android/app/build.gradle: compileSdkVersion/targetSdkVersion auf 36 angehoben,
weil mehrere Plugins SDK 36 voraussetzen.
## Devbuild (out of the box)
```sh
invoke translate
flutter build apk --debug
```
## Releasebuild (benötigt Signatur; interaktiv)
Signatur erstellen; Passwörter merken!:
```sh
keytool -genkey -v -keystore ~/inventree-release-key.jks \
-keyalg RSA -keysize 2048 \
-alias inventree
```
android/key.properties anlegen mit:
```properties
storePassword=DEIN_STORE_PASSWORD
keyPassword=DEIN_KEY_PASSWORD
keyAlias=inventree
storeFile=/.../inventree-release-key.jks
```
```sh
invoke translate
fvm flutter build apk --release --no-tree-shake-icons
```
## Pipe
1. nix installieren (für flake nutzung) (optional aber dann reproduzierbar)
2. flake anwenden
## Problems that occurred
### Flutter Java Version Problem
- unset flutter jdk-dir (`flutter config --jdk-dir=""`)
- a specified java version in the flutter config leads to a java

View file

@ -10,6 +10,7 @@ Thanks to the following contributors, for their work building this app!
- [Bobbe](https://github.com/30350n)
- [awnz](https://github.com/awnz)
- [joaomnuno](https://github.com/joaomnuno)
- [Alex9779](https://github.com/Alex9779)
--------
## Assets

View file

@ -1,3 +1,46 @@
### x.xx.x - Month Year
---
- Fixes bug which launched camera twice when uploading an attachment
### 0.21.1 - November 2025
---
- Fixed app freeze bug after form submission
### 0.21.0 - November 2025
---
- Support label printing again, fixing issues with new printing API
- Adds zoom controller for barcode scanner camera view
- Display default stock location in Part detail page
- Display stock information in SupplierPart detail page
### 0.20.2 - November 2025
---
- Fixes URL for reporting issues on GitHub
- Fix for uploading files against server with self-signed certificates
### 0.20.1 - October 2025
---
- Bug fix for camera barcode scanner
### 0.20.0 - October 2025
---
- View pending shipments from the home screen
- Display detail view for shipments
- Adds ability to ship pending outgoing shipments
- Adds ability to mark outgoing shipments as "checked" or "unchecked"
- Updated translations
### 0.19.3 - September 2025
---
- Fixes incorrect priority of barcode scanner results
### 0.19.2 - August 2025
---

View file

@ -13,6 +13,8 @@ from pathlib import Path
if __name__ == "__main__":
dart_files = Path("lib").rglob("*.dart")
print("Discovering dart files...");
with open("test/coverage_helper_test.dart", "w") as f:
f.write("// ignore_for_file: unused_import\n\n")
f.write("// dart format off\n\n")

78
flake.lock generated Normal file
View file

@ -0,0 +1,78 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-dhhvQY67aboBk8b0/u0XB6vwHdgbROZT3fJAjyNh5Ww=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-flutter": {
"locked": {
"lastModified": 1751285371,
"narHash": "sha256-/hDU+2AUeFFu5qGHO/UyFMc4UG/x5Cw5uXO36KGTk6c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"nixpkgs-flutter": "nixpkgs-flutter"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

137
flake.nix Normal file
View file

@ -0,0 +1,137 @@
{
description = "InvenTree App Development Environment - CTBK";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
nixpkgs-flutter.url = "github:NixOS/nixpkgs/b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b";
};
outputs =
{
self,
nixpkgs,
flake-utils,
nixpkgs-flutter,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = import nixpkgs {
inherit system;
config = {
allowUnfree = true;
android_sdk.accept_license = true;
};
overlays = [
(final: prev: {
flutter-pkg = import (self.inputs.nixpkgs-flutter) { inherit system; };
})
];
};
androidSdk =
(pkgs.androidenv.composeAndroidPackages {
platformVersions = [
"36"
"35"
"34"
];
buildToolsVersions = [
"36.0.0"
"34.0.0"
];
includeEmulator = true;
includeNDK = true;
ndkVersions = [ "26.1.10909125" ];
cmakeVersions = [
"3.31.6"
"3.22.1"
];
}).androidsdk;
# FVM wrapper for NixOS - maps fvm commands to Nix-managed Flutter
fvm-wrapper = pkgs.writeShellScriptBin "fvm" ''
case "$1" in
use)
# 'fvm use' is a no-op on NixOS since Flutter is version-managed by Nix
echo " Using Flutter from Nix ($(flutter --version | head -n1))"
exit 0
;;
flutter)
# 'fvm flutter ...' becomes 'flutter ...'
shift
exec flutter "$@"
;;
*)
echo "fvm wrapper: command '$1' not implemented (using Nix-managed Flutter)" >&2
exit 1
;;
esac
'';
in
{
devShells.default = pkgs.mkShell {
buildInputs =
with pkgs;
[
# Mobile development
pkgs.flutter-pkg.flutter
fvm-wrapper
jdk17
# Build tools
android-tools
gradle
# Python & task runner
python3
python3Packages.invoke
jq
# System dependencies for Flutter on Linux
git
curl
unzip
which
]
++ lib.optionals stdenv.isLinux [
gtk3
glib
pcre
libepoxy
libxkbcommon
dbus
at-spi2-core
file
];
shellHook = ''
export ANDROID_HOME="${androidSdk}/libexec/android-sdk"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools/bin:$PATH"
export JAVA_HOME="${pkgs.jdk17}"
export GRADLE_OPTS="-Dorg.gradle.project.android.aapt2FromMavenOverride=$ANDROID_HOME/build-tools/34.0.0/aapt2"
echo "🚀 InvenTree App Development Environment - CTBK"
echo "📦 Tools: Flutter, FVM, JDK17, Android SDK"
echo "📋 Run: invoke android # Build Android app"
'';
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (
with pkgs;
[
gtk3
glib
pcre
libepoxy
libxkbcommon
dbus
at-spi2-core
]
);
};
}
);
}

View file

@ -4,8 +4,10 @@ import "dart:io";
import "package:flutter/foundation.dart";
import "package:http/http.dart" as http;
import "package:http/io_client.dart";
import "package:intl/intl.dart";
import "package:inventree/main.dart";
import "package:inventree/widget/progress.dart";
import "package:one_context/one_context.dart";
import "package:open_filex/open_filex.dart";
import "package:cached_network_image/cached_network_image.dart";
@ -279,6 +281,8 @@ class InvenTreeAPI {
String get username => (userInfo["username"] ?? "") as String;
int get userId => (userInfo["pk"] ?? -1) as int;
// Map of server information
Map<String, dynamic> serverInfo = {};
@ -349,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<InvenTreePlugin> _plugins = [];
@ -909,6 +917,8 @@ class InvenTreeAPI {
var client = createClient(url, strictHttps: strictHttps);
showLoadingOverlay();
// Attempt to open a connection to the server
try {
_request = await client
@ -950,6 +960,7 @@ class InvenTreeAPI {
await localFile.writeAsBytes(bytes);
if (openOnDownload) {
hideLoadingOverlay();
OpenFilex.open(local_path);
}
} else {
@ -969,6 +980,8 @@ class InvenTreeAPI {
stackTrace,
);
}
hideLoadingOverlay();
}
/*
@ -981,12 +994,23 @@ class InvenTreeAPI {
String method = "POST",
Map<String, dynamic>? fields,
}) async {
var _url = makeApiUrl(url);
bool strictHttps = await InvenTreeSettingsManager().getBool(
INV_STRICT_HTTPS,
false,
);
var request = http.MultipartRequest(method, Uri.parse(_url));
// Create an IOClient wrapper for sending the MultipartRequest
final ioClient = IOClient(createClient(url, strictHttps: strictHttps));
request.headers.addAll(defaultHeaders());
final uri = Uri.parse(makeApiUrl(url));
final request = http.MultipartRequest(method, uri);
// Default headers
defaultHeaders().forEach((key, value) {
request.headers[key] = value;
});
// Optional fields
if (fields != null) {
fields.forEach((String key, dynamic value) {
if (value == null) {
@ -997,20 +1021,24 @@ class InvenTreeAPI {
});
}
// Add file to upload
var _file = await http.MultipartFile.fromPath(name, f.path);
request.files.add(_file);
// Construct a response object to return
APIResponse response = APIResponse(url: url, method: method);
String jsondata = "";
try {
var httpResponse = await request.send().timeout(Duration(seconds: 120));
var streamedResponse = await ioClient
.send(request)
.timeout(Duration(seconds: 120));
final httpResponse = await http.Response.fromStream(streamedResponse);
response.statusCode = httpResponse.statusCode;
jsondata = await httpResponse.stream.bytesToString();
jsondata = httpResponse.body;
response.data = json.decode(jsondata);
@ -1067,8 +1095,15 @@ class InvenTreeAPI {
* We send this with the currently selected "locale",
* so that (hopefully) the field messages are correctly translated
*/
Future<APIResponse> options(String url) async {
HttpClientRequest? request = await apiRequest(url, "OPTIONS");
Future<APIResponse> options(
String url, {
Map<String, String> params = const {},
}) async {
HttpClientRequest? request = await apiRequest(
url,
"OPTIONS",
urlParams: params,
);
if (request == null) {
// Return an "invalid" APIResponse
@ -1543,8 +1578,15 @@ class InvenTreeAPI {
return CachedNetworkImage(
imageUrl: url,
placeholder: (context, url) => CircularProgressIndicator(),
errorWidget: (context, url, error) =>
Icon(TablerIcons.circle_x, color: COLOR_DANGER),
errorWidget: (context, url, error) {
print("CachedNetworkimage error: ${error.toString()}");
return GestureDetector(
child: Icon(TablerIcons.circle_x, color: COLOR_DANGER),
onTap: () => {
showSnackIcon(error.toString().split(",")[0], success: false),
},
);
},
httpHeaders: defaultHeaders(),
height: height,
width: width,

View file

@ -26,23 +26,52 @@ import "package:inventree/widget/fields.dart";
import "package:inventree/widget/progress.dart";
import "package:inventree/widget/snacks.dart";
/*
* Extract field options from a returned OPTIONS request
*/
Map<String, dynamic> extractFields(APIResponse response) {
if (!response.isValid()) {
return {};
}
var data = response.asMap();
if (!data.containsKey("actions")) {
return {};
}
var actions = response.data["actions"] as Map<String, dynamic>;
dynamic result = actions["POST"] ?? actions["PUT"] ?? actions["PATCH"] ?? {};
return result as Map<String, dynamic>;
}
/*
* Class that represents a single "form field",
* defined by the InvenTree API
*/
class APIFormField {
// Constructor
APIFormField(this.name, this.data);
APIFormField(this.name, this.data, {this.formHandler});
// File to be uploaded for this filed
File? attachedfile;
APIFormWidgetState? formHandler;
// Name of this field
final String name;
// JSON data which defines the field
final Map<String, dynamic> data;
// Function to update the value of this field
void setFieldValue(dynamic val) {
data["value"] = val;
formHandler?.onValueChanged(name, value);
}
// JSON field definition provided by the server
Map<String, dynamic> definition = {};
@ -88,6 +117,8 @@ class APIFormField {
}
}
String get pk_field => (getParameter("pk_field") ?? "pk") as String;
// Get the "api_url" associated with a related field
String get api_url => (getParameter("api_url") ?? "") as String;
@ -244,18 +275,13 @@ class APIFormField {
return;
}
int? pk = int.tryParse(value.toString());
if (pk == null) {
return;
}
String url = api_url + "/" + pk.toString() + "/";
String url = api_url + "/" + value.toString() + "/";
final APIResponse response = await InvenTreeAPI().get(url, params: filters);
if (response.successful()) {
initial_data = response.data;
formHandler?.onValueChanged(name, value);
}
}
@ -269,6 +295,7 @@ class APIFormField {
return _constructBoolean();
case "related field":
return _constructRelatedField();
case "integer":
case "float":
case "decimal":
return _constructFloatField();
@ -318,8 +345,7 @@ class APIFormField {
onPressed: () async {
var handler = UniqueBarcodeHandler((String hash) {
controller.text = hash;
data["value"] = hash;
setFieldValue(hash);
barcodeSuccess(L10().barcodeAssigned);
});
@ -347,9 +373,9 @@ class APIFormField {
onChanged: (DateTime? time) {
// Save the time string
if (time == null) {
data["value"] = null;
setFieldValue(null);
} else {
data["value"] = time.toString().split(" ").first;
setFieldValue(time.toString().split(" ").first);
}
},
onShowPicker: (context, value) async {
@ -432,9 +458,9 @@ class APIFormField {
},
onSaved: (item) {
if (item == null) {
data["value"] = null;
setFieldValue(null);
} else {
data["value"] = item["value"];
setFieldValue(item["value"]);
}
},
);
@ -481,7 +507,7 @@ class APIFormField {
return null;
},
onSaved: (val) {
data["value"] = val;
setFieldValue(val);
},
);
}
@ -527,7 +553,20 @@ class APIFormField {
hintText: helpText,
),
),
onChanged: null,
onChanged: (item) {
if (item != null) {
setFieldValue(item[pk_field]);
} else {
setFieldValue(null);
}
},
onSaved: (item) {
if (item != null) {
setFieldValue(item[pk_field]);
} else {
setFieldValue(null);
}
},
itemAsString: (dynamic item) {
Map<String, dynamic> data = item as Map<String, dynamic>;
@ -551,13 +590,6 @@ class APIFormField {
dropdownBuilder: (context, item) {
return _renderRelatedField(name, item, true, false);
},
onSaved: (item) {
if (item != null) {
data["value"] = item["pk"];
} else {
data["value"] = null;
}
},
compareFn: (dynamic item, dynamic selectedItem) {
// Comparison is based on the PK value
@ -568,7 +600,8 @@ class APIFormField {
bool result = false;
try {
result = item["pk"].toString() == selectedItem["pk"].toString();
result =
item[pk_field].toString() == selectedItem[pk_field].toString();
} catch (error) {
// Catch any conversion errors
result = false;
@ -586,6 +619,8 @@ class APIFormField {
return InvenTreeSupplierPart().defaultListFilters();
case InvenTreeStockItem.MODEL_TYPE:
return InvenTreeStockItem().defaultListFilters();
case InvenTreeSalesOrder.MODEL_TYPE:
return InvenTreeSalesOrder().defaultListFilters();
default:
break;
}
@ -727,7 +762,7 @@ class APIFormField {
return ListTile(
title: Text(shipment.reference),
subtitle: Text(shipment.tracking_number),
trailing: shipment.shipped ? Text(shipment.shipment_date!) : null,
trailing: shipment.isShipped ? Text(shipment.shipment_date!) : null,
);
case "owner":
String name = (data["name"] ?? "") as String;
@ -754,6 +789,27 @@ class APIFormField {
subtitle: Text(project_code.description),
leading: Icon(TablerIcons.list),
);
case InvenTreeSalesOrder.MODEL_TYPE:
var so = InvenTreeSalesOrder.fromJson(data);
return ListTile(
title: Text(so.reference),
subtitle: Text(so.description),
leading: InvenTreeAPI().getThumbnail(
so.customer?.thumbnail ?? so.customer?.image ?? "",
),
);
case "labeltemplate":
return ListTile(
title: Text((data["name"] ?? "").toString()),
subtitle: Text((data["description"] ?? "").toString()),
);
case "pluginconfig":
return ListTile(
title: Text(
(data["meta"]?["human_name"] ?? data["name"] ?? "").toString(),
),
subtitle: Text((data["meta"]?["description"] ?? "").toString()),
);
default:
return ListTile(
title: Text(
@ -799,8 +855,11 @@ class APIFormField {
maxLines: multiline ? null : 1,
expands: false,
initialValue: (value ?? "") as String,
onChanged: (val) {
setFieldValue(val);
},
onSaved: (val) {
data["value"] = val;
setFieldValue(val);
},
validator: (value) {
if (required && (value == null || value.isEmpty)) {
@ -831,7 +890,7 @@ class APIFormField {
initial: initial_value,
tristate: (getParameter("tristate") ?? false) as bool,
onSaved: (val) {
data["value"] = val;
setFieldValue(val);
},
);
}
@ -854,27 +913,6 @@ class APIFormField {
}
}
/*
* Extract field options from a returned OPTIONS request
*/
Map<String, dynamic> extractFields(APIResponse response) {
if (!response.isValid()) {
return {};
}
var data = response.asMap();
if (!data.containsKey("actions")) {
return {};
}
var actions = response.data["actions"] as Map<String, dynamic>;
dynamic result = actions["POST"] ?? actions["PUT"] ?? actions["PATCH"] ?? {};
return result as Map<String, dynamic>;
}
/*
* Extract a field definition (map) from the provided JSON data.
*
@ -970,6 +1008,7 @@ Future<void> launchApiForm(
Function(Map<String, dynamic>)? onSuccess,
bool Function(Map<String, dynamic>)? validate,
Function? onCancel,
APIFormWidgetState? formHandler,
IconData icon = TablerIcons.device_floppy,
}) async {
showLoadingOverlay();
@ -1030,7 +1069,7 @@ Future<void> launchApiForm(
field.data["instance_value"] = model_value;
if (field.data["value"] == null) {
field.data["value"] = model_value;
field.setFieldValue(model_value);
}
}
formFields.add(field);
@ -1055,6 +1094,7 @@ Future<void> launchApiForm(
onSuccess: onSuccess,
validate: validate,
fileField: fileField,
state: formHandler,
icon: icon,
),
),
@ -1068,6 +1108,7 @@ class APIFormWidget extends StatefulWidget {
this.fields,
this.method, {
Key? key,
this.state,
this.onSuccess,
this.validate,
this.fileField = "",
@ -1094,12 +1135,15 @@ class APIFormWidget extends StatefulWidget {
final bool Function(Map<String, dynamic>)? validate;
final APIFormWidgetState? state;
// Default form handler is constructed if none is provided
@override
_APIFormWidgetState createState() => _APIFormWidgetState();
APIFormWidgetState createState() => state ?? APIFormWidgetState();
}
class _APIFormWidgetState extends State<APIFormWidget> {
_APIFormWidgetState() : super();
class APIFormWidgetState extends State<APIFormWidget> {
APIFormWidgetState() : super();
final _formKey = GlobalKey<FormState>();
@ -1107,6 +1151,33 @@ class _APIFormWidgetState extends State<APIFormWidget> {
bool spacerRequired = false;
// Return a list of all fields used for this form
// The default implementation just returns the fields provided to the widget
// However, custom form implementations may override this function
List<APIFormField> get formFields {
final List<APIFormField> fields = widget.fields;
// Ensure each field has access to this form handler
for (var field in fields) {
field.formHandler ??= this;
}
return fields;
}
// Callback for when a field value is changed
// Default implementation does nothing,
// but custom form implementations may override this function
void onValueChanged(String field, dynamic value) {}
Future<void> handleSuccess(
Map<String, dynamic> submittedData,
Map<String, dynamic> responseData,
) async {
Navigator.pop(context);
widget.onSuccess?.call(responseData);
}
List<Widget> _buildForm() {
List<Widget> widgets = [];
@ -1124,7 +1195,7 @@ class _APIFormWidgetState extends State<APIFormWidget> {
widgets.add(Divider(height: 5));
}
for (var field in widget.fields) {
for (var field in formFields) {
if (field.hidden) {
continue;
}
@ -1179,7 +1250,7 @@ class _APIFormWidgetState extends State<APIFormWidget> {
// Pop the "file" field
data.remove(widget.fileField);
for (var field in widget.fields) {
for (var field in formFields) {
if (field.name == widget.fileField) {
File? file = field.attachedfile;
@ -1264,7 +1335,7 @@ class _APIFormWidgetState extends State<APIFormWidget> {
match = true;
continue;
default:
for (var field in widget.fields) {
for (var field in formFields) {
// Hidden fields can't display errors, so we won't match
if (field.hidden) {
continue;
@ -1316,7 +1387,7 @@ class _APIFormWidgetState extends State<APIFormWidget> {
// Iterate through and find "simple" top-level fields
for (var field in widget.fields) {
for (var field in formFields) {
if (field.readOnly) {
continue;
}
@ -1355,20 +1426,11 @@ class _APIFormWidgetState extends State<APIFormWidget> {
return;
}
// Run custom onSuccess function
var successFunc = widget.onSuccess;
// An "empty" URL means we don't want to submit the form anywhere
// Perhaps we just want to process the data?
if (widget.url.isEmpty) {
// Hide the form
Navigator.pop(context);
if (successFunc != null) {
// Return the raw "submitted" data, rather than the server response
successFunc(data);
}
handleSuccess(data, {});
return;
}
@ -1383,29 +1445,24 @@ class _APIFormWidgetState extends State<APIFormWidget> {
case 200:
case 201:
// Form was successfully validated by the server
// Hide this form
Navigator.pop(context);
if (successFunc != null) {
// Ensure the response is a valid JSON structure
Map<String, dynamic> json = {};
var data = response.asMap();
var responseData = response.asMap();
for (String key in data.keys) {
json[key.toString()] = data[key];
for (String key in responseData.keys) {
json[key.toString()] = responseData[key];
}
successFunc(json);
}
handleSuccess(data, json);
return;
case 400:
// Form submission / validation error
showSnackIcon(L10().formError, success: false);
// Update field errors
for (var field in widget.fields) {
for (var field in formFields) {
field.extractErrorMessages(response);
}
@ -1433,6 +1490,22 @@ class _APIFormWidgetState extends State<APIFormWidget> {
});
}
// Construct the internal form widget, based on the provided fields
Widget buildForm(BuildContext context) {
return Form(
key: _formKey,
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: _buildForm(),
),
padding: EdgeInsets.all(16),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
@ -1452,18 +1525,7 @@ class _APIFormWidgetState extends State<APIFormWidget> {
),
],
),
body: Form(
key: _formKey,
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: _buildForm(),
),
padding: EdgeInsets.all(16),
),
),
body: buildForm(context),
);
}
}

View file

@ -250,12 +250,12 @@ class BarcodeScanHandler extends BarcodeHandler {
// The following model types can be matched with barcodes
List<String> validModels = [
InvenTreePart.MODEL_TYPE,
InvenTreeCompany.MODEL_TYPE,
InvenTreeStockItem.MODEL_TYPE,
InvenTreeStockLocation.MODEL_TYPE,
InvenTreeSupplierPart.MODEL_TYPE,
InvenTreeManufacturerPart.MODEL_TYPE,
InvenTreePart.MODEL_TYPE,
InvenTreeStockLocation.MODEL_TYPE,
InvenTreeCompany.MODEL_TYPE,
];
if (InvenTreeAPI().supportsOrderBarcodes) {

View file

@ -41,8 +41,10 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState {
String scanned_code = "";
double zoomFactor = 0.0;
final MobileScannerController controller = MobileScannerController(
autoZoom: true,
autoZoom: false, // Disable autoZoom as we implement a manual slider
);
@override
@ -55,6 +57,7 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState {
@override
void dispose() {
super.dispose();
controller.dispose();
WakelockPlus.disable();
}
@ -310,6 +313,60 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState {
return SpeedDial(icon: Icons.more_horiz, children: actions);
}
Widget zoomSlider() {
return Positioned(
left: 0,
right: 0,
bottom: 16,
child: Center(
child: Container(
width: 225,
height: 56,
decoration: BoxDecoration(
color: Colors.black.withValues(alpha: 0.3),
borderRadius: BorderRadius.circular(28),
),
padding: EdgeInsets.symmetric(horizontal: 16),
child: Row(
children: [
Icon(TablerIcons.zoom_out, color: Colors.white, size: 20),
Expanded(
child: Slider(
value: zoomFactor,
min: 0.0,
max: 1.0,
activeColor: Colors.white,
inactiveColor: Colors.white.withValues(alpha: 0.3),
onChanged: (value) {
setState(() {
zoomFactor = value;
controller.setZoomScale(value);
});
},
onChangeStart: (value) async {
if (mounted) {
setState(() {
scanning_paused = true;
});
}
},
onChangeEnd: (value) async {
if (mounted) {
setState(() {
scanning_paused = false;
});
}
},
),
),
Icon(TablerIcons.zoom_in, color: Colors.white, size: 20),
],
),
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
@ -332,6 +389,7 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState {
Column(children: [Expanded(child: BarcodeReader(context))]),
topCenterOverlay(),
bottomCenterOverlay(),
zoomSlider(),
],
),
),

View file

@ -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<String, dynamic> json)
: super.fromJson(json);
@override
InvenTreeAttachment createFromJson(Map<String, dynamic> json) =>
InvenTreeAttachment.fromJson(json);
@override
String get URL => "attachment/";
@override
Map<String, Map<String, dynamic>> formFields() {
Map<String, Map<String, dynamic>> 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<String> 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<int> countAttachments(String modelType, int modelId) async {
Map<String, String> filters = {};
if (!api.supportsModernAttachments) {
return 0;
}
filters["model_type"] = modelType;
filters["model_id"] = modelId.toString();
return count(filters: filters);
}
Future<bool> uploadAttachment(
File attachment,
String modelType,
int modelId, {
String comment = "",
Map<String, String> fields = const {},
}) async {
// Ensure that the correct reference field is set
Map<String, String> data = Map<String, String>.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<bool> 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<void> downloadAttachment() async {
await InvenTreeAPI().downloadFile(attachment);
}
}

View file

@ -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<String, dynamic> 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<String, dynamic> json) =>
InvenTreeCompanyAttachment.fromJson(json);
}
/*
* The InvenTreeSupplierPart class represents the SupplierPart model in the InvenTree database
*/
@ -225,6 +200,10 @@ class InvenTreeSupplierPart extends InvenTreeModel {
int get partId => getInt("part");
double get inStock => getDouble("in_stock");
double get onOrder => getDouble("on_order");
String get partImage =>
(jsondata["part_detail"]?["thumbnail"] ?? InvenTreeAPI.staticThumb)
as String;

View file

@ -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 {
@ -601,7 +599,7 @@ class InvenTreeModel {
// POST data to update the model
Future<APIResponse> update({
Map<String, String> values = const {},
Map<String, dynamic> values = const {},
int? expectedStatusCode = 200,
}) async {
var url = path.join(URL, pk.toString());
@ -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<String, dynamic> json)
: super.fromJson(json);
@override
String get URL => "attachment/";
@override
Map<String, Map<String, dynamic>> formFields() {
Map<String, Map<String, dynamic>> 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<String> 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<int> countAttachments(int modelId) {
Map<String, String> 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<bool> uploadAttachment(
File attachment,
int modelId, {
String comment = "",
Map<String, String> fields = const {},
}) async {
// Ensure that the correct reference field is set
Map<String, String> data = Map<String, String>.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<bool> 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<void> downloadAttachment() async {
await InvenTreeAPI().downloadFile(attachment);
}
}

View file

@ -0,0 +1,77 @@
import "package:inventree/inventree/model.dart";
class InvenTreeParameter extends InvenTreeModel {
InvenTreeParameter() : super();
InvenTreeParameter.fromJson(Map<String, dynamic> json) : super.fromJson(json);
@override
InvenTreeParameter createFromJson(Map<String, dynamic> json) =>
InvenTreeParameter.fromJson(json);
@override
String get URL => "parameter/";
@override
Map<String, Map<String, dynamic>> formFields() {
Map<String, Map<String, dynamic>> 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<int> countParameters(String modelType, int modelId) async {
Map<String, String> filters = {};
if (!api.supportsModernParameters) {
return 0;
}
filters["model_type"] = modelType;
filters["model_id"] = modelId.toString();
return count(filters: filters);
}
}

View file

@ -132,68 +132,6 @@ class InvenTreePartTestTemplate extends InvenTreeModel {
}
}
/*
Class representing the PartParameter database model
*/
class InvenTreePartParameter extends InvenTreeModel {
InvenTreePartParameter() : super();
InvenTreePartParameter.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
String get URL => "part/parameter/";
@override
List<String> get rolesRequired => ["part"];
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
InvenTreePartParameter.fromJson(json);
@override
Map<String, Map<String, dynamic>> formFields() {
Map<String, Map<String, dynamic>> 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
*/
@ -278,8 +216,6 @@ class InvenTreePart extends InvenTreeModel {
// Request pricing data for this part
Future<InvenTreePartPricing?> getPricing() async {
print("REQUEST PRICING FOR: ${pk}");
try {
final response = await InvenTreeAPI().get("/api/part/${pk}/pricing/");
if (response.isValid()) {
@ -411,6 +347,8 @@ class InvenTreePart extends InvenTreeModel {
bool get isTrackable => getBool("trackable");
bool get isTestable => getBool("testable");
// Get the IPN (internal part number) for the Part instance
String get IPN => getString("IPN");
@ -547,28 +485,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<String, dynamic> 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<String, dynamic> json) =>
InvenTreePartAttachment.fromJson(json);
}

View file

@ -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<String, dynamic> 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<String, dynamic> json) =>
InvenTreePurchaseOrderAttachment.fromJson(json);
}

View file

@ -5,6 +5,9 @@ import "package:inventree/helpers.dart";
import "package:inventree/inventree/company.dart";
import "package:inventree/inventree/model.dart";
import "package:inventree/inventree/orders.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/inventree/stock.dart";
import "package:inventree/widget/order/so_shipment_detail.dart";
import "package:inventree/widget/progress.dart";
import "package:inventree/widget/order/extra_line_detail.dart";
import "package:inventree/widget/order/sales_order_detail.dart";
@ -269,6 +272,19 @@ class InvenTreeSalesOrderShipment extends InvenTreeModel {
@override
String get URL => "/order/so/shipment/";
String get SHIP_SHIPMENT_URL => "/order/so/shipment/${pk}/ship/";
@override
Future<Object?> goToDetailPage(BuildContext context) async {
return Navigator.push(
context,
MaterialPageRoute(builder: (context) => SOShipmentDetailWidget(this)),
);
}
@override
List<String> get rolesRequired => ["sales_order"];
static const String MODEL_TYPE = "salesordershipment";
@override
@ -284,6 +300,18 @@ class InvenTreeSalesOrderShipment extends InvenTreeModel {
return fields;
}
int get orderId => getInt("order");
InvenTreeSalesOrder? get order {
dynamic order_detail = jsondata["order_detail"];
if (order_detail == null) {
return null;
} else {
return InvenTreeSalesOrder.fromJson(order_detail as Map<String, dynamic>);
}
}
String get reference => getString("reference");
String get tracking_number => getString("tracking_number");
@ -292,30 +320,111 @@ class InvenTreeSalesOrderShipment extends InvenTreeModel {
String? get shipment_date => getString("shipment_date");
bool get shipped => shipment_date != null && shipment_date!.isNotEmpty;
String? get delivery_date => getString("delivery_date");
int? get checked_by_id => getInt("checked_by");
bool get isChecked => checked_by_id != null && checked_by_id! > 0;
bool get isShipped => shipment_date != null && shipment_date!.isNotEmpty;
bool get isDelivered => delivery_date != null && delivery_date!.isNotEmpty;
}
/*
* Class representing an attachment file against a SalesOrder object
* Class representing an allocation of stock against a SalesOrderShipment
*/
class InvenTreeSalesOrderAttachment extends InvenTreeAttachment {
InvenTreeSalesOrderAttachment() : super();
class InvenTreeSalesOrderAllocation extends InvenTreeModel {
InvenTreeSalesOrderAllocation() : super();
InvenTreeSalesOrderAttachment.fromJson(Map<String, dynamic> json)
InvenTreeSalesOrderAllocation.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
InvenTreeSalesOrderAttachment.fromJson(json);
InvenTreeSalesOrderAllocation.fromJson(json);
@override
String get REFERENCE_FIELD => "order";
String get URL => "/order/so-allocation/";
@override
String get REF_MODEL_TYPE => "salesorder";
List<String> get rolesRequired => ["sales_order"];
@override
String get URL => InvenTreeAPI().supportsModernAttachments
? "attachment/"
: "order/so/attachment/";
Map<String, String> defaultFilters() {
return {
"part_detail": "true",
"order_detail": "true",
"item_detail": "true",
"location_detail": "true",
};
}
static const String MODEL_TYPE = "salesorderallocation";
int get orderId => getInt("order");
InvenTreeSalesOrder? get order {
dynamic order_detail = jsondata["order_detail"];
if (order_detail == null) {
return null;
} else {
return InvenTreeSalesOrder.fromJson(order_detail as Map<String, dynamic>);
}
}
int get stockItemId => getInt("item");
InvenTreeStockItem? get stockItem {
dynamic item_detail = jsondata["item_detail"];
if (item_detail == null) {
return null;
} else {
return InvenTreeStockItem.fromJson(item_detail as Map<String, dynamic>);
}
}
int get partId => getInt("part");
InvenTreePart? get part {
dynamic part_detail = jsondata["part_detail"];
if (part_detail == null) {
return null;
} else {
return InvenTreePart.fromJson(part_detail as Map<String, dynamic>);
}
}
int get shipmentId => getInt("shipment");
bool get hasShipment => shipmentId > 0;
InvenTreeSalesOrderShipment? get shipment {
dynamic shipment_detail = jsondata["shipment_detail"];
if (shipment_detail == null) {
return null;
} else {
return InvenTreeSalesOrderShipment.fromJson(
shipment_detail as Map<String, dynamic>,
);
}
}
int get locationId => getInt("location");
InvenTreeStockLocation? get location {
dynamic location_detail = jsondata["location_detail"];
if (location_detail == null) {
return null;
} else {
return InvenTreeStockLocation.fromJson(
location_detail as Map<String, dynamic>,
);
}
}
}

View file

@ -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<String, dynamic> 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<String, dynamic> json) =>
InvenTreeStockItemAttachment.fromJson(json);
}
class InvenTreeStockLocation extends InvenTreeModel {
InvenTreeStockLocation() : super();

View file

@ -65,6 +65,9 @@
"allocateStock": "Allocate Stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Display app release notes",
"@appReleaseNotes": {},
@ -145,7 +148,7 @@
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
@ -331,6 +334,15 @@
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Delete Part",
"@deletePart": {},
@ -340,6 +352,9 @@
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Description",
"@description": {},
@ -548,6 +563,12 @@
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
@ -647,6 +668,12 @@
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
@ -668,6 +695,12 @@
"keywords": "Keywords",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
@ -692,7 +725,6 @@
"languageSelect": "Select Language",
"@languageSelect": {},
"lastStocktake": "Last Stocktake",
"@lastStocktake": {},
@ -726,6 +758,9 @@
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
@ -769,6 +804,12 @@
"@name": {
},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
@ -792,6 +833,12 @@
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
@ -927,6 +974,9 @@
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"@permissionAccountDenied": {},
@ -1338,12 +1388,48 @@
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
@ -1555,6 +1641,9 @@
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1642,6 +1731,9 @@
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
@ -1682,20 +1774,5 @@
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Allocate Stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Display app release notes",
"@appReleaseNotes": {},
"appSettings": "App Settings",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Companies",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Configure server settings",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Delete Part",
"@deletePart": {},
"deletePartDetail": "Remove this part from the database",
"@deletePartDetail": {},
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Description",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Keywords",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Notes",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Allocate Stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Display app release notes",
"@appReleaseNotes": {},
"appSettings": "App Settings",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Companies",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Configure server settings",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Delete Part",
"@deletePart": {},
"deletePartDetail": "Remove this part from the database",
"@deletePartDetail": {},
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Description",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Keywords",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Notes",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Přidělit zásoby",
"@allocateStock": {},
"allocatedStock": "Přidělené zásoby",
"@allocatedStock": {},
"appReleaseNotes": "Zobrazit poznámky k verzi aplikace",
"@appReleaseNotes": {},
"appSettings": "Nastavení aplikace",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Skenování čárových kódů pozastaveno",
"@barodeScanPaused": {},
"barcodeScanPause": "Klepnutím nebo podržením pozastavíte skenování",
"barcodeScanPause": "Kliknutím pozastavíte skenování",
"@barcodeScanPause": {},
"barcodeScanAssign": "Skenovat pro přiřazení čárového kódu",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Společnosti",
"@companies": {},
"complete": "Dokončit",
"@complete": {},
"completeOrder": "Dokončit objednávku",
"@completeOrder": {},
"completionDate": "Datum dokončení",
"@completionDate": {},
"configureServer": "Konfigurace nastavení serveru",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Odstranění se nezdařilo",
"@deleteFailed": {},
"deleteImageConfirmation": "Opravdu chcete odstranit tento obrázek?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Smazat obrázek",
"@deleteImageTooltip": {},
"deleteImage": "Smazat obrázek",
"@deleteImage": {},
"deletePart": "Odstranit díl",
"@deletePart": {},
"deletePartDetail": "Odstranit tento díl z databáze",
"@deletePartDetail": {},
"deleteSuccess": "Odstránění bylo úspěšné",
"@deleteSuccess": {},
"deliveryDate": "Datum dodání",
"@deliveryDate": {},
"description": "Popis",
"@description": {},
"destination": "Místo určení",
@ -268,7 +282,7 @@
"@editItem": {},
"editLineItem": "Upravit položku",
"@editLineItem": {},
"email": "Mail",
"email": "E-mail",
"@email": {},
"enterPassword": "Zadejte heslo",
"@enterPassword": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Zobrazit tlačítko pro objednávku na domovské obrazovce",
"@homeShowPoDescription": {},
"homeShowShipments": "Zobrazit zásilky",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Zobrazit čekající zásilky na domovské stránce",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Zobrazit prodejní objednávky",
"@homeShowSo": {},
"homeShowSoDescription": "Zobrazit tlačítko pro objednávku na domovské obrazovce",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Neplatné uživatelské jméno nebo heslo.",
"@invalidUsernamePassword": {},
"invoice": "Faktura",
"@invoice": {},
"invoiceNumber": "Číslo faktury",
"@invoiceNumber": {},
"issue": "Vystavit",
"@issue": {},
"issueDate": "Datum nahlášení",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Klíčová slova",
"@keywords": {},
"labelDriver": "Ovladač pro popisky",
"@labelDriver": {},
"labelSelectDriver": "Vyberte ovladač pro tiskárnu štítků",
"@labelSelectDriver": {},
"labelPrinting": "Tisk štítku",
"@labelPrinting": {},
"labelPrintingDetail": "Povolit tisk štítku",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Vytvořit nové skladové místo",
"@locationCreateDetail": {},
"locationDefault": "Výchozí umístění",
"@locationDefault": {},
"locationNotSet": "Není zadáno žádné umístění",
"@locationNotSet": {},
"locationUpdated": "Skladové místo bylo aktualizováno",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Jméno",
"@name": {},
"no": "Ne",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Nepřipojeno",
"@notConnected": {},
"notes": "Poznámky",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "Obrázek není k dispozici",
"@noImageAvailable": {},
"noPricingAvailable": "Žádné ceny nejsou k dispozici",
"@noPricingAvailable": {},
"noPricingDataFound": "Pro tuto komponentu nebyly nalezeny žádné cenové údaje",
"@noPricingDataFound": {},
"noSubcategories": "Žádná podkategorie",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Žádné podkategorie nejsou k dispozici",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Heslo nemůže být prázdné",
"@passwordEmpty": {},
"pending": "Čekající",
"@pending": {},
"permissionAccountDenied": "Váš účet nemá potřebná oprávnění k provedení této akce",
"@permissionAccountDenied": {},
"permissionRequired": "Vyžadováno oprávnění",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server není vybrán",
"@serverNotSelected": {},
"shipment": "Zásilka",
"@shipment": {},
"shipments": "Dodávky",
"@shipments": {},
"shipmentsPending": "Čekající zásilky",
"@shipmentsPending": {},
"shipmentAdd": "Přidat dodávku",
"@shipmentAdd": {},
"shipmentCheck": "Zkontrolovat zásilku",
"@shipmentCheck": {},
"shipmentCheckDetail": "Označit tuto zásilku jako zkontrolovanou",
"@shipmentCheckDetail": {},
"shipmentChecked": "Zásilka zkontrolována",
"@shipmentChecked": {},
"shipmentDate": "Datum odeslání",
"@shipmentDate": {},
"shipmentEdit": "Upravit zásilku",
"@shipmentEdit": {},
"shipmentReference": "Referenční číslo zásilky",
"@shipmentReference": {},
"shipmentSend": "Odeslat zásilku",
"@shipmentSend": {},
"shipmentUncheck": "Odznačit zásilku",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Označit tuto zásilku jako odznačenou",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Zásilka aktualizována",
"@shipmentUpdated": {},
"shipped": "Odesláno",
"@shipped": {},
"sku": "Číslo zboží (SKU)",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Celková cena",
"@totalPrice": {},
"trackingNumber": "Sledovací číslo",
"@trackingNumber": {},
"transfer": "Převod",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Webová stránka",
"@website": {},
"yes": "Ano",
"@yes": {},
"price": "Cena",
"@price": {},
"priceRange": "Cenový rozsah",
@ -1137,15 +1203,5 @@
"currency": "Měna",
"@currency": {},
"priceBreaks": "Cena sleva",
"@priceBreaks": {},
"noPricingAvailable": "Žádné ceny nejsou k dispozici",
"@noPricingAvailable": {},
"noPricingDataFound": "Pro tuto komponentu nebyly nalezeny žádné cenové údaje",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Opravdu chcete odstranit tento obrázek?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Smazat obrázek",
"@deleteImageTooltip": {},
"deleteImage": "Smazat obrázek",
"@deleteImage": {}
"@priceBreaks": {}
}

File diff suppressed because it is too large Load diff

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Bestand zuweisen",
"@allocateStock": {},
"allocatedStock": "Zugewiesener Bestand",
"@allocatedStock": {},
"appReleaseNotes": "App-Versionshinweise anzeigen",
"@appReleaseNotes": {},
"appSettings": "App-Einstellungen",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode-Scannen angehalten",
"@barodeScanPaused": {},
"barcodeScanPause": "Tippen oder halten um das Scannen anzuhalten",
"barcodeScanPause": "Tippen um das Scannen zu pausieren",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scannen um Barcode zuzuweisen",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Firmen",
"@companies": {},
"complete": "",
"@complete": {},
"completeOrder": "Bestellung abschließen",
"@completeOrder": {},
"completionDate": "Abgeschlossen am",
"@completionDate": {},
"configureServer": "Server-Einstellungen konfigurieren",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Löschvorgang fehlgeschlagen",
"@deleteFailed": {},
"deleteImageConfirmation": "Möchten Sie dieses Bild wirklich löschen?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Bild löschen",
"@deleteImageTooltip": {},
"deleteImage": "Bild löschen",
"@deleteImage": {},
"deletePart": "Teil löschen",
"@deletePart": {},
"deletePartDetail": "Dieses Teil aus der Datenbank löschen",
"@deletePartDetail": {},
"deleteSuccess": "Löschvorgang erfolgreich",
"@deleteSuccess": {},
"deliveryDate": "Lieferdatum",
"@deliveryDate": {},
"description": "Beschreibung",
"@description": {},
"destination": "Zielort",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Bestellungen auf Startseite anzeigen",
"@homeShowPoDescription": {},
"homeShowShipments": "Lieferungen anzeigen",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Ausstehende Lieferaufträge auf der Startseite anzeigen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Aufträge anzeigen",
"@homeShowSo": {},
"homeShowSoDescription": "Verkaufsknopf auf dem Startbildschirm anzeigen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Ungültige Kombination aus Benutzername und Passwort",
"@invalidUsernamePassword": {},
"invoice": "Rechnung",
"@invoice": {},
"invoiceNumber": "Rechnungsnummer",
"@invoiceNumber": {},
"issue": "Aufgeben",
"@issue": {},
"issueDate": "Ausstellungsdatum",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Schlüsselwörter",
"@keywords": {},
"labelDriver": "Etikettendrucker Treiber",
"@labelDriver": {},
"labelSelectDriver": "Etikettendrucker Treiber auswählen",
"@labelSelectDriver": {},
"labelPrinting": "Etikettendruck",
"@labelPrinting": {},
"labelPrintingDetail": "Etikettendruck aktivieren",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Neuen Lagerort erstellen",
"@locationCreateDetail": {},
"locationDefault": "Standard Lagerort",
"@locationDefault": {},
"locationNotSet": "Lagerort nicht angegeben",
"@locationNotSet": {},
"locationUpdated": "Lagerort aktualisiert",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "Nein",
"@no": {},
"notApplicable": "nicht verfügbar",
"@notApplicable": {},
"notConnected": "Nicht verbunden",
"@notConnected": {},
"notes": "Notizen",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "Kein Bild verfügbar",
"@noImageAvailable": {},
"noPricingAvailable": "Keine Preisinformation verfügbar",
"@noPricingAvailable": {},
"noPricingDataFound": "Keine Preisdaten für diesen Teil gefunden",
"@noPricingDataFound": {},
"noSubcategories": "Keine Unter-Kategorien",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Keine Unter-Kategorien verfügbar",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Passwort darf nicht leer sein",
"@passwordEmpty": {},
"pending": "Ausstehend",
"@pending": {},
"permissionAccountDenied": "Das Konto hat die erforderlichen Berechtigungen zum Ausführen dieses Vorgangs nicht",
"@permissionAccountDenied": {},
"permissionRequired": "Berechtigung erforderlich",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server nicht ausgewählt",
"@serverNotSelected": {},
"shipment": "Lieferung",
"@shipment": {},
"shipments": "Lieferungen",
"@shipments": {},
"shipmentsPending": "Ausstehende Lieferungen",
"@shipmentsPending": {},
"shipmentAdd": "Lieferung hinzufügen",
"@shipmentAdd": {},
"shipmentCheck": "Lieferung überprüfen",
"@shipmentCheck": {},
"shipmentCheckDetail": "Diese Lieferung als geprüft markieren",
"@shipmentCheckDetail": {},
"shipmentChecked": "Lieferung überprüft",
"@shipmentChecked": {},
"shipmentDate": "Versanddatum",
"@shipmentDate": {},
"shipmentEdit": "Lieferung bearbeiten",
"@shipmentEdit": {},
"shipmentReference": "Sendungsreferenz",
"@shipmentReference": {},
"shipmentSend": "Lieferung versenden",
"@shipmentSend": {},
"shipmentUncheck": "Lieferung ungeprüft markieren",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Diese Lieferung als ungeprüft markieren",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Lieferung Aktualisiert",
"@shipmentUpdated": {},
"shipped": "Versandt",
"@shipped": {},
"sku": "Bestellnummer",
@ -1040,7 +1102,7 @@
"@timeout": {
"description": ""
},
"toggleTorch": "Toggle Torch",
"toggleTorch": "Taschenlampe umschalten",
"@toggleTorch": {},
"tokenError": "Token-Fehler",
"@tokenError": {},
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Gesamtbetrag",
"@totalPrice": {},
"trackingNumber": "Sendungsverfolgungsnummer",
"@trackingNumber": {},
"transfer": "Verschieben",
"@transfer": {
"description": "transfer"
@ -1110,13 +1174,15 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Ja",
"@yes": {},
"price": "Preis",
"@price": {},
"priceRange": "Preisspanne",
"@priceRange": {},
"priceOverrideMin": "Minimum Price Override",
"priceOverrideMin": "Mindestpreis überschreiben",
"@priceOverrideMin": {},
"priceOverrideMax": "Maximum Price Override",
"priceOverrideMax": "Maximalen Preis ignorieren",
"@priceOverrideMax": {},
"salePrice": "Verkaufspreis",
"@salePrice": {},
@ -1132,20 +1198,10 @@
"@variantCost": {},
"overallPricing": "Gesamt Preise",
"@overallPricing": {},
"pricingOverrides": "Pricing Overrides",
"pricingOverrides": "Preisgestaltung ignorieren",
"@pricingOverrides": {},
"currency": "Währung",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "Keine Preisinformation verfügbar",
"@noPricingAvailable": {},
"noPricingDataFound": "Keine Preisdaten für diesen Teil gefunden",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Möchten Sie dieses Bild wirklich löschen?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Bild löschen",
"@deleteImageTooltip": {},
"deleteImage": "Bild löschen",
"@deleteImage": {}
"priceBreaks": "Preisstaffel",
"@priceBreaks": {}
}

File diff suppressed because it is too large Load diff

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Asignar stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Mostrar notas de versión de la aplicación",
"@appReleaseNotes": {},
"appSettings": "Ajustes de aplicación",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Escaneo de código de barras en pausa",
"@barodeScanPaused": {},
"barcodeScanPause": "Toque o mantenga pulsado para pausar el escaneo",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Escanear para asignar código de barras",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Empresas",
"@companies": {},
"complete": "Completado",
"@complete": {},
"completeOrder": "Completar Pedido",
"@completeOrder": {},
"completionDate": "Fecha de Finalización",
"@completionDate": {},
"configureServer": "Configure las opciones de su servidor",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Operación de borrado fallida",
"@deleteFailed": {},
"deleteImageConfirmation": "¿Estas seguro de eliminar esta imagen?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Eliminar imagen",
"@deleteImageTooltip": {},
"deleteImage": "Eliminar imagen",
"@deleteImage": {},
"deletePart": "Eliminar pieza",
"@deletePart": {},
"deletePartDetail": "Eliminar esta pieza de la base de datos",
"@deletePartDetail": {},
"deleteSuccess": "Operación de borrado exitosa",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Descripción",
"@description": {},
"destination": "Destinación",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Mostrar botón de orden de compra en la pantalla de inicio",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Mostrar Órdenes de Venta",
"@homeShowSo": {},
"homeShowSoDescription": "Mostrar botón de órdenes de ventas en la pantalla de inicio",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Combinación de nombre de usuario / contraseña no válida",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "",
"@issue": {},
"issueDate": "Fecha de problema",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Palabras claves",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Impresión de etiquetas",
"@labelPrinting": {},
"labelPrintingDetail": "Habilitar impresión de etiquetas",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Crear nueva ubicación de stock",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No se especificó ninguna ubicación",
"@locationNotSet": {},
"locationUpdated": "Ubicación de stock actualizada",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Nombre",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "No conectado",
"@notConnected": {},
"notes": "Notas",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No hay imagen disponible",
"@noImageAvailable": {},
"noPricingAvailable": "No hay precios disponibles",
"@noPricingAvailable": {},
"noPricingDataFound": "No se encontraron datos de precios para esta parte",
"@noPricingDataFound": {},
"noSubcategories": "No hay subcategorías",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No hay subcategorías disponibles",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "El campo de Contraseña no puede estar vacío",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Tu usuario no cuenta con los permisos necesarios para realizar esta acción",
"@permissionAccountDenied": {},
"permissionRequired": "Se requiere autorización",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Servidor no seleccionado",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Envíos",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Añadir envío",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Enviado",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Precio total",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transferir",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Sitio Web",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Precio",
"@price": {},
"priceRange": "Rango de precios",
@ -1137,15 +1203,5 @@
"currency": "Divisa",
"@currency": {},
"priceBreaks": "Diferenciales de precios",
"@priceBreaks": {},
"noPricingAvailable": "No hay precios disponibles",
"@noPricingAvailable": {},
"noPricingDataFound": "No se encontraron datos de precios para esta parte",
"@noPricingDataFound": {},
"deleteImageConfirmation": "¿Estas seguro de eliminar esta imagen?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Eliminar imagen",
"@deleteImageTooltip": {},
"deleteImage": "Eliminar imagen",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Asignar existencias",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Mostrar notas de versión de la aplicación",
"@appReleaseNotes": {},
"appSettings": "Ajustes de aplicación",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Escaneo de código de barras en pausa",
"@barodeScanPaused": {},
"barcodeScanPause": "Toque o mantenga pulsado para pausar el escaneo",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Escanear para asignar código de barras",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Empresas",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Fecha de finalización",
"@completionDate": {},
"configureServer": "Configurar ajustes del servidor",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Operación de eliminación fallida",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Eliminar parte",
"@deletePart": {},
"deletePartDetail": "Eliminar esta parte de la base de datos",
"@deletePartDetail": {},
"deleteSuccess": "Operación de eliminación exitosa",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Descripción",
"@description": {},
"destination": "Destino",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Mostrar botón de orden de compra en la pantalla de inicio",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Mostrar Órdenes de Venta",
"@homeShowSo": {},
"homeShowSoDescription": "Mostrar botón de órdenes de ventas en la pantalla de inicio",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Combinación inválida de usuario/contraseña",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Emitir",
"@issue": {},
"issueDate": "Fecha de emisión",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Palabras claves",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Impresión de etiquetas",
"@labelPrinting": {},
"labelPrintingDetail": "Habilitar impresión de etiquetas",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Crear nueva ubicación de inventario",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No se especificó ninguna ubicación",
"@locationNotSet": {},
"locationUpdated": "Ubicación de inventario actualizada",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Nombre",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "No conectado",
"@notConnected": {},
"notes": "Notas",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No hay subcategorías",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No hay subcategorías disponibles",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "La contraseña no puede estar vacía",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Tu cuenta no cuenta con los permisos necesarios para realizar esta acción",
"@permissionAccountDenied": {},
"permissionRequired": "Se requiere autorización",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Servidor no seleccionado",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Envíos",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Añadir Envío",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Deseleccionar Envío",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Enviado",
"@shipped": {},
"sku": "SKU",
@ -1006,7 +1068,7 @@
"@suppliers": {},
"supplierReference": "Referencia del proveedor",
"@supplierReference": {},
"switchCamera": "Switch Camera",
"switchCamera": "Cambiar Cámara",
"@switchCamera": {},
"takePicture": "Tomar una foto",
"@takePicture": {},
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Precio total",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transferir",
"@transfer": {
"description": "transfer"
@ -1084,7 +1148,7 @@
"@uploadFailed": {},
"uploadSuccess": "Archivo subido",
"@uploadSuccess": {},
"uploadImage": "Upload Image",
"uploadImage": "Subir Imagen",
"@uploadImage": {},
"usedIn": "Usado en",
"@usedIn": {},
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Sitio web",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Jaota laoseis",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Display app release notes",
"@appReleaseNotes": {},
"appSettings": "Rakenduse sätted",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Ettevõtted",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Seadista serveri seadeid",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Kustuta osa",
"@deletePart": {},
"deletePartDetail": "Remove this part from the database",
"@deletePartDetail": {},
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Kirjeldus",
"@description": {},
"destination": "Sihtkoht",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Märksõnad",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Nimi",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Pole ühendatud",
"@notConnected": {},
"notes": "Märkmed",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "Alamkategooriaid pole",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Ühtegi alamkategooriat pole saadaval",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Teie kontol ei ole vajalikke õigusi selle toimingu sooritamiseks",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Serverite pole valitud",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Saadetised",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Lisa saadetis",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Saadetud",
"@shipped": {},
"sku": "Tootekood",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Hind kokku",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Ülekanne",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Koduleht",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -36,16 +36,18 @@
"@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": "موجودی اختصاص داده شده",
"@allocatedStock": {},
"appReleaseNotes": "نمایش یادداشت های انتشار برنامه",
"@appReleaseNotes": {},
"appSettings": "تنظیمات برنامه",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "اسکن بارکد متوقف شد",
"@barodeScanPaused": {},
"barcodeScanPause": "برای توقف اسکن ضربه بزنید یا نگه دارید",
"barcodeScanPause": "برای توقف اسکن لمس کنید",
"@barcodeScanPause": {},
"barcodeScanAssign": "برای اختصاص بارکد اسکن کنید",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "شرکت‌ها",
"@companies": {},
"complete": "تکمیل",
"@complete": {},
"completeOrder": "تکمیل سفارش",
"@completeOrder": {},
"completionDate": "تاریخ تکمیل",
"@completionDate": {},
"configureServer": "تنظیم شمخصات سرور",
@ -198,9 +204,9 @@
},
"credits": "اعتبارات",
"@credits": {},
"crop": "Crop",
"crop": "برش",
"@crop": {},
"cropImage": "Crop Image",
"cropImage": "برش تصویر",
"@cropImage": {},
"customer": "مشتری",
"@customer": {},
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "عملیات حذف ناموفق بوده است",
"@deleteFailed": {},
"deleteImageConfirmation": "آیا مطمئن هستید که میخواهید این تصویر را حذف کنید؟",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "حذف تصویر",
"@deleteImageTooltip": {},
"deleteImage": "حذف تصویر",
"@deleteImage": {},
"deletePart": "حذف قسمت",
"@deletePart": {},
"deletePartDetail": "این قطعه را از پایگاه داده حذف کنید",
"@deletePartDetail": {},
"deleteSuccess": "عملیات حذف با موفقیت انجام شد",
"@deleteSuccess": {},
"deliveryDate": "تاریخ تحویل",
"@deliveryDate": {},
"description": "توضیحات",
"@description": {},
"destination": "مقصد",
@ -240,9 +254,9 @@
},
"documentation": "مستندات",
"@documentation": {},
"downloadComplete": "Download Complete",
"downloadComplete": "دانلود انجام شد",
"@downloadComplete": {},
"downloadError": "Error downloading image",
"downloadError": "خطای دانلود تصویر",
"@downloadError": {},
"downloading": "در حال دانلود فایل",
"@downloading": {},
@ -268,7 +282,7 @@
"@editItem": {},
"editLineItem": "ویرایش ایتم خط",
"@editLineItem": {},
"email": "Email",
"email": "پست الکترونیکی",
"@email": {},
"enterPassword": "رمز عبور را وارد کنید",
"@enterPassword": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "نمایش دکمه سفارش خرید در صفحه خانه",
"@homeShowPoDescription": {},
"homeShowShipments": "نمایش محموله",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "نمایش محموله در انتظار ارسال بر روی صفحه اصلی",
"@homeShowShipmentsDescription": {},
"homeShowSo": "نمایش سفارش های فروش",
"@homeShowSo": {},
"homeShowSoDescription": "نمایش دکمه سفارش فروش در صفحه خانه",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "ترکیب نام کاربری / رمز عبور نامعتبر",
"@invalidUsernamePassword": {},
"invoice": "صورت‌حساب",
"@invoice": {},
"invoiceNumber": "شماره صورت‌حساب",
"@invoiceNumber": {},
"issue": "موضوع",
"@issue": {},
"issueDate": "تاریخ صدور",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "کلمات کلیدی",
"@keywords": {},
"labelDriver": "درایور چاپگر برچسب",
"@labelDriver": {},
"labelSelectDriver": "انتخاب درایور چاپگر برچسب",
"@labelSelectDriver": {},
"labelPrinting": "چاپ لیبل",
"@labelPrinting": {},
"labelPrintingDetail": "چاپ لیبل را انتخاب کنید",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "مکان سهام جدید ایجاد کنید",
"@locationCreateDetail": {},
"locationDefault": "مکان پیش‌فرض",
"@locationDefault": {},
"locationNotSet": "هیچ مکانی مشخص نشده است",
"@locationNotSet": {},
"locationUpdated": "مکان سهام به روز شد",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "نام",
"@name": {},
"no": "خیر",
"@no": {},
"notApplicable": "موجود نیست",
"@notApplicable": {},
"notConnected": "متصل نیست",
"@notConnected": {},
"notes": "یادداشت ها",
@ -530,8 +562,12 @@
"@noResponse": {},
"noResults": "بدون نتیجه",
"@noResults": {},
"noImageAvailable": "No image available",
"noImageAvailable": "هیچ تصویری موجود نیست",
"@noImageAvailable": {},
"noPricingAvailable": "هیچ قیمتی موجود نیست",
"@noPricingAvailable": {},
"noPricingDataFound": "هیچ اطلاعات قیمتی برای این قطعه یافت نشد",
"@noPricingDataFound": {},
"noSubcategories": "بدون زیر دسته بندی",
"@noSubcategories": {},
"noSubcategoriesAvailable": "هیچ زیر دسته بندی ای در دسترس نیست",
@ -594,9 +630,9 @@
"@partsNone": {},
"partNoResults": "هیچ قطعه ای مطابق با جست و جو یافت نشد",
"@partNoResults": {},
"partPricing": "Part Pricing",
"partPricing": "قیمت‌گذاری قطعات",
"@partPricing": {},
"partPricingSettingDetail": "Display part pricing information",
"partPricingSettingDetail": "نمایش اطلاعات قیمت‌گذاری قطعات",
"@pricingSettingDetail": {},
"partSettings": "تنظیمات قطعه",
"@partSettings": {},
@ -624,11 +660,13 @@
"@password": {},
"passwordEmpty": "رمز عبور نمی تواند خالی باشد",
"@passwordEmpty": {},
"pending": "در حال بررسی",
"@pending": {},
"permissionAccountDenied": "حساب شما مجوزهای لازم برای انجام این عمل را ندارد",
"@permissionAccountDenied": {},
"permissionRequired": "نیازمند مجوز",
"@permissionRequired": {},
"phone": "Phone",
"phone": "تماس",
"@phone": {},
"printLabel": "پرینت برچسب",
"@printLabel": {},
@ -724,7 +762,7 @@
"@reference": {},
"refresh": "تازه سازی",
"@refresh": {},
"rotateClockwise": "Rotate 90° clockwise",
"rotateClockwise": "چرخش °90 درجه در جهت عقربه های ساعت",
"@rotateClockwise": {},
"refreshing": "در حال تازه سازی",
"@refreshing": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "سرور انتخاب نشده است",
"@serverNotSelected": {},
"shipment": "محموله",
"@shipment": {},
"shipments": "محموله ها",
"@shipments": {},
"shipmentsPending": "محموله در انتظار ارسال",
"@shipmentsPending": {},
"shipmentAdd": "افزودن محموله",
"@shipmentAdd": {},
"shipmentCheck": "بررسی محموله",
"@shipmentCheck": {},
"shipmentCheckDetail": "این محموله را بررسی شده علامت گذاری کن",
"@shipmentCheckDetail": {},
"shipmentChecked": "محموله بررسی شده",
"@shipmentChecked": {},
"shipmentDate": "تاریخ ارسال",
"@shipmentDate": {},
"shipmentEdit": "تغییر محموله",
"@shipmentEdit": {},
"shipmentReference": "کد محموله",
"@shipmentReference": {},
"shipmentSend": "ارسال محموله",
"@shipmentSend": {},
"shipmentUncheck": "محموله بررسی نشده",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "این محموله را بررسی نشده علامت گذاری کن",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "محموله به روز رسانی شد",
"@shipmentUpdated": {},
"shipped": "ارسال شده",
"@shipped": {},
"sku": "واحد نگهداری موجودی",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "قیمت کل",
"@totalPrice": {},
"trackingNumber": "کد رهگیری",
"@trackingNumber": {},
"transfer": "انتقال",
"@transfer": {
"description": "transfer"
@ -1084,7 +1148,7 @@
"@uploadFailed": {},
"uploadSuccess": "فایل اپلود شد",
"@uploadSuccess": {},
"uploadImage": "Upload Image",
"uploadImage": "بارگذاری تصویر",
"@uploadImage": {},
"usedIn": "استفاده شده در",
"@usedIn": {},
@ -1110,42 +1174,34 @@
"@viewSupplierPart": {},
"website": "وب سایت",
"@website": {},
"price": "Price",
"yes": "بله",
"@yes": {},
"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": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"priceBreaks": "کاهش قیمت",
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Allocate Stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Näytä sovelluksen julkaisutiedot",
"@appReleaseNotes": {},
"appSettings": "Sovelluksen asetukset",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Yritykset",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Määritä palvelimen asetukset",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Poisto epäonnistui",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Poista osa",
"@deletePart": {},
"deletePartDetail": "Poista tämä osa tietokannasta",
"@deletePartDetail": {},
"deleteSuccess": "Poistaminen onnistui",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Kuvaus",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Virheellinen käyttäjätunnuksen / salasanan yhdistelmä",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Avainsanat",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "Sijaintia ei ole määritetty",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Nimi",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Merkinnät",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Salasana ei voi olla tyhjä",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Tililläsi ei ole tarvittavia oikeuksia tämän toiminnon suorittamiseen",
"@permissionAccountDenied": {},
"permissionRequired": "Käyttöoikeus vaaditaan",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Palvelinta ei ole valittu",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Siirrä",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Sivusto",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -42,10 +42,12 @@
"@aspectRatio3x2": {},
"aspectRatio4x3": "4:3",
"@aspectRatio4x3": {},
"aspectRatioSquare": "Square (1:1)",
"aspectRatioSquare": "Carré (1:1)",
"@aspectRatioSquare": {},
"allocateStock": "Allouer un stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Afficher les notes de version de l'application",
"@appReleaseNotes": {},
"appSettings": "Réglages de l'application",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Scan de code-barres en pause",
"@barodeScanPaused": {},
"barcodeScanPause": "Appuyez ou maintenez pour mettre en pause le scan",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scanner pour attribuer un code-barres",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Sociétés",
"@companies": {},
"complete": "Terminé",
"@complete": {},
"completeOrder": "Finir l'achat",
"@completeOrder": {},
"completionDate": "Date d'achèvement",
"@completionDate": {},
"configureServer": "Configurer les paramètres serveur",
@ -198,9 +204,9 @@
},
"credits": "Crédits",
"@credits": {},
"crop": "Crop",
"crop": "Rogner",
"@crop": {},
"cropImage": "Crop Image",
"cropImage": "Rogner l'image",
"@cropImage": {},
"customer": "Client",
"@customer": {},
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "L'opération de suppression a échoué",
"@deleteFailed": {},
"deleteImageConfirmation": "Êtes-vous sûr de vouloir supprimer cette image ?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Supprimer l'image",
"@deleteImageTooltip": {},
"deleteImage": "Supprimer l'image",
"@deleteImage": {},
"deletePart": "Supprimer la pièce",
"@deletePart": {},
"deletePartDetail": "Supprimer cette pièce de la base de données",
"@deletePartDetail": {},
"deleteSuccess": "Opération de suppression réussie",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Description",
"@description": {},
"destination": "Destination",
@ -240,9 +254,9 @@
},
"documentation": "Documentation",
"@documentation": {},
"downloadComplete": "Download Complete",
"downloadComplete": "Téléchargement terminé",
"@downloadComplete": {},
"downloadError": "Error downloading image",
"downloadError": "Impossible de télécharger l'image",
"@downloadError": {},
"downloading": "Téléchargement du fichier",
"@downloading": {},
@ -302,9 +316,9 @@
"@expiryExpired": {},
"expiryStale": "Périmé",
"@expiryStale": {},
"extraLineItem": "Extra Line Item",
"extraLineItem": "Ligne supplémentaire",
"@extraLineItem": {},
"extraLineItems": "Extra Line Items",
"extraLineItems": "Lignes supplémentaires",
"@extraLineItems": {},
"feedback": "Donner votre avis",
"@feedback": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Afficher le bouton de l'ordre d'achat sur l'écran d'accueil",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Afficher les commandes de vente",
"@homeShowSo": {},
"homeShowSoDescription": "Afficher le bouton des commandes sur l'écran d'accueil",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Nom d'utilisateur/mot de passe invalide",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Problème",
"@issue": {},
"issueDate": "Date d'émission",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Mots clés",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Impression étiquettes",
"@labelPrinting": {},
"labelPrintingDetail": "Activer l'impression d'étiquettes",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Créer un nouvel emplacement de stock",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "Aucun emplacement spécifié",
"@locationNotSet": {},
"locationUpdated": "Emplacement du stock mis à jour",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Nom",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Non connecté",
"@notConnected": {},
"notes": "Notes",
@ -530,8 +562,12 @@
"@noResponse": {},
"noResults": "Aucun résultat",
"@noResults": {},
"noImageAvailable": "No image available",
"noImageAvailable": "Pas d'image disponible",
"@noImageAvailable": {},
"noPricingAvailable": "Aucune tarification disponible",
"@noPricingAvailable": {},
"noPricingDataFound": "Aucune donnée de tarification disponible pour cette pièce",
"@noPricingDataFound": {},
"noSubcategories": "Pas de sous-catégorie",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Aucune sous-catégorie disponible",
@ -624,11 +660,13 @@
"@password": {},
"passwordEmpty": "Le mot de passe peut pas être vide",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Vous n'avez pas les autorisations requises pour exécuter cette action",
"@permissionAccountDenied": {},
"permissionRequired": "Autorisation requise",
"@permissionRequired": {},
"phone": "Phone",
"phone": "Téléphone",
"@phone": {},
"printLabel": "Imprimer l'étiquette",
"@printLabel": {},
@ -724,7 +762,7 @@
"@reference": {},
"refresh": "Actualiser",
"@refresh": {},
"rotateClockwise": "Rotate 90° clockwise",
"rotateClockwise": "Rotation à 90° dans le sens horaire",
"@rotateClockwise": {},
"refreshing": "Actualisation en cours",
"@refreshing": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Serveur non sélectionné",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Modes de livraison",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Ajouter un mode de livraison",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Expédié",
"@shipped": {},
"sku": "UGS",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Prix Total",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfert",
"@transfer": {
"description": "transfer"
@ -1084,7 +1148,7 @@
"@uploadFailed": {},
"uploadSuccess": "Fichier transféré",
"@uploadSuccess": {},
"uploadImage": "Upload Image",
"uploadImage": "Envoyer une image",
"@uploadImage": {},
"usedIn": "Utilisé dans",
"@usedIn": {},
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Site web",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Prix",
"@price": {},
"priceRange": "Fourchette de prix",
@ -1132,20 +1198,10 @@
"@variantCost": {},
"overallPricing": "Cout Global",
"@overallPricing": {},
"pricingOverrides": "Pricing Overrides",
"pricingOverrides": "Remplacement des prix",
"@pricingOverrides": {},
"currency": "Devise",
"@currency": {},
"priceBreaks": "Ruptures de prix",
"@priceBreaks": {},
"noPricingAvailable": "Aucune tarification disponible",
"@noPricingAvailable": {},
"noPricingDataFound": "Aucune donnée de tarification disponible pour cette pièce",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "הקצאת מלאי",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": " הצג הערות פרסום של האפליקציה",
"@appReleaseNotes": {},
"appSettings": "הגדרות אפליקציה",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "סריקת ברקוד מושהית",
"@barodeScanPaused": {},
"barcodeScanPause": "בקש או החזק כדי להשהות את הסריקה",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "סרוק כדי להקצות ברקוד",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "חברות",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "קבע את הגדרות השרת",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "פעולת המחיקה נכשלה",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "מחק פריט",
"@deletePart": {},
"deletePartDetail": "הסר פריט זה ממסד הנתונים",
"@deletePartDetail": {},
"deleteSuccess": "פעולת המחיקה הצליחה",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "תיאור",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "הצג את לחצן הזמנת רכש במסך הבית",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "הצג הזמנות מכירה",
"@homeShowSo": {},
"homeShowSoDescription": "הצג את לחצן הזמנות מכירה במסך הבית",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "שילוב שם משתמש/סיסמה לא תקין",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "להנפיק",
"@issue": {},
"issueDate": "תאריך הנפקה",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "מילות מפתח",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "הדפסת תווית",
"@labelPrinting": {},
"labelPrintingDetail": "אפשר הדפסת תווית",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "צור מיקום מלאי חדש",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "לא צוין מיקום",
"@locationNotSet": {},
"locationUpdated": "מיקום המלאי עודכן",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "שם",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "לא מחובר",
"@notConnected": {},
"notes": "הערות",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "אין קטגורית משנה",
"@noSubcategories": {},
"noSubcategoriesAvailable": "אין קטכוריות משנה זמינות",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "הסיסמה לא יכולה להיות ריקה",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "לחשבון זה אין את ההרשאות לבצע פעולה זו",
"@permissionAccountDenied": {},
"permissionRequired": "נדרשת הרשאה",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "השרת לא נבחר",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "משלוחים",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "מק\"ט [מספר קטלוגי] ",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "מחיר כולל",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "העבר",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "אתר",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -26,7 +26,7 @@
"@addStock": {
"description": "add stock"
},
"address": "Address",
"address": "",
"@address": {},
"appAbout": "About InvenTree",
"@appAbout": {},
@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Allocate Stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Display app release notes",
"@appReleaseNotes": {},
"appSettings": "App Settings",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -112,7 +114,7 @@
"@barcodeScanDelay": {},
"barcodeScanDelayDetail": "Delay between barcode scans",
"@barcodeScanDelayDetail": {},
"barcodeScanGeneral": "Scan an InvenTree barcode",
"barcodeScanGeneral": "InvenTree बारकोड स्कैन करें",
"@barcodeScanGeneral": {},
"barcodeScanInItems": "Scan stock items into this location",
"@barcodeScanInItems": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Companies",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Configure server settings",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Delete Part",
"@deletePart": {},
"deletePartDetail": "Remove this part from the database",
"@deletePartDetail": {},
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Description",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Keywords",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Notes",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Készlet foglalása",
"@allocateStock": {},
"allocatedStock": "Lefoglalt Készlet",
"@allocatedStock": {},
"appReleaseNotes": "Kiadási közlemények",
"@appReleaseNotes": {},
"appSettings": "Alkalmazásbeállítások",
@ -54,7 +56,7 @@
"@appSettingsDetails": {},
"assignedToMe": "Hozzámrendelt",
"@assignedToMe": {},
"assignedToMeDetail": "Show orders which are assigned to me",
"assignedToMeDetail": "Mutasd az én rendeléseim",
"@assignedToMeDetail": {},
"attachments": "Mellékletek",
"@attachments": {},
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Vonalkód olvasás megállítva",
"@barodeScanPaused": {},
"barcodeScanPause": "Kattints vagy tartsd lenyomva a beolvasás felfüggesztéséhez",
"barcodeScanPause": "Érintse meg a szkennelés szüneteltetéséhez",
"@barcodeScanPause": {},
"barcodeScanAssign": "Kódolvasás a hozzárendeléshez",
"@barcodeScanAssign": {},
@ -146,7 +148,7 @@
"@build": {},
"building": "Gyártásban",
"@building": {},
"cameraCreationError": "Could not open camera controller",
"cameraCreationError": "Nem sikerült a kameravezérlőt megnyitni",
"@cameraCreationError": {},
"cameraInternal": "Belső kamera",
"@cameraInternal": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Cégek",
"@companies": {},
"complete": "Kész",
"@complete": {},
"completeOrder": "Rendelés teljesítése",
"@completeOrder": {},
"completionDate": "Befejezés dátuma",
"@completionDate": {},
"configureServer": "Kiszolgáló beállítások konfigurálása",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Törlés sikertelen",
"@deleteFailed": {},
"deleteImageConfirmation": "Biztosan törli a képet?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Kép törlése",
"@deleteImageTooltip": {},
"deleteImage": "Kép törlése",
"@deleteImage": {},
"deletePart": "Alkatrész törlése",
"@deletePart": {},
"deletePartDetail": "Alkatrész eltávolítása az adatbázisból",
"@deletePartDetail": {},
"deleteSuccess": "Törlés sikeres",
"@deleteSuccess": {},
"deliveryDate": "Szállítási Dátum",
"@deliveryDate": {},
"description": "Leírás",
"@description": {},
"destination": "Cél",
@ -302,9 +316,9 @@
"@expiryExpired": {},
"expiryStale": "Elavult",
"@expiryStale": {},
"extraLineItem": "Extra Line Item",
"extraLineItem": "Egyéb tétel",
"@extraLineItem": {},
"extraLineItems": "Extra Line Items",
"extraLineItems": "Egyéb tételek",
"@extraLineItems": {},
"feedback": "Visszajelzés",
"@feedback": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Beszerzési rendelések gomb megjelenítése a főoldalon",
"@homeShowPoDescription": {},
"homeShowShipments": "Szállítmányok Mutatása",
"@homeShowShipments": {},
"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": {},
"homeShowSoDescription": "Értékesítési rendelések gomb megjelenítése a főoldalon",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Érvénytelen felhasználónév/jelszó kombináció",
"@invalidUsernamePassword": {},
"invoice": "Számla",
"@invoice": {},
"invoiceNumber": "Számlaszám",
"@invoiceNumber": {},
"issue": "Kiküldés",
"@issue": {},
"issueDate": "Kiállítás dátuma",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Kulcsszavak",
"@keywords": {},
"labelDriver": "Címke Meghajtó",
"@labelDriver": {},
"labelSelectDriver": "Címkenyomtató Meghajtó Kiválasztása",
"@labelSelectDriver": {},
"labelPrinting": "Címke nyomtatás",
"@labelPrinting": {},
"labelPrintingDetail": "Címke nyomtatás engedélyezése",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Új készlet hely létrehozása",
"@locationCreateDetail": {},
"locationDefault": "Alapértelmezett Hely",
"@locationDefault": {},
"locationNotSet": "Nincs megadva hely",
"@locationNotSet": {},
"locationUpdated": "Készlet hely adatai frissítve",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Név",
"@name": {},
"no": "Nem",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Nincs kapcsolódva",
"@notConnected": {},
"notes": "Megjegyzések",
@ -530,8 +562,12 @@
"@noResponse": {},
"noResults": "Nincs találat",
"@noResults": {},
"noImageAvailable": "No image available",
"noImageAvailable": "Nincs elérhető kép",
"@noImageAvailable": {},
"noPricingAvailable": "Árazás nem elérhető",
"@noPricingAvailable": {},
"noPricingDataFound": "Nincs árazási információ ehhez az alkatrészhez",
"@noPricingDataFound": {},
"noSubcategories": "Nincsenek alkategóriák",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Nincsenek alkategóriák",
@ -596,7 +632,7 @@
"@partNoResults": {},
"partPricing": "Alkatrész árazása",
"@partPricing": {},
"partPricingSettingDetail": "Display part pricing information",
"partPricingSettingDetail": "Alkatrész árazási információk megjelenítése",
"@pricingSettingDetail": {},
"partSettings": "Alkatrész beállítások",
"@partSettings": {},
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Jelszó nem lehet üres",
"@passwordEmpty": {},
"pending": "Függőben",
"@pending": {},
"permissionAccountDenied": "Nincs meg a szükséges jogosultságod, hogy végrehajtsd ezt a műveletet",
"@permissionAccountDenied": {},
"permissionRequired": "Engedély szükséges",
@ -670,17 +708,17 @@
"@profileTapToCreate": {},
"projectCode": "Projektszám",
"@projectCode": {},
"purchaseOrderConfirmScan": "Confirm Scan Data",
"purchaseOrderConfirmScan": "Beolvasott adatok jóváhagyása",
"@purchaseOrderConfirmScan": {},
"purchaseOrderConfirmScanDetail": "Confirm details when scanning in items",
"purchaseOrderConfirmScanDetail": "Tételek részleteinek jóváhagyása beolvasás közben",
"@purchaseOrderConfirmScanDetail": {},
"purchaseOrderEnable": "Enable Purchase Orders",
"purchaseOrderEnable": "Beszerzési rendelések engedélyezése",
"@purchaseOrderEnable": {},
"purchaseOrderEnableDetail": "Enable purchase order functionality",
"purchaseOrderEnableDetail": "Értékesítési rendelés funkció aktiválása",
"@purchaseOrderEnableDetail": {},
"purchaseOrderShowCamera": "Kamera gyorsbillentyű",
"@purchaseOrderShowCamera": {},
"purchaseOrderShowCameraDetail": "Enable image upload shortcut on purchase order screen",
"purchaseOrderShowCameraDetail": "Képfeltöltés shortcut engedélyezése az beszerzési rendelés oldalon",
"@purchaseOrderShowCameraDetail": {},
"purchaseOrder": "Beszerzési rendelés",
"@purchaseOrder": {},
@ -802,7 +840,7 @@
"@salesOrders": {},
"salesOrderEnable": "Vevői rendelések engedélyezése",
"@salesOrderEnable": {},
"salesOrderEnableDetail": "Értékesítési rendés funkció aktiválása",
"salesOrderEnableDetail": "Értékesítési rendelés funkció aktiválása",
"@salesOrderEnableDetail": {},
"salesOrderShowCamera": "Kamera gyorsbillentyű",
"@salesOrderShowCamera": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Nincs kiszolgáló választva",
"@serverNotSelected": {},
"shipment": "Szállítmány",
"@shipment": {},
"shipments": "Szállítmányok",
"@shipments": {},
"shipmentsPending": "Függőben Lévő Szállítmányok",
"@shipmentsPending": {},
"shipmentAdd": "Szállítmány hozzáadása",
"@shipmentAdd": {},
"shipmentCheck": "Szállítmány Ellenőrzése",
"@shipmentCheck": {},
"shipmentCheckDetail": "Jelölje meg ezt a szállítmányt ellenőrzöttként",
"@shipmentCheckDetail": {},
"shipmentChecked": "Szállítmány Ellenőrizve",
"@shipmentChecked": {},
"shipmentDate": "Szállítmány Dátuma",
"@shipmentDate": {},
"shipmentEdit": "Szállítmány Szerkesztése",
"@shipmentEdit": {},
"shipmentReference": "Szállítmány Hivatkozás",
"@shipmentReference": {},
"shipmentSend": "Szállítmány Küldése",
"@shipmentSend": {},
"shipmentUncheck": "Szállítmány Ellenőrzés Visszavonása",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Jelölje meg ezt a szállítmányt nem ellenőrzöttként",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Szállítmány Frissítve",
"@shipmentUpdated": {},
"shipped": "Kiszállítva",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Teljes ár",
"@totalPrice": {},
"trackingNumber": "Nyomkövetési Szám",
"@trackingNumber": {},
"transfer": "Áthelyezés",
"@transfer": {
"description": "transfer"
@ -1070,7 +1134,7 @@
"@translateHelp": {},
"unavailable": "Nem elérhető",
"@unavailable": {},
"unavailableDetail": "Item is not available",
"unavailableDetail": "Tétel nem elérhető",
"@unavailableDetail": {},
"unitPrice": "Egységár",
"@unitPrice": {},
@ -1110,19 +1174,21 @@
"@viewSupplierPart": {},
"website": "Weboldal",
"@website": {},
"yes": "Igen",
"@yes": {},
"price": "Ár",
"@price": {},
"priceRange": "Ártartomány",
"@priceRange": {},
"priceOverrideMin": "Minimum Price Override",
"priceOverrideMin": "Minimális Ár Felülbírálás",
"@priceOverrideMin": {},
"priceOverrideMax": "Maximum Price Override",
"priceOverrideMax": "Maximumális Ár Felülbírálás",
"@priceOverrideMax": {},
"salePrice": "Eladási ár",
"@salePrice": {},
"saleHistory": "Eladási előzmények",
"@saleHistory": {},
"supplierPricing": "Supplier Pricing",
"supplierPricing": "Beszállítói árazás",
"@supplierPricing": {},
"bomCost": "Alkatrészjegyzék költség",
"@bomCost": {},
@ -1130,22 +1196,12 @@
"@internalCost": {},
"variantCost": "Variáns költsége",
"@variantCost": {},
"overallPricing": "Overall Pricing",
"overallPricing": "Általános árazás",
"@overallPricing": {},
"pricingOverrides": "Pricing Overrides",
"pricingOverrides": "Árazás felülbírálások",
"@pricingOverrides": {},
"currency": "Pénznem",
"@currency": {},
"priceBreaks": "Ársávok",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Kép törlése",
"@deleteImageTooltip": {},
"deleteImage": "Kép törlése",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -42,19 +42,21 @@
"@aspectRatio3x2": {},
"aspectRatio4x3": "4:3",
"@aspectRatio4x3": {},
"aspectRatioSquare": "Square (1:1)",
"aspectRatioSquare": "Persegi (1:1)",
"@aspectRatioSquare": {},
"allocateStock": "Alokasikan Stok",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Tampilkan catatan rilis aplikasi",
"@appReleaseNotes": {},
"appSettings": "Pengaturan Aplikasi",
"@appSettings": {},
"appSettingsDetails": "Konfigurasikan pengaturan aplikasi InvenTree",
"@appSettingsDetails": {},
"assignedToMe": "Assigned to Me",
"assignedToMe": "Ditugaskan kepada Saya",
"@assignedToMe": {},
"assignedToMeDetail": "Show orders which are assigned to me",
"assignedToMeDetail": "Tampilkan pesanan yang ditugaskan kepada saya",
"@assignedToMeDetail": {},
"attachments": "Lampiran",
"@attachments": {},
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Pemindaian barcode dijeda",
"@barodeScanPaused": {},
"barcodeScanPause": "Ketuk atau tahan untuk menjeda pemindaian",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Pindai untuk menetapkan barcode",
"@barcodeScanAssign": {},
@ -146,7 +148,7 @@
"@build": {},
"building": "Bangunan",
"@building": {},
"cameraCreationError": "Could not open camera controller",
"cameraCreationError": "Tidak dapat membuka pengontrol kamera",
"@cameraCreationError": {},
"cameraInternal": "Kamera Internal",
"@cameraInternal": {},
@ -168,7 +170,7 @@
"@categoryUpdated": {},
"company": "Perusahaan",
"@company": {},
"companyAdd": "Add Company",
"companyAdd": "Tambahkan Perusahaan",
"@companyAdd": {},
"companyEdit": "Rubah Perusahaan",
"@companyEdit": {},
@ -178,7 +180,11 @@
"@companyUpdated": {},
"companies": "Perusahaan",
"@companies": {},
"completionDate": "Completion Date",
"complete": "Selesai",
"@complete": {},
"completeOrder": "Lengkapi Pesanan",
"@completeOrder": {},
"completionDate": "Tanggal Selesai",
"@completionDate": {},
"configureServer": "Konfigurasikan pengaturan server",
"@configureServer": {},
@ -198,9 +204,9 @@
},
"credits": "Kredit",
"@credits": {},
"crop": "Crop",
"crop": "Pangkas",
"@crop": {},
"cropImage": "Crop Image",
"cropImage": "Pangkas Gambar",
"@cropImage": {},
"customer": "Pelanggan",
"@customer": {},
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Operasi penghapusan gagal",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Hapus Part",
"@deletePart": {},
"deletePartDetail": "Hapus Part ini dari database",
"@deletePartDetail": {},
"deleteSuccess": "Operasi penghapusan berhasil",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Deskripsi",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Tampilkan tombol pesanan pembelian di layar beranda",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Tampilkan Pesanan Penjualan",
"@homeShowSo": {},
"homeShowSoDescription": "Tampilkan tombol pesanan penjualan di layar beranda",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Kata Kunci",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Nama",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Tidak Tersambung",
"@notConnected": {},
"notes": "Catatan",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "Tidak ada subkategori",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Tidak ada subkategori tersedia",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Kata sandi tidak boleh kosong",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Akun Anda tidak memiliki izin yang diperlukan untuk melakukan tindakan ini",
"@permissionAccountDenied": {},
"permissionRequired": "Izin Diperlukan",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server tidak dipilih",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Pengiriman",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Tambahkan Pengiriman",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Terkirim",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Harga",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Situs",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Alloca stock",
"@allocateStock": {},
"allocatedStock": "Scorte Assegnate",
"@allocatedStock": {},
"appReleaseNotes": "Mostra le note di rilascio dell'app",
"@appReleaseNotes": {},
"appSettings": "Impostazioni App",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Scansione codice a barre in pausa",
"@barodeScanPaused": {},
"barcodeScanPause": "Premi oppure tieni premuti per mettere in pausa la scansione",
"barcodeScanPause": "Tocca per mettere in pausa la scansione",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scansiona per assegnare codice a barre",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Aziende",
"@companies": {},
"complete": "Completato",
"@complete": {},
"completeOrder": "Ordine completo",
"@completeOrder": {},
"completionDate": "Data di completamento",
"@completionDate": {},
"configureServer": "Configurare le impostazioni del server",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Operazione di eliminazione fallita",
"@deleteFailed": {},
"deleteImageConfirmation": "Sei sicuro di voler eliminare questa immagine?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Elimina immagine",
"@deleteImageTooltip": {},
"deleteImage": "Elimina immagine",
"@deleteImage": {},
"deletePart": "Elimina Articolo",
"@deletePart": {},
"deletePartDetail": "Rimuovi quest'articolo dal database",
"@deletePartDetail": {},
"deleteSuccess": "Operazione di eliminazione riuscita",
"@deleteSuccess": {},
"deliveryDate": "Data di consegna",
"@deliveryDate": {},
"description": "Descrizione",
"@description": {},
"destination": "Destinazione",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Mostra il pulsante ordine d'acquisto nella schermata home",
"@homeShowPoDescription": {},
"homeShowShipments": "Mostra Spedizioni",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Mostra le spedizioni in sospeso nella schermata home",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Mostra ordini di vendita",
"@homeShowSo": {},
"homeShowSoDescription": "Mostra bottone ordine di vendita sulla schermata principale",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Combinazione nome utente e password non valida",
"@invalidUsernamePassword": {},
"invoice": "Fattura",
"@invoice": {},
"invoiceNumber": "Numero Fattura",
"@invoiceNumber": {},
"issue": "Problema",
"@issue": {},
"issueDate": "Data di emissione",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Parole Chiave",
"@keywords": {},
"labelDriver": "Driver Etichetta",
"@labelDriver": {},
"labelSelectDriver": "Seleziona Il Driver Della Stampante Etichette",
"@labelSelectDriver": {},
"labelPrinting": "Etichetta in stampa",
"@labelPrinting": {},
"labelPrintingDetail": "Abilita stampa etichette",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Crea nuova ubicazione di magazzino",
"@locationCreateDetail": {},
"locationDefault": "Posizione Predefinita",
"@locationDefault": {},
"locationNotSet": "Nessuna ubicazione specificata",
"@locationNotSet": {},
"locationUpdated": "Ubicazione di magazzino aggiornata",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Nome",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Non connesso",
"@notConnected": {},
"notes": "Note",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "Nessuna immagine disponibile",
"@noImageAvailable": {},
"noPricingAvailable": "Nessun prezzo disponibile",
"@noPricingAvailable": {},
"noPricingDataFound": "Nessun dato trovato per questo articolo",
"@noPricingDataFound": {},
"noSubcategories": "Nessuna sotto categoria",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Nessuna sottocategoria disponibile",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "La password non può essere vuota",
"@passwordEmpty": {},
"pending": "In sospeso",
"@pending": {},
"permissionAccountDenied": "Non disponi dei permessi per eseguire l'azione",
"@permissionAccountDenied": {},
"permissionRequired": "Autorizzazione necessaria",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server non selezionato",
"@serverNotSelected": {},
"shipment": "Spedizione",
"@shipment": {},
"shipments": "Spedizioni",
"@shipments": {},
"shipmentsPending": "Spedizioni in sospeso",
"@shipmentsPending": {},
"shipmentAdd": "Aggiungi Spedizione",
"@shipmentAdd": {},
"shipmentCheck": "Controlla spedizione",
"@shipmentCheck": {},
"shipmentCheckDetail": "Segna questa spedizione come controllata",
"@shipmentCheckDetail": {},
"shipmentChecked": "Spedizione Controllata",
"@shipmentChecked": {},
"shipmentDate": "Data di spedizione",
"@shipmentDate": {},
"shipmentEdit": "Modifica spedizione",
"@shipmentEdit": {},
"shipmentReference": "Riferimento della spedizione",
"@shipmentReference": {},
"shipmentSend": "Invia Spedizione",
"@shipmentSend": {},
"shipmentUncheck": "Deseleziona Spedizione",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Contrassegna questa spedizione come non controllata",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Spedizione Aggiornata",
"@shipmentUpdated": {},
"shipped": "Spedito",
"@shipped": {},
"sku": "Codice articolo",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Prezzo Totale",
"@totalPrice": {},
"trackingNumber": "Numero Di Tracking",
"@trackingNumber": {},
"transfer": "Trasferisci",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Sito Web",
"@website": {},
"yes": "Si",
"@yes": {},
"price": "Prezzo",
"@price": {},
"priceRange": "Fascia di Prezzo",
@ -1137,15 +1203,5 @@
"currency": "Valuta",
"@currency": {},
"priceBreaks": "Divergenze di prezzo",
"@priceBreaks": {},
"noPricingAvailable": "Nessun prezzo disponibile",
"@noPricingAvailable": {},
"noPricingDataFound": "Nessun dato trovato per questo articolo",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Sei sicuro di voler eliminare questa immagine?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Elimina immagine",
"@deleteImageTooltip": {},
"deleteImage": "Elimina immagine",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "在庫の割り当て",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "アプリのリリースノートを表示",
"@appReleaseNotes": {},
"appSettings": "アプリ設定",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "バーコードスキャンを一時停止中",
"@barodeScanPaused": {},
"barcodeScanPause": "スキャンを一時停止するにはタップまたはホールドします",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "スキャンしてバーコードを割り当てます",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "会社",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "完了日",
"@completionDate": {},
"configureServer": "サーバー設定",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "削除操作に失敗しました",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "部品を削除",
"@deletePart": {},
"deletePartDetail": "データベースからこの部品を削除します",
"@deletePartDetail": {},
"deleteSuccess": "操作の削除に成功しました",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "説明",
"@description": {},
"destination": "保存先",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "注文ボタンをホーム画面に表示",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "注文を表示",
"@homeShowSo": {},
"homeShowSoDescription": "ホーム画面に注文ボタンを表示",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "無効なユーザー名/パスワードの組み合わせです。",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "問題",
"@issue": {},
"issueDate": "発行日",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "キーワード",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "ラベル印刷",
"@labelPrinting": {},
"labelPrintingDetail": "ラベル印刷を有効化",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "新しい在庫場所を作成",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "在庫場所が指定されていません",
"@locationNotSet": {},
"locationUpdated": "在庫場所を更新しました",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "名前",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "接続されていません",
"@notConnected": {},
"notes": "メモ",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "サブカテゴリはありません",
"@noSubcategories": {},
"noSubcategoriesAvailable": "利用可能なサブ在庫場所がありません",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "パスワードは空欄にできません。",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "操作を行う権限がありません",
"@permissionAccountDenied": {},
"permissionRequired": "権限が必要です",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "サーバーが選択されていません",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "発送品",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "出荷を追加",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "出荷済み",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "合計金額",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "転送",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Webサイト",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -4,25 +4,25 @@
"@appTitle": {
"description": "InvenTree application title string"
},
"ok": "OK",
"ok": "확인",
"@ok": {
"description": "OK"
},
"about": "About",
"about": "정보",
"@about": {},
"accountDetails": "Account Details",
"accountDetails": "계정 정보",
"@accountDetails": {},
"actions": "Actions",
"actions": "작업",
"@actions": {
"description": ""
},
"actionsNone": "No actions available",
"actionsNone": "실행 가능한 작업 없음",
"@actionsNone": {},
"add": "추가",
"@add": {
"description": "add"
},
"addStock": "Add Stock",
"addStock": "재고 추가",
"@addStock": {
"description": "add stock"
},
@ -42,65 +42,67 @@
"@aspectRatio3x2": {},
"aspectRatio4x3": "4:3",
"@aspectRatio4x3": {},
"aspectRatioSquare": "Square (1:1)",
"aspectRatioSquare": "정사각형 (1:1)",
"@aspectRatioSquare": {},
"allocateStock": "Allocate Stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "앱 릴리즈 노트 표시",
"@appReleaseNotes": {},
"appSettings": "앱 설정",
"@appSettings": {},
"appSettingsDetails": "Configure InvenTree app settings",
"@appSettingsDetails": {},
"assignedToMe": "Assigned to Me",
"assignedToMe": "나에게 할당됨",
"@assignedToMe": {},
"assignedToMeDetail": "Show orders which are assigned to me",
"@assignedToMeDetail": {},
"attachments": "Attachments",
"attachments": "첨부",
"@attachments": {},
"attachImage": "Attach Image",
"attachImage": "사진 첨부",
"@attachImage": {
"description": "Attach an image"
},
"attachmentNone": "No attachments found",
"attachmentNone": "첨부 파일이 없음",
"@attachmentNone": {},
"attachmentNoneDetail": "No attachments found",
"attachmentNoneDetail": "첨부 파일이 없음",
"@attachmentNoneDetail": {},
"attachmentSelect": "Select attachment",
"attachmentSelect": "첨부파일 선택",
"@attachmentSelect": {},
"attention": "Attention",
"@attention": {},
"available": "Available",
"available": "사용가능",
"@available": {},
"availableStock": "Available Stock",
"@availableStock": {},
"barcodes": "Barcodes",
"barcodes": "바코드",
"@barcodes": {},
"barcodeSettings": "Barcode Settings",
"barcodeSettings": "바코드 설정",
"@barcodeSettings": {},
"barcodeAssign": "Assign Barcode",
"barcodeAssign": "바코드 할당",
"@barcodeAssign": {},
"barcodeAssignDetail": "Scan custom barcode to assign",
"barcodeAssignDetail": "커스텀 바코드 할당",
"@barcodeAssignDetail": {},
"barcodeAssigned": "Barcode assigned",
"barcodeAssigned": "바코드 할당됨",
"@barcodeAssigned": {},
"barcodeError": "Barcode scan error",
"barcodeError": "바코드 스캔 오류",
"@barcodeError": {},
"barcodeInUse": "Barcode already assigned",
"barcodeInUse": "이미 바코드가 할당됨",
"@barcodeInUse": {},
"barcodeMissingHash": "Barcode hash data missing from response",
"barcodeMissingHash": "바코드 해시 데이터 응답 없음",
"@barcodeMissingHash": {},
"barcodeNoMatch": "No match for barcode",
"barcodeNoMatch": "바코드가 일치하지 않음",
"@barcodeNoMatch": {},
"barcodeNotAssigned": "Barcode not assigned",
"barcodeNotAssigned": "바코드가 할당되지 않음",
"@barcodeNotAssigned": {},
"barcodeScanPart": "Scan part barcode",
"barcodeScanPart": "스캔 파트 바코드",
"@barcodeScanPart": {},
"barcodeReceivePart": "Scan barcode to receive part",
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Companies",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Configure server settings",
@ -188,7 +194,7 @@
"@confirmScanDetail": {},
"connectionRefused": "Connection Refused",
"@connectionRefused": {},
"count": "Count",
"count": "수량",
"@count": {
"description": "Count"
},
@ -198,13 +204,13 @@
},
"credits": "Credits",
"@credits": {},
"crop": "Crop",
"crop": "자르기",
"@crop": {},
"cropImage": "Crop Image",
"cropImage": "이미지 자르기",
"@cropImage": {},
"customer": "Customer",
"customer": "고객",
"@customer": {},
"customers": "Customers",
"customers": "고객",
"@customers": {},
"customerReference": "Customer Reference",
"@customerReference": {},
@ -214,27 +220,35 @@
"@colorScheme": {},
"colorSchemeDetail": "Select color scheme",
"@colorSchemeDetail": {},
"darkMode": "Dark Mode",
"darkMode": "다크 모드",
"@darkMode": {},
"darkModeEnable": "Enable dark mode",
"darkModeEnable": "다크 모드 활성화",
"@darkModeEnable": {},
"delete": "Delete",
"delete": "삭제",
"@delete": {},
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Delete Part",
"@deletePart": {},
"deletePartDetail": "Remove this part from the database",
"@deletePartDetail": {},
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Description",
"@description": {},
"destination": "Destination",
"@destination": {},
"destroyed": "Destroyed",
"@destroyed": {},
"details": "Details",
"details": "상세내용",
"@details": {
"description": "details"
},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "키워드",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Notes",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "비밀번호는 비워둘 수 없습니다",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "귀하의 계정은 이 작업에 필요한 권한이 없습니다",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "웹사이트",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Allocate Stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Display app release notes",
"@appReleaseNotes": {},
"appSettings": "App Settings",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Companies",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Configure server settings",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Delete Part",
"@deletePart": {},
"deletePartDetail": "Remove this part from the database",
"@deletePartDetail": {},
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Description",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Keywords",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Notes",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Allocate Stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Display app release notes",
"@appReleaseNotes": {},
"appSettings": "Lietotnes iestatījumi",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Uzņēmumi",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Configure server settings",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Delete Part",
"@deletePart": {},
"deletePartDetail": "Remove this part from the database",
"@deletePartDetail": {},
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Apraksts",
"@description": {},
"destination": "Mērķis",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Keywords",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Notes",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -42,10 +42,12 @@
"@aspectRatio3x2": {},
"aspectRatio4x3": "4:3",
"@aspectRatio4x3": {},
"aspectRatioSquare": "Square (1:1)",
"aspectRatioSquare": "Vierkant (1:1)",
"@aspectRatioSquare": {},
"allocateStock": "Voorraad Toewijzen",
"@allocateStock": {},
"allocatedStock": "Toegewezen voorraad",
"@allocatedStock": {},
"appReleaseNotes": "App release notities weergeven",
"@appReleaseNotes": {},
"appSettings": "App Instellingen",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scannen gepauzeerd",
"@barodeScanPaused": {},
"barcodeScanPause": "Tik of houd om scannen te pauzeren",
"barcodeScanPause": "Klik om scannen te pauzeren",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan om streepjescode toe te wijzen",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Bedrijven",
"@companies": {},
"complete": "Gereed",
"@complete": {},
"completeOrder": "Order Voltooien",
"@completeOrder": {},
"completionDate": "Datum van afronding",
"@completionDate": {},
"configureServer": "Configureer server instellingen",
@ -198,9 +204,9 @@
},
"credits": "Credits",
"@credits": {},
"crop": "Crop",
"crop": "Bijsnijden",
"@crop": {},
"cropImage": "Crop Image",
"cropImage": "Afbeelding bijsnijden",
"@cropImage": {},
"customer": "Klant",
"@customer": {},
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Verwijderen mislukt",
"@deleteFailed": {},
"deleteImageConfirmation": "Weet u zeker dat u deze afbeelding wilt verwijderen?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Afbeelding verwijderen",
"@deleteImageTooltip": {},
"deleteImage": "Afbeelding verwijderen",
"@deleteImage": {},
"deletePart": "Onderdeel Verwijderen",
"@deletePart": {},
"deletePartDetail": "Verwijder dit onderdeel uit de database",
"@deletePartDetail": {},
"deleteSuccess": "Succesvol verwijderd",
"@deleteSuccess": {},
"deliveryDate": "Leveringsdatum",
"@deliveryDate": {},
"description": "Omschrijving",
"@description": {},
"destination": "Bestemming:",
@ -240,9 +254,9 @@
},
"documentation": "Documentatie",
"@documentation": {},
"downloadComplete": "Download Complete",
"downloadComplete": "Download voltooid",
"@downloadComplete": {},
"downloadError": "Error downloading image",
"downloadError": "Fout bij downloaden afbeelding",
"@downloadError": {},
"downloading": "Bestand wordt gedownload",
"@downloading": {},
@ -268,7 +282,7 @@
"@editItem": {},
"editLineItem": "Voorraadartikel bewerken",
"@editLineItem": {},
"email": "Email",
"email": "E-mailadres",
"@email": {},
"enterPassword": "Wachtwoord invoeren",
"@enterPassword": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Inkooporder knop op startscherm weergeven",
"@homeShowPoDescription": {},
"homeShowShipments": "Verzending weergeven",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Toon Leveringen in afwachting op het startscherm",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Toon Verkooporders",
"@homeShowSo": {},
"homeShowSoDescription": "Toon verkooporder knop op startscherm",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Ongeldige gebruikersnaam / wachtwoord combinatie",
"@invalidUsernamePassword": {},
"invoice": "Factuur",
"@invoice": {},
"invoiceNumber": "Factuur nummer",
"@invoiceNumber": {},
"issue": "Probleem",
"@issue": {},
"issueDate": "Uitgiftedatum",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Trefwoorden",
"@keywords": {},
"labelDriver": "Label printer",
"@labelDriver": {},
"labelSelectDriver": "Selecteer Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label afdrukken",
"@labelPrinting": {},
"labelPrintingDetail": "Label afdrukken inschakelen",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Creëer nieuwe voorraadlocatie",
"@locationCreateDetail": {},
"locationDefault": "Standaard locatie",
"@locationDefault": {},
"locationNotSet": "Geen locatie opgegeven",
"@locationNotSet": {},
"locationUpdated": "Voorraadlocatie bijgewerkt",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Naam",
"@name": {},
"no": "Nee",
"@no": {},
"notApplicable": "N.v.t. ",
"@notApplicable": {},
"notConnected": "Niet verbonden",
"@notConnected": {},
"notes": "Opmerkingen",
@ -530,8 +562,12 @@
"@noResponse": {},
"noResults": "Geen Resultaten",
"@noResults": {},
"noImageAvailable": "No image available",
"noImageAvailable": "Geen afbeelding beschikbaar",
"@noImageAvailable": {},
"noPricingAvailable": "Geen prijzen beschikbaar",
"@noPricingAvailable": {},
"noPricingDataFound": "Er zijn geen prijsgegevens gevonden voor dit deel",
"@noPricingDataFound": {},
"noSubcategories": "Geen Subcategorieën",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Geen subcategorieën beschikbaar",
@ -624,11 +660,13 @@
"@password": {},
"passwordEmpty": "Wachtwoord mag niet leeg zijn",
"@passwordEmpty": {},
"pending": "In behandeling",
"@pending": {},
"permissionAccountDenied": "U heeft niet de vereiste rechten om deze actie uit te voeren",
"@permissionAccountDenied": {},
"permissionRequired": "Toestemming Vereist",
"@permissionRequired": {},
"phone": "Phone",
"phone": "Telefoon",
"@phone": {},
"printLabel": "Print Label",
"@printLabel": {},
@ -724,7 +762,7 @@
"@reference": {},
"refresh": "Vernieuwen",
"@refresh": {},
"rotateClockwise": "Rotate 90° clockwise",
"rotateClockwise": "90° rechtsom draaien",
"@rotateClockwise": {},
"refreshing": "Verversen…",
"@refreshing": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server niet geselecteerd",
"@serverNotSelected": {},
"shipment": "Levering",
"@shipment": {},
"shipments": "Verzendingen",
"@shipments": {},
"shipmentsPending": "Leveringen in behandeling",
"@shipmentsPending": {},
"shipmentAdd": "Verzending toevoegen",
"@shipmentAdd": {},
"shipmentCheck": "Controleer Levering",
"@shipmentCheck": {},
"shipmentCheckDetail": "Markeer deze levering als gecontroleerd",
"@shipmentCheckDetail": {},
"shipmentChecked": "Levering gecontroleerd",
"@shipmentChecked": {},
"shipmentDate": "Leverings Datum",
"@shipmentDate": {},
"shipmentEdit": "Wijzig levering",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Verzending versturen",
"@shipmentSend": {},
"shipmentUncheck": "Verzending uitvinken",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Markeer deze levering als niet gecontroleerd",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Verzending bijgewerkt",
"@shipmentUpdated": {},
"shipped": "Verzonden",
"@shipped": {},
"sku": "Artikelnummer",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Totaalprijs",
"@totalPrice": {},
"trackingNumber": "Traceernummer",
"@trackingNumber": {},
"transfer": "Verplaats",
"@transfer": {
"description": "transfer"
@ -1084,7 +1148,7 @@
"@uploadFailed": {},
"uploadSuccess": "Bestand geüpload",
"@uploadSuccess": {},
"uploadImage": "Upload Image",
"uploadImage": "Afbeelding Uploaden",
"@uploadImage": {},
"usedIn": "Wordt Gebruikt In",
"@usedIn": {},
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Ja",
"@yes": {},
"price": "Prijs",
"@price": {},
"priceRange": "Prijs bereik",
@ -1137,15 +1203,5 @@
"currency": "Munteenheid",
"@currency": {},
"priceBreaks": "Prijsverschillen",
"@priceBreaks": {},
"noPricingAvailable": "Geen prijzen beschikbaar",
"@noPricingAvailable": {},
"noPricingDataFound": "Er zijn geen prijsgegevens gevonden voor dit deel",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Tildel lagerbeholdning",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Vis appens utgivelsesnotater",
"@appReleaseNotes": {},
"appSettings": "Appinnstillinger",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Skanning satt på pause",
"@barodeScanPaused": {},
"barcodeScanPause": "Trykk eller hold for å pause skanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Skann for å tildele strekkode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Firma",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Fullført dato",
"@completionDate": {},
"configureServer": "Konfigurer serverinnstillinger",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Slettingen mislyktes",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Slett del",
"@deletePart": {},
"deletePartDetail": "Fjern denne delen fra databasen",
"@deletePartDetail": {},
"deleteSuccess": "Sletting var vellykket",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Beskrivelse",
"@description": {},
"destination": "Destinasjon",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Vis innkjøpsordre-knappen på startside",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Vis salgsordrer",
"@homeShowSo": {},
"homeShowSoDescription": "Vis salgsordre-knappen på startside",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Ugyldig brukernavn- / passordkombinasjon",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Send",
"@issue": {},
"issueDate": "Sendt dato",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Nøkkelord",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Etikettutskrift",
"@labelPrinting": {},
"labelPrintingDetail": "Aktiver etikettutskrift",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Opprett ny lagerplassering",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "Ingen plassering spesifisert",
"@locationNotSet": {},
"locationUpdated": "Lagerplassering oppdatert",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Navn",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Ikke tilkoblet",
"@notConnected": {},
"notes": "Notater",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "Ingen underkategorier",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Ingen underkategorier tilgjengelig",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Passordet kan ikke være tomt",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Kontoen din har ikke tillatelse til å utføre denne handlingen",
"@permissionAccountDenied": {},
"permissionRequired": "Tillatelse kreves",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server ikke valgt",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Forsendelser",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Legg til forsendelse",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Sendt",
"@shipped": {},
"sku": "SKU-kode",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total pris",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Overfør",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Nettside",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -36,23 +36,25 @@
"@appDetails": {},
"allocated": "Przydzielono",
"@allocated": {},
"aspectRatio16x9": "",
"aspectRatio16x9": "16:9",
"@aspectRatio16x9": {},
"aspectRatio3x2": "3:2",
"@aspectRatio3x2": {},
"aspectRatio4x3": "4:3",
"@aspectRatio4x3": {},
"aspectRatioSquare": "Square (1:1)",
"aspectRatioSquare": "Kwadrat (1:1)",
"@aspectRatioSquare": {},
"allocateStock": "Przydziel zapasy",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Wyświetl informacje o historii aktualizacji",
"@appReleaseNotes": {},
"appSettings": "Ustawienia aplikacji",
"@appSettings": {},
"appSettingsDetails": "Konfiguruj ustawienia aplikacji InvenTree",
"@appSettingsDetails": {},
"assignedToMe": "",
"assignedToMe": "Przypisane do mnie",
"@assignedToMe": {},
"assignedToMeDetail": "Pokaż zlecenia, które zostały do mnie przypisane",
"@assignedToMeDetail": {},
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Skanowanie kodów kreskowych wstrzymane",
"@barodeScanPaused": {},
"barcodeScanPause": "Dotknij lub przytrzymaj, aby wstrzymać skanowanie",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Zeskanuj aby przypisać kod kreskowy",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Firmy",
"@companies": {},
"complete": "Zakończono",
"@complete": {},
"completeOrder": "Zakończ zamówienie",
"@completeOrder": {},
"completionDate": "Data ukończenia",
"@completionDate": {},
"configureServer": "Konfiguruj ustawienia serwera",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Usuwanie nie powiodło się",
"@deleteFailed": {},
"deleteImageConfirmation": "Czy na pewno chcesz usunąć ten obraz?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Usuń obraz",
"@deleteImageTooltip": {},
"deleteImage": "Usuń obraz",
"@deleteImage": {},
"deletePart": "Usuń Komponent",
"@deletePart": {},
"deletePartDetail": "Usuń ten komponent z bazy danych",
"@deletePartDetail": {},
"deleteSuccess": "Usuwanie zakończone powodzeniem",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Opis",
"@description": {},
"destination": "Cel:",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Pokaż przycisk zamówienia zakupu na ekranie głównym",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Pokaż zlecenia sprzedaży",
"@homeShowSo": {},
"homeShowSoDescription": "Pokaż przycisk zleceń sprzedaży na ekrani głównym",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Nieprawidłowy login lub hasło",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Problem",
"@issue": {},
"issueDate": "Data Wystawienia",
@ -446,10 +468,14 @@
"@itemInLocation": {},
"itemDeleted": "Element został usunięty",
"@itemDeleted": {},
"itemUpdated": "Item updated",
"itemUpdated": "Element został zaktualizowany.",
"@itemUpdated": {},
"keywords": "Słowa kluczowe",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Drukowanie etykiet",
"@labelPrinting": {},
"labelPrintingDetail": "Włącz drukowanie etykiet",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Utwórz nową pozycję magazynową",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "Nie określono lokacji",
"@locationNotSet": {},
"locationUpdated": "Lokalizacja stanu magazynowego została zaktualizowana",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Nazwa",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Nie połączony",
"@notConnected": {},
"notes": "Notatki",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "Brak dostępnych obrazów",
"@noImageAvailable": {},
"noPricingAvailable": "Cena nie jest dostępna",
"@noPricingAvailable": {},
"noPricingDataFound": "Nie znaleziono danych dotyczących cen dla tej części",
"@noPricingDataFound": {},
"noSubcategories": "Brak podkategorii",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Brak dostępnych podkategorii",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Hasło nie może być puste",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Nie masz wystarczających uprawnień do wykonania tej czynności",
"@permissionAccountDenied": {},
"permissionRequired": "Wymagane uprawnienia",
@ -744,7 +782,7 @@
"@reportBug": {},
"reportBugDescription": "Prześlij raport o błędzie (wymaga konta GitHub)",
"@reportBugDescription": {},
"responsible": "Responsible",
"responsible": "Odpowiedzialny",
"@responsible": {},
"results": "Wyniki",
"@results": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Serwer nie wybrany",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Wysyłki",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Dodaj wysyłkę",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Wysłano",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Cena całkowita",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Przenieś",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Strona WWW",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Cena",
"@price": {},
"priceRange": "Zakres cen",
@ -1124,9 +1190,9 @@
"@saleHistory": {},
"supplierPricing": "Supplier Pricing",
"@supplierPricing": {},
"bomCost": "BOM Cost",
"bomCost": "Koszt BOM",
"@bomCost": {},
"internalCost": "Internal Cost",
"internalCost": "Koszt wewnętrzny",
"@internalCost": {},
"variantCost": "Variant Cost",
"@variantCost": {},
@ -1134,18 +1200,8 @@
"@overallPricing": {},
"pricingOverrides": "Pricing Overrides",
"@pricingOverrides": {},
"currency": "Currency",
"currency": "Waluta",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Usuń obraz",
"@deleteImage": {}
"priceBreaks": "Widełki cenowe",
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Estoque alocado",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Exibir notas de versão do aplicativo",
"@appReleaseNotes": {},
"appSettings": "Configurações do App",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Escaneamento de código de barras pausado",
"@barodeScanPaused": {},
"barcodeScanPause": "Toque ou segure para pausar o escaneamento",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Escaneie para atribuir código de barras",
"@barcodeScanAssign": {},
@ -178,7 +180,11 @@
"@companyUpdated": {},
"companies": "Empresas",
"@companies": {},
"completionDate": "Completion Date",
"complete": "Concluído",
"@complete": {},
"completeOrder": "Finalizar pedido",
"@completeOrder": {},
"completionDate": "Data de conclusão",
"@completionDate": {},
"configureServer": "Definir as configurações do servidor",
"@configureServer": {},
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "A operação de apagar falhou",
"@deleteFailed": {},
"deleteImageConfirmation": "Tem certeza de que deseja excluir essa imagem?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Excluir Imagem",
"@deleteImageTooltip": {},
"deleteImage": "Excluir Imagem",
"@deleteImage": {},
"deletePart": "Deletar Peça",
"@deletePart": {},
"deletePartDetail": "Remova essa peça do banco de dados",
"@deletePartDetail": {},
"deleteSuccess": "Apagado com Sucesso",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Descrição",
"@description": {},
"destination": "Destino",
@ -300,11 +314,11 @@
"@expiryDate": {},
"expiryExpired": "Vencido",
"@expiryExpired": {},
"expiryStale": "Stale",
"expiryStale": "Inativo",
"@expiryStale": {},
"extraLineItem": "Extra Line Item",
"extraLineItem": "Item de Linha extra",
"@extraLineItem": {},
"extraLineItems": "Extra Line Items",
"extraLineItems": "Itens de linha extra",
"@extraLineItems": {},
"feedback": "Feedback",
"@feedback": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Mostrar botão de ordem de compra na tela inicial",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Mostrar Pedidos de Venda",
"@homeShowSo": {},
"homeShowSoDescription": "Mostrar Pedidos de Venda na tela inicial",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Usuario ou senha invalidos",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Emitir",
"@issue": {},
"issueDate": "Data de emissao",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Palavras chave",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Impressão de Etiqueta",
"@labelPrinting": {},
"labelPrintingDetail": "Habilitar Impressão de Etiqueta",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Criar nova localizacao no estoque",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "Nenhuma localizacao especificada",
"@locationNotSet": {},
"locationUpdated": "Localizacao no estoque atualizada",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Nome",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Nao conectado",
"@notConnected": {},
"notes": "Notas",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "Nenhuma imagem disponível",
"@noImageAvailable": {},
"noPricingAvailable": "Nenhum preço disponível",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "Nenhuma subcategoria",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Nenhuma subcategoria disponível",
@ -596,7 +632,7 @@
"@partNoResults": {},
"partPricing": "Preço de Peça",
"@partPricing": {},
"partPricingSettingDetail": "Display part pricing information",
"partPricingSettingDetail": "Exibir informações de preço de parte",
"@pricingSettingDetail": {},
"partSettings": "Configurações de Peça",
"@partSettings": {},
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "A senha não pode estar em branco",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Sua conta não possui as permissões necessárias para realizar esta ação",
"@permissionAccountDenied": {},
"permissionRequired": "Permissão Necessária",
@ -670,9 +708,9 @@
"@profileTapToCreate": {},
"projectCode": "Código do projeto",
"@projectCode": {},
"purchaseOrderConfirmScan": "Confirm Scan Data",
"purchaseOrderConfirmScan": "Confirmar dados de varredura",
"@purchaseOrderConfirmScan": {},
"purchaseOrderConfirmScanDetail": "Confirm details when scanning in items",
"purchaseOrderConfirmScanDetail": "Confirmar detalhes ao escanear itens",
"@purchaseOrderConfirmScanDetail": {},
"purchaseOrderEnable": "Habilitar Pedidos de Compra",
"@purchaseOrderEnable": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Servidor não selecionado",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Envios",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Adicionar envio",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Enviado",
"@shipped": {},
"sku": "Código (SKU)",
@ -1040,7 +1102,7 @@
"@timeout": {
"description": ""
},
"toggleTorch": "Toggle Torch",
"toggleTorch": "Lig/Desl. lanterna",
"@toggleTorch": {},
"tokenError": "Error de token",
"@tokenError": {},
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Preço Total",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transferir",
"@transfer": {
"description": "transfer"
@ -1110,42 +1174,34 @@
"@viewSupplierPart": {},
"website": "Página Web",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Preço",
"@price": {},
"priceRange": "Faixa de Preço",
"@priceRange": {},
"priceOverrideMin": "Minimum Price Override",
"priceOverrideMin": "Substituição de preço mínimo",
"@priceOverrideMin": {},
"priceOverrideMax": "Maximum Price Override",
"priceOverrideMax": "Substituição de preço máximo",
"@priceOverrideMax": {},
"salePrice": "Preço de Venda",
"@salePrice": {},
"saleHistory": "Histórico de Vendas",
"@saleHistory": {},
"supplierPricing": "Supplier Pricing",
"supplierPricing": "Preço do fornecedor",
"@supplierPricing": {},
"bomCost": "BOM Cost",
"bomCost": "Custo de LDM",
"@bomCost": {},
"internalCost": "Internal Cost",
"internalCost": "Custo Interno",
"@internalCost": {},
"variantCost": "Variant Cost",
"variantCost": "Custo Variante",
"@variantCost": {},
"overallPricing": "Overall Pricing",
"overallPricing": "Precificação Geral",
"@overallPricing": {},
"pricingOverrides": "Pricing Overrides",
"pricingOverrides": "Sobrescrever Preço",
"@pricingOverrides": {},
"currency": "Moeda",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Tem certeza de que deseja excluir essa imagem?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Excluir Imagem",
"@deleteImageTooltip": {},
"deleteImage": "Excluir Imagem",
"@deleteImage": {}
"priceBreaks": "Quebra de Preço",
"@priceBreaks": {}
}

View file

@ -42,19 +42,21 @@
"@aspectRatio3x2": {},
"aspectRatio4x3": "4:3",
"@aspectRatio4x3": {},
"aspectRatioSquare": "Square (1:1)",
"aspectRatioSquare": "Quadrado (1:1)",
"@aspectRatioSquare": {},
"allocateStock": "Alocar estoque",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Exibir notas de versão do aplicativo",
"@appReleaseNotes": {},
"appSettings": "Configurações do App",
"@appSettings": {},
"appSettingsDetails": "Configurar os parâmetros do InvenTree",
"@appSettingsDetails": {},
"assignedToMe": "Assigned to Me",
"assignedToMe": "Atribuído a Mim",
"@assignedToMe": {},
"assignedToMeDetail": "Show orders which are assigned to me",
"assignedToMeDetail": "Mostrar pedidos atribuídos a mim",
"@assignedToMeDetail": {},
"attachments": "Anexos",
"@attachments": {},
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Verificação do código de barras pausada",
"@barodeScanPaused": {},
"barcodeScanPause": "Toque ou segure para pausar a verificação",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Escaneie para atribuir código de barras",
"@barcodeScanAssign": {},
@ -146,7 +148,7 @@
"@build": {},
"building": "Compilando",
"@building": {},
"cameraCreationError": "Could not open camera controller",
"cameraCreationError": "Não foi possível aceder ao controlo da câmara",
"@cameraCreationError": {},
"cameraInternal": "Câmera Interna",
"@cameraInternal": {},
@ -168,7 +170,7 @@
"@categoryUpdated": {},
"company": "Empresa",
"@company": {},
"companyAdd": "Add Company",
"companyAdd": "Adicionar Empresa",
"@companyAdd": {},
"companyEdit": "Editar empresa",
"@companyEdit": {},
@ -178,7 +180,11 @@
"@companyUpdated": {},
"companies": "Empresas",
"@companies": {},
"completionDate": "Completion Date",
"complete": "Finalizar",
"@complete": {},
"completeOrder": "Finalizar Encomenda",
"@completeOrder": {},
"completionDate": "Data de conclusão",
"@completionDate": {},
"configureServer": "Configurar os parâmetros do servidor de email",
"@configureServer": {},
@ -198,9 +204,9 @@
},
"credits": "Créditos",
"@credits": {},
"crop": "Crop",
"crop": "Cortar",
"@crop": {},
"cropImage": "Crop Image",
"cropImage": "Recortar Imagem",
"@cropImage": {},
"customer": "Cliente",
"@customer": {},
@ -210,9 +216,9 @@
"@customerReference": {},
"damaged": "Danificado",
"@damaged": {},
"colorScheme": "Color Scheme",
"colorScheme": "Esquema de cores",
"@colorScheme": {},
"colorSchemeDetail": "Select color scheme",
"colorSchemeDetail": "Seleccione o esquema de cores",
"@colorSchemeDetail": {},
"darkMode": "Modo Noturno",
"@darkMode": {},
@ -222,15 +228,23 @@
"@delete": {},
"deleteFailed": "Falha ao excluir",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Excluir esta parte",
"@deletePart": {},
"deletePartDetail": "Remover esta peça da base de dados",
"@deletePartDetail": {},
"deleteSuccess": "Excluído com sucesso",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Descrição",
"@description": {},
"destination": "Destination",
"destination": "Destino",
"@destination": {},
"destroyed": "Destruído",
"@destroyed": {},
@ -240,9 +254,9 @@
},
"documentation": "Documentação",
"@documentation": {},
"downloadComplete": "Download Complete",
"downloadComplete": "Transferência concluída",
"@downloadComplete": {},
"downloadError": "Error downloading image",
"downloadError": "Erro ao transferir imagem",
"@downloadError": {},
"downloading": "Baixando arquivo",
"@downloading": {},
@ -250,7 +264,7 @@
"@edit": {
"description": "edit"
},
"editAttachment": "Edit Attachment",
"editAttachment": "Editar Anexo",
"@editAttachment": {},
"editCategory": "Editar categoria",
"@editCategory": {},
@ -296,15 +310,15 @@
"@errorReportUpload": {},
"errorReportUploadDetails": "Enviar relatórios de erros e registos anónimos",
"@errorReportUploadDetails": {},
"expiryDate": "Expiry Date",
"expiryDate": "Data de Validade",
"@expiryDate": {},
"expiryExpired": "Expired",
"expiryExpired": "Expirado",
"@expiryExpired": {},
"expiryStale": "Stale",
"expiryStale": "Inativo",
"@expiryStale": {},
"extraLineItem": "Extra Line Item",
"extraLineItem": "Adicionar Linha de Artigos Extra",
"@extraLineItem": {},
"extraLineItems": "Extra Line Items",
"extraLineItems": "Adicionar Linhas de Artigos Extra",
"@extraLineItems": {},
"feedback": "Comentários",
"@feedback": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Mostrar botão de pedido de compra na tela inicial",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Mostrar Pedidos de Vendas",
"@homeShowSo": {},
"homeShowSoDescription": "Mostrar botão de pedido de compra na tela inicial",
@ -426,59 +444,67 @@
"@invalidHostDetails": {},
"invalidPart": "Peça Inválida",
"@invalidPart": {},
"invalidPartCategory": "Invalid Part Category",
"invalidPartCategory": "Categoria de Peças Inválida",
"@invalidPartCategory": {},
"invalidStockLocation": "Invalid Stock Location",
"invalidStockLocation": "Localização de Estoque Inválida",
"@invalidStockLocation": {},
"invalidStockItem": "Invalid Stock Item",
"invalidStockItem": "Artigo de Estoque Inválido",
"@invalidStockItem": {},
"invalidSupplierPart": "Invalid Supplier Part",
"invalidSupplierPart": "Peça de fornecedor inválida",
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"invalidUsernamePassword": "O nome de utilizador ou a palavra-passe não estão corretos",
"@invalidUsernamePassword": {},
"issue": "Issue",
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Erro",
"@issue": {},
"issueDate": "Issue Date",
"issueDate": "Data de emissão",
"@issueDate": {},
"issueOrder": "Issue Order",
"issueOrder": "Emitir encomenda",
"@issueOrder": {},
"itemInLocation": "Item already in location",
"itemInLocation": "O artigo já está no local",
"@itemInLocation": {},
"itemDeleted": "Item has been removed",
"itemDeleted": "O artigo foi removido",
"@itemDeleted": {},
"itemUpdated": "Item updated",
"itemUpdated": "O artigo foi atualizado",
"@itemUpdated": {},
"keywords": "Keywords",
"keywords": "Palavras-chave",
"@keywords": {},
"labelPrinting": "Label Printing",
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Impressão de etiqueta",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
"labelPrintingDetail": "Ativar impressão de etiquetas",
"@labelPrintingDetail": {},
"labelTemplate": "Label Template",
"labelTemplate": "Modelo de Etiqueta",
"@labelTemplate": {},
"labelSelectTemplate": "Select Label Template",
"labelSelectTemplate": "Selecione o modelo de etiqueta",
"@labelSelectTemplate": {},
"labelSelectPrinter": "Select Label Printer",
"labelSelectPrinter": "Selecionar impressora de etiqueta",
"@labelSelectPrinter": {},
"language": "Language",
"language": "Idioma",
"@language": {},
"languageDefault": "Default system language",
"languageDefault": "Idioma de sistema predefinido",
"@languageDefault": {},
"languageSelect": "Select Language",
"languageSelect": "Selecionar Idioma",
"@languageSelect": {},
"lastStocktake": "Last Stocktake",
"lastStocktake": "Último Balanço de Estoque",
"@lastStocktake": {},
"lastUpdated": "Ultima atualização",
"@lastUpdated": {},
"level": "Level",
"level": "vel",
"@level": {},
"lineItemAdd": "Add Line Item",
"lineItemAdd": "Adicionar linha",
"@lineItemAdd": {},
"lineItem": "Line Item",
"lineItem": "Linha",
"@lineItem": {},
"lineItems": "Itens de linha",
"@lineItems": {},
"lineItemUpdated": "Line item updated",
"lineItemUpdated": "Linha atualizada",
"@lineItemUpdated": {},
"locateItem": "Locate stock item",
"@locateItem": {},
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Notes",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -570,7 +606,7 @@
"@parametersSettingDetail": {},
"parent": "Parent",
"@parent": {},
"parentCategory": "Parent Category",
"parentCategory": "Categoria Principal",
"@parentCategory": {},
"parentLocation": "Parent Location",
"@parentLocation": {},
@ -610,27 +646,29 @@
"@partCategory": {},
"partCategoryTopLevel": "Top level part category",
"@partCategoryTopLevel": {},
"partCategories": "Part Categories",
"partCategories": "Categorias de Peça",
"@partCategories": {},
"partDetails": "Part Details",
"partDetails": "Detalhes da Peça",
"@partDetails": {},
"partNotes": "Part Notes",
"partNotes": "Notas da Peça",
"@partNotes": {},
"partStock": "Part Stock",
"partStock": "Estoque da Peça",
"@partStock": {
"description": "part stock"
},
"password": "Password",
"password": "Palavra-passe",
"@password": {},
"passwordEmpty": "Password cannot be empty",
"passwordEmpty": "A palavra-passe não pode estar vazia",
"@passwordEmpty": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "A sua conta não tem as permissões necessárias para executar esta ação",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
"permissionRequired": "Permissão necessária",
"@permissionRequired": {},
"phone": "Phone",
"phone": "Telefone",
"@phone": {},
"printLabel": "Print Label",
"printLabel": "Imprimir Etiqueta",
"@printLabel": {},
"plugin": "Plugin",
"@plugin": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -42,10 +42,12 @@
"@aspectRatio3x2": {},
"aspectRatio4x3": "4:3",
"@aspectRatio4x3": {},
"aspectRatioSquare": "Square (1:1)",
"aspectRatioSquare": "Pătrat (1:1)",
"@aspectRatioSquare": {},
"allocateStock": "Alocare Stoc",
"@allocateStock": {},
"allocatedStock": "Stocuri alocate",
"@allocatedStock": {},
"appReleaseNotes": "Afișează notele de lansare a aplicației",
"@appReleaseNotes": {},
"appSettings": "Setări Aplicație",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Scanare cod de bare întreruptă",
"@barodeScanPaused": {},
"barcodeScanPause": "Atingeți sau țineți apăsat pentru a întrerupe scanarea",
"barcodeScanPause": "Atingeți pentru a întrerupe scanarea",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scanează pentru a atribui cod de bare",
"@barcodeScanAssign": {},
@ -168,7 +170,7 @@
"@categoryUpdated": {},
"company": "Companie",
"@company": {},
"companyAdd": "Add Company",
"companyAdd": "Adăugare companie",
"@companyAdd": {},
"companyEdit": "Editare companie",
"@companyEdit": {},
@ -178,7 +180,11 @@
"@companyUpdated": {},
"companies": "Companii",
"@companies": {},
"completionDate": "Completion Date",
"complete": "Finalizare",
"@complete": {},
"completeOrder": "Comandă completă",
"@completeOrder": {},
"completionDate": "Data completării",
"@completionDate": {},
"configureServer": "Configurare setări server",
"@configureServer": {},
@ -198,9 +204,9 @@
},
"credits": "Credite",
"@credits": {},
"crop": "Crop",
"crop": "Decupați",
"@crop": {},
"cropImage": "Crop Image",
"cropImage": "Decupare imagine",
"@cropImage": {},
"customer": "Client",
"@customer": {},
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Operațiune de ștergere eșuată",
"@deleteFailed": {},
"deleteImageConfirmation": "Sunteți sigur că doriți să ștergeți această imagine?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Șterge imaginea",
"@deleteImageTooltip": {},
"deleteImage": "Șterge imaginea",
"@deleteImage": {},
"deletePart": "Șterge Piesa",
"@deletePart": {},
"deletePartDetail": "Elimină această piesă din baza de date",
"@deletePartDetail": {},
"deleteSuccess": "Operație de ștergere reușită",
"@deleteSuccess": {},
"deliveryDate": "Data livrării",
"@deliveryDate": {},
"description": "Descriere",
"@description": {},
"destination": "Destinație",
@ -240,9 +254,9 @@
},
"documentation": "Documentație",
"@documentation": {},
"downloadComplete": "Download Complete",
"downloadComplete": "Descărcare completă",
"@downloadComplete": {},
"downloadError": "Error downloading image",
"downloadError": "Eroare la descărcarea imaginii",
"@downloadError": {},
"downloading": "Se descarcă fișierul",
"@downloading": {},
@ -268,7 +282,7 @@
"@editItem": {},
"editLineItem": "Editare element rând",
"@editLineItem": {},
"email": "Email",
"email": "E-mail",
"@email": {},
"enterPassword": "Introdu parola",
"@enterPassword": {},
@ -302,9 +316,9 @@
"@expiryExpired": {},
"expiryStale": "",
"@expiryStale": {},
"extraLineItem": "Extra Line Item",
"extraLineItem": "Elemente suplimentare",
"@extraLineItem": {},
"extraLineItems": "Extra Line Items",
"extraLineItems": "Elemente suplimentare",
"@extraLineItems": {},
"feedback": "Feedback",
"@feedback": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Afișați butonul de achiziții pe ecranul principal",
"@homeShowPoDescription": {},
"homeShowShipments": "Afișare livrări",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Arată transporturile în așteptare pe ecranul principal",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Arată Comenzile de Vânzări",
"@homeShowSo": {},
"homeShowSoDescription": "Afișare buton vânzări pe ecranul principal",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Combinație de nume utilizator / parolă invalida",
"@invalidUsernamePassword": {},
"invoice": "Factură",
"@invoice": {},
"invoiceNumber": "Număr factură",
"@invoiceNumber": {},
"issue": "Problemă",
"@issue": {},
"issueDate": "Data emiterii",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Cuvinte cheie",
"@keywords": {},
"labelDriver": "Etichetează șofer",
"@labelDriver": {},
"labelSelectDriver": "Selectați șofer de imprimante etichetă",
"@labelSelectDriver": {},
"labelPrinting": "Printare etichete",
"@labelPrinting": {},
"labelPrintingDetail": "Permite tipărirea etichetei",
@ -458,7 +484,7 @@
"@labelTemplate": {},
"labelSelectTemplate": "Selectați șablon de etichetă",
"@labelSelectTemplate": {},
"labelSelectPrinter": "Select Label Printer",
"labelSelectPrinter": "Selectați imprimanta de etichete",
"@labelSelectPrinter": {},
"language": "Limba",
"@language": {},
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Creează o nouă locație de stoc",
"@locationCreateDetail": {},
"locationDefault": "Locație implicită",
"@locationDefault": {},
"locationNotSet": "Nici o locaţie specificată",
"@locationNotSet": {},
"locationUpdated": "Locație stoc actualizată",
@ -504,7 +532,7 @@
"@lost": {},
"manufacturerPart": "",
"@manufacturerPart": {},
"manufacturerPartEdit": "Edit Manufacturer Part",
"manufacturerPartEdit": "Editați piesa producătorului",
"@manufacturerPartEdit": {},
"manufacturerPartNumber": "Număr Serie Producător",
"@manufacturerPartNumber": {},
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Nume",
"@name": {},
"no": "Nu",
"@no": {},
"notApplicable": "Indisponibil",
"@notApplicable": {},
"notConnected": "Neconectat",
"@notConnected": {},
"notes": "Notițe",
@ -530,8 +562,12 @@
"@noResponse": {},
"noResults": "Niciun rezultat",
"@noResults": {},
"noImageAvailable": "No image available",
"noImageAvailable": "Nici o imagine disponibilă",
"@noImageAvailable": {},
"noPricingAvailable": "Nu există prețuri disponibile",
"@noPricingAvailable": {},
"noPricingDataFound": "Nu au fost găsite date despre prețuri pentru această piesă",
"@noPricingDataFound": {},
"noSubcategories": "Nu există subcategorii",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Nicio subcategorie disponibilă",
@ -594,9 +630,9 @@
"@partsNone": {},
"partNoResults": "Nicio piesă care se potrivește",
"@partNoResults": {},
"partPricing": "Part Pricing",
"partPricing": "Preț piesă",
"@partPricing": {},
"partPricingSettingDetail": "Display part pricing information",
"partPricingSettingDetail": "Afișați informații despre preț",
"@pricingSettingDetail": {},
"partSettings": "Setări Piesa",
"@partSettings": {},
@ -624,11 +660,13 @@
"@password": {},
"passwordEmpty": "Câmpul pentru Parola nu poate fi gol",
"@passwordEmpty": {},
"pending": "În așteptare",
"@pending": {},
"permissionAccountDenied": "Contul dvs. nu are permisiunile necesare pentru a efectua această acțiune",
"@permissionAccountDenied": {},
"permissionRequired": "Permisiune necesară",
"@permissionRequired": {},
"phone": "Phone",
"phone": "Telefon",
"@phone": {},
"printLabel": "Printati Eticheta",
"@printLabel": {},
@ -646,506 +684,524 @@
"@printLabelSuccess": {},
"profile": "Profiluri",
"@profile": {},
"profileAdd": "Add Server Profile",
"profileAdd": "Adaugă Profil Server",
"@profileAdd": {},
"profileConnect": "Connect to Server",
"profileConnect": "Conectare la server",
"@profileConnect": {},
"profileEdit": "Edit Server Profile",
"profileEdit": "Editează Profilul Serverului",
"@profileEdit": {},
"profileDelete": "Delete Server Profile",
"profileDelete": "Ștergere profil server",
"@profileDelete": {},
"profileLogout": "Logout Profile",
"profileLogout": "Deconectare profil",
"@profileLogout": {},
"profileName": "Profile Name",
"profileName": "Nume profil",
"@profileName": {},
"profileNone": "No profiles available",
"profileNone": "Nici un profil disponibil",
"@profileNone": {},
"profileNotSelected": "No Profile Selected",
"profileNotSelected": "Nici un profil selectat",
"@profileNotSelected": {},
"profileSelect": "Select InvenTree Server",
"profileSelect": "Selectați serverul InvenTree",
"@profileSelect": {},
"profileSelectOrCreate": "Select server or create a new profile",
"profileSelectOrCreate": "Selectează server sau creează un profil nou",
"@profileSelectOrCreate": {},
"profileTapToCreate": "Tap to create or select a profile",
"profileTapToCreate": "Atingeți pentru a crea sau a selecta un profil",
"@profileTapToCreate": {},
"projectCode": "Project Code",
"projectCode": "Cod proiect",
"@projectCode": {},
"purchaseOrderConfirmScan": "Confirm Scan Data",
"purchaseOrderConfirmScan": "Confirmați datele scanate",
"@purchaseOrderConfirmScan": {},
"purchaseOrderConfirmScanDetail": "Confirm details when scanning in items",
"purchaseOrderConfirmScanDetail": "Confirmați detaliile la scanarea articolelor",
"@purchaseOrderConfirmScanDetail": {},
"purchaseOrderEnable": "Enable Purchase Orders",
"purchaseOrderEnable": "Activați comenzile de achiziție",
"@purchaseOrderEnable": {},
"purchaseOrderEnableDetail": "Enable purchase order functionality",
"purchaseOrderEnableDetail": "Activează funcționalitatea comenzii de achiziție",
"@purchaseOrderEnableDetail": {},
"purchaseOrderShowCamera": "Camera Shortcut",
"purchaseOrderShowCamera": "Scurtătura Cameră",
"@purchaseOrderShowCamera": {},
"purchaseOrderShowCameraDetail": "Enable image upload shortcut on purchase order screen",
"purchaseOrderShowCameraDetail": "Activează comanda rapidă pentru încărcarea imaginilor pe ecranul comenzii de achiziție",
"@purchaseOrderShowCameraDetail": {},
"purchaseOrder": "Purchase Order",
"purchaseOrder": "Comandă de achiziție",
"@purchaseOrder": {},
"purchaseOrderCreate": "New Purchase Order",
"purchaseOrderCreate": "Comandă nouă de achiziție",
"@purchaseOrderCreate": {},
"purchaseOrderEdit": "Edit Purchase Order",
"purchaseOrderEdit": "Editați comanda de achiziție",
"@purchaseOrderEdit": {},
"purchaseOrderSettings": "Purchase order settings",
"purchaseOrderSettings": "Setări comandă de achiziție",
"@purchaseOrderSettings": {},
"purchaseOrders": "Purchase Orders",
"purchaseOrders": "Comandă de achiziție",
"@purchaseOrders": {},
"purchaseOrderUpdated": "Purchase order updated",
"purchaseOrderUpdated": "Comandă de achiziție actualizată",
"@purchaseOrderUpdated": {},
"purchasePrice": "Purchase Price",
"purchasePrice": "Preț achiziție",
"@purchasePrice": {},
"quantity": "Quantity",
"quantity": "Cantitate",
"@quantity": {
"description": "Quantity"
},
"quantityAvailable": "Quantity Available",
"quantityAvailable": "Cantitate disponibilă",
"@quantityAvailable": {},
"quantityEmpty": "Quantity is empty",
"quantityEmpty": "Cantitatea este goală",
"@quantityEmpty": {},
"quantityInvalid": "Quantity is invalid",
"quantityInvalid": "Cantitate invalida",
"@quantityInvalid": {},
"quantityPositive": "Quantity must be positive",
"quantityPositive": "Cantitatea trebuie să fie pozitivă",
"@quantityPositive": {},
"queryEmpty": "Enter search query",
"queryEmpty": "Introdu text căutat",
"@queryEmpty": {},
"queryNoResults": "No results for query",
"queryNoResults": "Nici un rezultat pentru cautare",
"@queryNoResults": {},
"received": "Received",
"received": "Recepţionat",
"@received": {},
"receivedFilterDetail": "Show received items",
"receivedFilterDetail": "Afișare articole primite",
"@receivedFilterDetail": {},
"receiveItem": "Receive Item",
"receiveItem": "Articole primite",
"@receiveItem": {},
"receivedItem": "Received Stock Item",
"receivedItem": "Articol primit în stoc",
"@receivedItem": {},
"reference": "Reference",
"reference": "Referinţă",
"@reference": {},
"refresh": "Refresh",
"refresh": "Actualizare",
"@refresh": {},
"rotateClockwise": "Rotate 90° clockwise",
"rotateClockwise": "Rotire la 90° în sens orar",
"@rotateClockwise": {},
"refreshing": "Refreshing",
"refreshing": "Actualizare",
"@refreshing": {},
"rejected": "Rejected",
"rejected": "Respins",
"@rejected": {},
"releaseNotes": "Release Notes",
"releaseNotes": "Informații & versiune",
"@releaseNotes": {},
"remove": "Remove",
"remove": "Șterge",
"@remove": {
"description": "remove"
},
"removeStock": "Remove Stock",
"removeStock": "Retragere stoc",
"@removeStock": {
"description": "remove stock"
},
"reportBug": "Report Bug",
"reportBug": "Raportează o eroare",
"@reportBug": {},
"reportBugDescription": "Submit bug report (requires GitHub account)",
"reportBugDescription": "Trimite raportul de eroare (necesită cont GitHub)",
"@reportBugDescription": {},
"responsible": "Responsabil",
"@responsible": {},
"results": "Results",
"results": "Rezultate",
"@results": {},
"request": "Request",
"request": "Solicitare",
"@request": {},
"requestFailed": "Cerere eșuată",
"@requestFailed": {},
"requestSuccessful": "",
"@requestSuccessful": {},
"requestingData": "Requesting Data",
"requestingData": "Solicitare date",
"@requestingData": {},
"required": "Required",
"required": "Obligatoriu",
"@required": {
"description": "This field is required"
},
"response400": "Bad Request",
"response400": "Cerere greşită",
"@response400": {},
"response401": "Unauthorized",
"response401": "Neautorizat",
"@response401": {},
"response403": "Permission Denied",
"response403": "Acces interzis",
"@response403": {},
"response404": "Resource Not Found",
"response404": "Resursa nu a fost găsită",
"@response404": {},
"response405": "Method Not Allowed",
"response405": "Metoda nu este permisă",
"@response405": {},
"response429": "Too Many Requests",
"response429": "Prea multe solicitări",
"@response429": {},
"response500": "Internal Server Error",
"response500": "Eroare internă server",
"@response500": {},
"response501": "Not Implemented",
"response501": "Nu este implementat",
"@response501": {},
"response502": "Bad Gateway",
"response502": "Gateway greșit",
"@response502": {},
"response503": "Service Unavailable",
"response503": "Serviciu indisponibil",
"@response503": {},
"response504": "Gateway Timeout",
"response504": "Timeout gateway",
"@response504": {},
"response505": "HTTP Version Not Supported",
"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": "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": {},
"shipments": "Shipments",
"shipment": "Expediere",
"@shipment": {},
"shipments": "Livrări",
"@shipments": {},
"shipmentAdd": "Add Shipment",
"shipmentsPending": "Livrări în așteptare",
"@shipmentsPending": {},
"shipmentAdd": "Adaugă livrare",
"@shipmentAdd": {},
"shipped": "Shipped",
"shipmentCheck": "Verifica livrare",
"@shipmentCheck": {},
"shipmentCheckDetail": "Marchează livrarea ca verificată",
"@shipmentCheckDetail": {},
"shipmentChecked": "Livrare verificată",
"@shipmentChecked": {},
"shipmentDate": "Data livrării",
"@shipmentDate": {},
"shipmentEdit": "Editare livrare",
"@shipmentEdit": {},
"shipmentReference": "Referință livrare",
"@shipmentReference": {},
"shipmentSend": "Livrare Trimisa",
"@shipmentSend": {},
"shipmentUncheck": "Debifează livrare",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Marchează livrarea ca nebifat",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Livrare actualizată",
"@shipmentUpdated": {},
"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": "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": "Username",
"username": "Nume utilizator",
"@username": {},
"usernameEmpty": "Username cannot be empty",
"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": {},
"price": "Price",
"yes": "Da",
"@yes": {},
"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": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"priceBreaks": "Reduceri de preț",
"@priceBreaks": {}
}

View file

@ -42,10 +42,12 @@
"@aspectRatio3x2": {},
"aspectRatio4x3": "4:3",
"@aspectRatio4x3": {},
"aspectRatioSquare": "Square (1:1)",
"aspectRatioSquare": "Квадрат (1:1)",
"@aspectRatioSquare": {},
"allocateStock": "Выделить запас",
"@allocateStock": {},
"allocatedStock": "Зарезервированные остатки",
"@allocatedStock": {},
"appReleaseNotes": "Показать заметки о выпуске приложения",
"@appReleaseNotes": {},
"appSettings": "Настройки приложения",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Сканирование штрих-кода приостановлено",
"@barodeScanPaused": {},
"barcodeScanPause": "Нажмите или удерживайте, чтобы приостановить сканирование",
"barcodeScanPause": "Нажмите, чтобы приостановить сканирование",
"@barcodeScanPause": {},
"barcodeScanAssign": "Сканировать для присвоения штрих-кода",
"@barcodeScanAssign": {},
@ -178,9 +180,13 @@
"@companyUpdated": {},
"companies": "Компании",
"@companies": {},
"complete": "Завершить",
"@complete": {},
"completeOrder": "Завершить заказ",
"@completeOrder": {},
"completionDate": "Дата завершения",
"@completionDate": {},
"configureServer": "Настройка параметров сервера",
"configureServer": "Изменить параметры сервера",
"@configureServer": {},
"confirmScan": "Подтвердить перенос",
"@confirmScan": {},
@ -198,9 +204,9 @@
},
"credits": "Авторы",
"@credits": {},
"crop": "Crop",
"crop": "Обрезать",
"@crop": {},
"cropImage": "Crop Image",
"cropImage": "Обрезать изображение",
"@cropImage": {},
"customer": "Клиент",
"@customer": {},
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Ошибка удаления",
"@deleteFailed": {},
"deleteImageConfirmation": "Вы уверены, что хотите удалить изображение?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Удалить изображение",
"@deleteImageTooltip": {},
"deleteImage": "Удалить изображение",
"@deleteImage": {},
"deletePart": "Удалить деталь",
"@deletePart": {},
"deletePartDetail": "Удалить эту деталь из базы данных",
"@deletePartDetail": {},
"deleteSuccess": "Удаление успешно завершено",
"@deleteSuccess": {},
"deliveryDate": "Дата доставки",
"@deliveryDate": {},
"description": "Описание",
"@description": {},
"destination": "Назначение",
@ -240,9 +254,9 @@
},
"documentation": "Документация",
"@documentation": {},
"downloadComplete": "Download Complete",
"downloadComplete": "Загрузка завершена",
"@downloadComplete": {},
"downloadError": "Error downloading image",
"downloadError": "Ошибка загрузки изображения",
"@downloadError": {},
"downloading": "Загрузка файла",
"@downloading": {},
@ -268,7 +282,7 @@
"@editItem": {},
"editLineItem": "Изменить позицию",
"@editLineItem": {},
"email": "Email",
"email": "Электронная почта",
"@email": {},
"enterPassword": "Введите пароль",
"@enterPassword": {},
@ -322,11 +336,11 @@
"@filterAssemblyDetail": {},
"filterComponent": "Компонент",
"@filterComponent": {},
"filterComponentDetail": "Показывать части компонента",
"filterComponentDetail": "Показать части компонента",
"@filterComponentDetail": {},
"filterExternal": "Внешний",
"@filterExternal": {},
"filterExternalDetail": "Показывать запасы во внешних местах",
"filterExternalDetail": "Показать запасы во внешних местах",
"@filterExternalDetail": {},
"filterInStock": "В наличии",
"@filterInStock": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Показывать кнопку заказа на главном экране",
"@homeShowPoDescription": {},
"homeShowShipments": "Показать отгрузки",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Показывать ожидающие отгрузки на главном экране",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Показать заказы на продажу",
"@homeShowSo": {},
"homeShowSoDescription": "Показывать кнопку заказов на продажу на главном экране",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Неверная комбинация имени пользователя и пароля",
"@invalidUsernamePassword": {},
"invoice": "Счет",
"@invoice": {},
"invoiceNumber": "Номер счета",
"@invoiceNumber": {},
"issue": "Оформить",
"@issue": {},
"issueDate": "Дата проблемы",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Ключевые слова",
"@keywords": {},
"labelDriver": "Драйвер принтера этикеток",
"@labelDriver": {},
"labelSelectDriver": "Выберите драйвер принтера этикеток",
"@labelSelectDriver": {},
"labelPrinting": "Печать этикеток",
"@labelPrinting": {},
"labelPrintingDetail": "Включить печать этикеток",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Создать новое расположение склада",
"@locationCreateDetail": {},
"locationDefault": "Расположение по умолчанию",
"@locationDefault": {},
"locationNotSet": "Не указано месторасположение",
"@locationNotSet": {},
"locationUpdated": "Расположение склада обновлено",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Название",
"@name": {},
"no": "Нет",
"@no": {},
"notApplicable": "Н/Д",
"@notApplicable": {},
"notConnected": "Соединение не установлено",
"@notConnected": {},
"notes": "Заметки",
@ -530,8 +562,12 @@
"@noResponse": {},
"noResults": "Нет результатов",
"@noResults": {},
"noImageAvailable": "No image available",
"noImageAvailable": "Нет доступного изображения",
"@noImageAvailable": {},
"noPricingAvailable": "Нет данных о цене",
"@noPricingAvailable": {},
"noPricingDataFound": "Для этой детали не найдены данные о ценах",
"@noPricingDataFound": {},
"noSubcategories": "Нет подкатегории",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Нет доступных подкатегорий",
@ -624,11 +660,13 @@
"@password": {},
"passwordEmpty": "Пароль не может быть пустым",
"@passwordEmpty": {},
"pending": "В обработке",
"@pending": {},
"permissionAccountDenied": "Ваш аккаунт не имеет разрешения на выполнение этого действия",
"@permissionAccountDenied": {},
"permissionRequired": "Требуется разрешение",
"@permissionRequired": {},
"phone": "Phone",
"phone": "Телефон",
"@phone": {},
"printLabel": "Печать этикетки",
"@printLabel": {},
@ -724,7 +762,7 @@
"@reference": {},
"refresh": "Обновить",
"@refresh": {},
"rotateClockwise": "Rotate 90° clockwise",
"rotateClockwise": "Повернуть на 90° по часовой стрелке",
"@rotateClockwise": {},
"refreshing": "Обновление…",
"@refreshing": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Сервер не выбран",
"@serverNotSelected": {},
"shipment": "Отгрузка",
"@shipment": {},
"shipments": "Поставки",
"@shipments": {},
"shipmentsPending": "Ожидающие отгрузки",
"@shipmentsPending": {},
"shipmentAdd": "Новое Отправление",
"@shipmentAdd": {},
"shipmentCheck": "Проверить отгрузку",
"@shipmentCheck": {},
"shipmentCheckDetail": "Отметить этот груз как проверенный",
"@shipmentCheckDetail": {},
"shipmentChecked": "Отгрузка проверена",
"@shipmentChecked": {},
"shipmentDate": "Дата отгрузки",
"@shipmentDate": {},
"shipmentEdit": "Редактировать отгрузку",
"@shipmentEdit": {},
"shipmentReference": "Ссылка на отгрузку",
"@shipmentReference": {},
"shipmentSend": "Отправить отгрузку",
"@shipmentSend": {},
"shipmentUncheck": "Снять отметку с отгрузки",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Отметить этот груз как непроверенный",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Отгрузка обновлена",
"@shipmentUpdated": {},
"shipped": "Отгружено",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Общая стоимость",
"@totalPrice": {},
"trackingNumber": "Номер отслеживания",
"@trackingNumber": {},
"transfer": "Перемещение",
"@transfer": {
"description": "transfer"
@ -1084,7 +1148,7 @@
"@uploadFailed": {},
"uploadSuccess": "Файл загружен",
"@uploadSuccess": {},
"uploadImage": "Upload Image",
"uploadImage": "Загрузить изображение",
"@uploadImage": {},
"usedIn": "Используется в",
"@usedIn": {},
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Сайт",
"@website": {},
"yes": "Да",
"@yes": {},
"price": "Цена",
"@price": {},
"priceRange": "Диапазон цен",
@ -1137,15 +1203,5 @@
"currency": "Валюта",
"@currency": {},
"priceBreaks": "Разбивка по ценам",
"@priceBreaks": {},
"noPricingAvailable": "Нет данных о цене",
"@noPricingAvailable": {},
"noPricingDataFound": "Для этой детали не найдены данные о ценах",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Allocate Stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Display app release notes",
"@appReleaseNotes": {},
"appSettings": "App Settings",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Companies",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Configure server settings",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Delete Part",
"@deletePart": {},
"deletePartDetail": "Remove this part from the database",
"@deletePartDetail": {},
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Description",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Keywords",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Notes",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Allocate Stock",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Display app release notes",
"@appReleaseNotes": {},
"appSettings": "App Settings",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scanning paused",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Companies",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Configure server settings",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Delete Part",
"@deletePart": {},
"deletePartDetail": "Remove this part from the database",
"@deletePartDetail": {},
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Description",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Keywords",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Notes",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Alociraj zalihe",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Prikaži informacije o aplikaciji",
"@appReleaseNotes": {},
"appSettings": "Podešavanja aplikacije",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Pauzirano skeniranje bar kodova",
"@barodeScanPaused": {},
"barcodeScanPause": "Pritisni ili drži za pauzu skeniranja",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Skeniraj za dodelu bar koda",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Kompanije",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Konfiguriši podešavanja servera",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Neuspešna operacija brisanja",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Obriši deo",
"@deletePart": {},
"deletePartDetail": "Ukloni ovaj deo iz baze podataka",
"@deletePartDetail": {},
"deleteSuccess": "Operacija brisanja uspešna",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Opis",
"@description": {},
"destination": "Odredište",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Datum izdavanja",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Ključne reči",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Štampanje natpisa",
"@labelPrinting": {},
"labelPrintingDetail": "Omogući štampanje natpisa",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Kreiraj novu lokaciju zaliha",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "Nema određene lokacije",
"@locationNotSet": {},
"locationUpdated": "Ažurirana lokacija zaliha",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Ime",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Nije povezano",
"@notConnected": {},
"notes": "Beleške",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "Nema podkategorija",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Nema dostupnih podkategorija",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -42,10 +42,12 @@
"@aspectRatio3x2": {},
"aspectRatio4x3": "4:3",
"@aspectRatio4x3": {},
"aspectRatioSquare": "Square (1:1)",
"aspectRatioSquare": "Kvadrat (1:1)",
"@aspectRatioSquare": {},
"allocateStock": "Allokera lager",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Visa versionsinfo för app",
"@appReleaseNotes": {},
"appSettings": "Appinställningar",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Streckkodsskanning pausad",
"@barodeScanPaused": {},
"barcodeScanPause": "Tryck eller håll ned för att pausa skanning",
"barcodeScanPause": "Tryck för att pausa skanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Skanna för att tilldela streckkod",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Företag",
"@companies": {},
"complete": "Slutförd",
"@complete": {},
"completeOrder": "Slutför Order",
"@completeOrder": {},
"completionDate": "Datum slutfört",
"@completionDate": {},
"configureServer": "Konfigurera serverinställningar",
@ -198,9 +204,9 @@
},
"credits": "Krediter",
"@credits": {},
"crop": "Crop",
"crop": "Beskär",
"@crop": {},
"cropImage": "Crop Image",
"cropImage": "Beskär Bild",
"@cropImage": {},
"customer": "Kund",
"@customer": {},
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Borttagning misslyckades",
"@deleteFailed": {},
"deleteImageConfirmation": "Är du säker på att du vill radera denna bild?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Radera bild",
"@deleteImageTooltip": {},
"deleteImage": "Radera bild",
"@deleteImage": {},
"deletePart": "Ta bort del",
"@deletePart": {},
"deletePartDetail": "Ta bort denna del från databasen",
"@deletePartDetail": {},
"deleteSuccess": "Borttagning lyckad",
"@deleteSuccess": {},
"deliveryDate": "Leveransdatum",
"@deliveryDate": {},
"description": "Beskrivning",
"@description": {},
"destination": "Destination",
@ -240,9 +254,9 @@
},
"documentation": "Dokumentation",
"@documentation": {},
"downloadComplete": "Download Complete",
"downloadComplete": "Nedladdning klar",
"@downloadComplete": {},
"downloadError": "Error downloading image",
"downloadError": "Fel vid nedladdning av bild",
"@downloadError": {},
"downloading": "Laddar ner fil",
"@downloading": {},
@ -268,7 +282,7 @@
"@editItem": {},
"editLineItem": "Redigera radobjekt",
"@editLineItem": {},
"email": "Email",
"email": "E-post",
"@email": {},
"enterPassword": "Ange lösenord",
"@enterPassword": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Visa knappen för inköpsorder på startskärmen",
"@homeShowPoDescription": {},
"homeShowShipments": "Visa leveranser",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Visa väntande leveranser på startskärmen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Visa försäljningsorder",
"@homeShowSo": {},
"homeShowSoDescription": "Visa knappen för försäljningsorder på startskärmen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Felaktigt användarnamn / lösenord kombination",
"@invalidUsernamePassword": {},
"invoice": "Faktura",
"@invoice": {},
"invoiceNumber": "Fakturanummer",
"@invoiceNumber": {},
"issue": "Ärende",
"@issue": {},
"issueDate": "Utfärdad datum",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Nyckelord",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Utskrift av etiketter",
"@labelPrinting": {},
"labelPrintingDetail": "Aktivera etikettutskrift",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Skapa ny lagerplats",
"@locationCreateDetail": {},
"locationDefault": "Förvald plats",
"@locationDefault": {},
"locationNotSet": "Ingen plats specificerad",
"@locationNotSet": {},
"locationUpdated": "Lagerplatsen uppdaterad",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Namn",
"@name": {},
"no": "Nej",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Ej ansluten",
"@notConnected": {},
"notes": "Anteckningar",
@ -530,8 +562,12 @@
"@noResponse": {},
"noResults": "Inga resultat",
"@noResults": {},
"noImageAvailable": "No image available",
"noImageAvailable": "Ingen bild tillgänglig",
"@noImageAvailable": {},
"noPricingAvailable": "Ingen prisinformation tillgänglig",
"@noPricingAvailable": {},
"noPricingDataFound": "Inga prisuppgifter hittades för denna artikel",
"@noPricingDataFound": {},
"noSubcategories": "Inga underkategorier",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Inga underkategorier tillgängliga",
@ -594,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": {},
@ -624,11 +660,13 @@
"@password": {},
"passwordEmpty": "Lösenordet får inte vara tomt",
"@passwordEmpty": {},
"pending": "Väntande",
"@pending": {},
"permissionAccountDenied": "Ditt konto har inte de rättigheter som krävs för att utföra denna åtgärd",
"@permissionAccountDenied": {},
"permissionRequired": "Särskilda behörigheter krävs",
"@permissionRequired": {},
"phone": "Phone",
"phone": "Telefon",
"@phone": {},
"printLabel": "Skriv ut etikett",
"@printLabel": {},
@ -724,7 +762,7 @@
"@reference": {},
"refresh": "Uppdatera",
"@refresh": {},
"rotateClockwise": "Rotate 90° clockwise",
"rotateClockwise": "Rotera 90° medurs",
"@rotateClockwise": {},
"refreshing": "Uppdaterar",
"@refreshing": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Servern är inte vald",
"@serverNotSelected": {},
"shipment": "Försändelse",
"@shipment": {},
"shipments": "Frakt",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Lägg till frakt",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Leveransdatum",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Skickad",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Totalpris",
"@totalPrice": {},
"trackingNumber": "Sändningsnummer",
"@trackingNumber": {},
"transfer": "Överföring",
"@transfer": {
"description": "transfer"
@ -1084,7 +1148,7 @@
"@uploadFailed": {},
"uploadSuccess": "Fil har laddats upp",
"@uploadSuccess": {},
"uploadImage": "Upload Image",
"uploadImage": "Ladda upp bild",
"@uploadImage": {},
"usedIn": "Används i",
"@usedIn": {},
@ -1110,19 +1174,21 @@
"@viewSupplierPart": {},
"website": "Webbplats",
"@website": {},
"price": "Price",
"yes": "Ja",
"@yes": {},
"price": "Pris",
"@price": {},
"priceRange": "Price Range",
"priceRange": "Prisintervall",
"@priceRange": {},
"priceOverrideMin": "Minimum Price Override",
"@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": {},
@ -1134,18 +1200,8 @@
"@overallPricing": {},
"pricingOverrides": "Pricing Overrides",
"@pricingOverrides": {},
"currency": "Currency",
"currency": "Valuta",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "จัดสรรคลัง",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "แสดงข้อมูลรุ่นของโปรแกรม",
"@appReleaseNotes": {},
"appSettings": "การตั้งค่าแอปพลิเคชั่น",
@ -86,7 +88,7 @@
"@barcodeAssigned": {},
"barcodeError": "สแกนบาร์โค้ดผิดพลาด",
"@barcodeError": {},
"barcodeInUse": "Barcode already assigned",
"barcodeInUse": "",
"@barcodeInUse": {},
"barcodeMissingHash": "Barcode hash data missing from response",
"@barcodeMissingHash": {},
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "หยุดการสแกนบาร์โค้ด",
"@barodeScanPaused": {},
"barcodeScanPause": "Tap or hold to pause scanning",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Scan to assign barcode",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Companies",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Configure server settings",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Delete operation failed",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Delete Part",
"@deletePart": {},
"deletePartDetail": "Remove this part from the database",
"@deletePartDetail": {},
"deleteSuccess": "Delete operation successful",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Description",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Show purchase order button on home screen",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Show Sales Orders",
"@homeShowSo": {},
"homeShowSoDescription": "Show sales order button on home screen",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Invalid username / password combination",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Issue",
"@issue": {},
"issueDate": "Issue Date",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "Keywords",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "Label Printing",
"@labelPrinting": {},
"labelPrintingDetail": "Enable label printing",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Create new stock location",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "No location specified",
"@locationNotSet": {},
"locationUpdated": "Stock location updated",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Name",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Not Connected",
"@notConnected": {},
"notes": "Notes",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "No Subcategories",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Password cannot be empty",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Your account does not have the required permissions to perform this action",
"@permissionAccountDenied": {},
"permissionRequired": "Permission Required",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Shipped",
"@shipped": {},
"sku": "SKU",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -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,9 +44,11 @@
"@aspectRatio4x3": {},
"aspectRatioSquare": "Kare (1:1)",
"@aspectRatioSquare": {},
"allocateStock": "Tahsisli stok",
"allocateStock": "Stoku Tahsis Et",
"@allocateStock": {},
"appReleaseNotes": "Uygulama yayınlama notlarını göster",
"allocatedStock": "Tahsis Edilen Stok",
"@allocatedStock": {},
"appReleaseNotes": "Uygulama yayınlama notlarını görüntüle",
"@appReleaseNotes": {},
"appSettings": "Uygulama Ayarları",
"@appSettings": {},
@ -58,7 +60,7 @@
"@assignedToMeDetail": {},
"attachments": "Ekler",
"@attachments": {},
"attachImage": "Resim ekle",
"attachImage": "Görsel Ekle",
"@attachImage": {
"description": "Attach an image"
},
@ -96,11 +98,11 @@
"@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": {},
"barcodeScanPause": "Taramayı duraklatmak için dokunun veya basılı tutun",
"barcodeScanPause": "Taramayı duraklatmak için dokunun",
"@barcodeScanPause": {},
"barcodeScanAssign": "Atanmış barkodu tara",
"@barcodeScanAssign": {},
@ -114,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": {},
@ -126,7 +128,7 @@
"@barcodeScanIntoLocationSuccess": {},
"barcodeScanIntoLocationFailure": "Madde taranmış değil",
"@barcodeScanIntoLocationFailure": {},
"barcodeScanItem": "Stok öğesi tara",
"barcodeScanItem": "Stok kalemi tara",
"@barcodeScanItem": {},
"barcodeTones": "Barkod Tonları",
"@barcodeTones": {},
@ -136,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": "Oluştur",
"build": "Üret",
"@build": {},
"building": "Oluşturma",
"building": "Üretiliyor",
"@building": {},
"cameraCreationError": "Kamera Kontrolcüsü Açılamadı",
"@cameraCreationError": {},
@ -174,10 +176,14 @@
"@companyEdit": {},
"companyNoResults": "Sorguyla eşleşen şirket yok",
"@companyNoResults": {},
"companyUpdated": "Firma bilgileri güncellendi",
"companyUpdated": "Şirket bilgileri güncellendi",
"@companyUpdated": {},
"companies": "Şirketler",
"@companies": {},
"complete": "Tamamlandı",
"@complete": {},
"completeOrder": "Siparişi Tamamla",
"@completeOrder": {},
"completionDate": "Tamamlanma Tarihi",
"@completionDate": {},
"configureServer": "Sunucu ayarlarınızı yapılandırın",
@ -200,7 +206,7 @@
"@credits": {},
"crop": "Kırp",
"@crop": {},
"cropImage": "Resmi Kırp",
"cropImage": "Görseli Kırp",
"@cropImage": {},
"customer": "Müşteri",
"@customer": {},
@ -222,19 +228,27 @@
"@delete": {},
"deleteFailed": "Silme işlemi başarısız",
"@deleteFailed": {},
"deleteImageConfirmation": "Bu görseli silmek istediğinize emin misiniz?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Görseli Sil",
"@deleteImageTooltip": {},
"deleteImage": "Görseli sil",
"@deleteImage": {},
"deletePart": "Parça Sil",
"@deletePart": {},
"deletePartDetail": "Bu parçayı veritabanından kaldır",
"@deletePartDetail": {},
"deleteSuccess": "Silme işlemi başarılı",
"@deleteSuccess": {},
"deliveryDate": "Teslim Tarihi",
"@deliveryDate": {},
"description": "Açıklama",
"@description": {},
"destination": "Varış Yeri",
"destination": "Hedef",
"@destination": {},
"destroyed": "Yok edildi",
"@destroyed": {},
"details": "Detaylar",
"details": "Ayrıntılar",
"@details": {
"description": "details"
},
@ -264,9 +278,9 @@
"@editPart": {
"description": "edit part"
},
"editItem": "Parçayı Düzenle",
"editItem": "Stok kalemi düzenle",
"@editItem": {},
"editLineItem": "Satır Ögesini Düzenle",
"editLineItem": "Satırı Düzenle",
"@editLineItem": {},
"email": "E-posta",
"@email": {},
@ -302,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": {},
@ -334,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": {},
@ -370,13 +384,17 @@
"@homeShowPo": {},
"homeShowPoDescription": "Satınalma sipariş butonunu ana ekranda göster",
"@homeShowPoDescription": {},
"homeShowShipments": "Teslimatları Göster",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Bekleyen teslimatları ana ekranda göster",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Satış Siparişlerini Göster",
"@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": {},
@ -390,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 inaktif olarak imlendi",
"inactiveCompany": "Bu şirket pasif olarak işaretlendi",
"@inactiveCompany": {},
"inactiveDetail": "Bu parça pasif olarak işaretlendi",
"@inactiveDetail": {},
@ -414,9 +432,9 @@
"@internalPartNumber": {},
"info": "Bilgi",
"@info": {},
"inProduction": "Yapım Aşamasında",
"inProduction": "Üretimde",
"@inProduction": {},
"inProductionDetail": "Bu ürün üretim aşamasında",
"inProductionDetail": "Bu stok kalemi üretimdedir",
"@inProductionDetail": {},
"internalPart": "İç Parça",
"@internalPart": {},
@ -430,17 +448,21 @@
"@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": {},
"invalidUsernamePassword": "Geçersiz kullanıcı adı ve şifre",
"@invalidUsernamePassword": {},
"invoice": "Fatura",
"@invoice": {},
"invoiceNumber": "Fatura Numarası",
"@invoiceNumber": {},
"issue": "Sorun",
"@issue": {},
"issueDate": "Sorun Tarihi",
"@issueDate": {},
"issueOrder": "Sipariş Ver",
"issueOrder": "Sipariş Düzenle",
"@issueOrder": {},
"itemInLocation": "Parça zaten konumda",
"@itemInLocation": {},
@ -450,9 +472,13 @@
"@itemUpdated": {},
"keywords": "Anahtar kelimeler",
"@keywords": {},
"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": {},
@ -466,21 +492,21 @@
"@languageDefault": {},
"languageSelect": "Dil Seçin",
"@languageSelect": {},
"lastStocktake": "Son stok tutma",
"lastStocktake": "Son Stok Sayımı",
"@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 ögesi bul",
"locateItem": "Stok kalemi bul",
"@locateItem": {},
"locateLocation": "Stok konumu bul",
"@locateLocation": {},
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Yeni stok konumu oluştur",
"@locationCreateDetail": {},
"locationDefault": "Varsayılan Konum",
"@locationDefault": {},
"locationNotSet": "Belirtilmiş konum yok",
"@locationNotSet": {},
"locationUpdated": "Stok lokasyonu güncellendi",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Adı",
"@name": {},
"no": "Hayır",
"@no": {},
"notApplicable": "Yok / Geçerli Değil",
"@notApplicable": {},
"notConnected": "Bağlı değil",
"@notConnected": {},
"notes": "Notlar",
@ -530,8 +562,12 @@
"@noResponse": {},
"noResults": "Sonuç Yok",
"@noResults": {},
"noImageAvailable": "Kullanılabilir resim yok",
"noImageAvailable": "Görsel yok",
"@noImageAvailable": {},
"noPricingAvailable": "Fiyatlandırma mevcut değil",
"@noPricingAvailable": {},
"noPricingDataFound": "Bu parça için fiyatlandırma verisi bulunamadı",
"@noPricingDataFound": {},
"noSubcategories": "Alt kategori yok",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Uygun alt kategori yok",
@ -552,9 +588,9 @@
"@orientationPortrait": {},
"orientationSystem": "Sistem",
"@orientationSystem": {},
"outstanding": "Beklemede",
"outstanding": "ık",
"@outstanding": {},
"outstandingOrderDetail": "Bekleyen siparişleri göster",
"outstandingOrderDetail": "ık siparişleri göster",
"@outstandingOrderDetail": {},
"overdue": "Gecikmede",
"@overdue": {},
@ -566,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": {},
@ -588,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": {},
@ -600,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": {},
@ -612,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": {},
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Parola boş bırakılamaz",
"@passwordEmpty": {},
"pending": "Beklemede",
"@pending": {},
"permissionAccountDenied": "Bu eylemi gerçekleştirmek için gerekli yetkiye sahip değilsiniz",
"@permissionAccountDenied": {},
"permissionRequired": "İzin Gerekli",
@ -672,15 +710,15 @@
"@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 Emirlerini Etkinleştir",
"purchaseOrderEnable": "Satın Alma Siparişlerini Etkinleştir",
"@purchaseOrderEnable": {},
"purchaseOrderEnableDetail": "Satın Alma Emirlerinin İşlevselliğini Etkinleştir",
"@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": {},
@ -690,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": {},
@ -712,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 parçaları",
"receivedItem": "Teslim alınan stok kalemleri",
"@receivedItem": {},
"reference": "Referans",
"@reference": {},
@ -800,13 +838,13 @@
"@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": {},
"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": {},
@ -822,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": {},
@ -832,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": {
@ -850,7 +888,7 @@
"@select": {},
"selectFile": "Dosya Seç",
"@selectFile": {},
"selectImage": "Resim Seç",
"selectImage": "Görsel Seç",
"@selectImage": {},
"selectLocation": "Bir yer seçin",
"@selectLocation": {},
@ -884,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": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Sunucu bulunamadı",
"@serverNotSelected": {},
"shipment": "Teslimat",
"@shipment": {},
"shipments": "Gönderiler",
"@shipments": {},
"shipmentsPending": "Bekleyen Teslimatlar",
"@shipmentsPending": {},
"shipmentAdd": "Gönderi Ekle",
"@shipmentAdd": {},
"shipmentCheck": "Sevkiyatı Kontrol Et",
"@shipmentCheck": {},
"shipmentCheckDetail": "Bu sevkiyatı kontrol edildi olarak işaretle",
"@shipmentCheckDetail": {},
"shipmentChecked": "Sevkiyat Kontrol Edildi",
"@shipmentChecked": {},
"shipmentDate": "Teslimat Tarihi",
"@shipmentDate": {},
"shipmentEdit": "Teslimatı Düzenle",
"@shipmentEdit": {},
"shipmentReference": "Teslimat Referansı",
"@shipmentReference": {},
"shipmentSend": "Teslimatı Gönder",
"@shipmentSend": {},
"shipmentUncheck": "Sevkiyat Kontrolünü Kaldır",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Bu teslimatı kontrol edilmedi olarak işaretle",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Teslimat Güncellendi",
"@shipmentUpdated": {},
"shipped": "Gönderildi",
"@shipped": {},
"sku": "SKU",
@ -936,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": {},
@ -994,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": {},
@ -1024,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": {},
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Toplam Fiyat",
"@totalPrice": {},
"trackingNumber": "Takip Numarası",
"@trackingNumber": {},
"transfer": "Aktarım",
"@transfer": {
"description": "transfer"
@ -1084,7 +1148,7 @@
"@uploadFailed": {},
"uploadSuccess": "Dosya yüklendi",
"@uploadSuccess": {},
"uploadImage": "Resim Yükleyin",
"uploadImage": "Görsel Yükle",
"@uploadImage": {},
"usedIn": "Burada Kullanıldı",
"@usedIn": {},
@ -1102,7 +1166,7 @@
"@valueCannotBeEmpty": {},
"valueRequired": "Değer gereklidir",
"@valueRequired": {},
"variants": "Türevler",
"variants": "Varyantlar",
"@variants": {},
"version": "Sürüm",
"@version": {},
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Web sitesi",
"@website": {},
"yes": "Evet",
"@yes": {},
"price": "Fiyat",
"@price": {},
"priceRange": "Fiyat Aralığı",
@ -1122,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": {},
@ -1136,16 +1202,6 @@
"@pricingOverrides": {},
"currency": "Para Birimi",
"@currency": {},
"priceBreaks": "Fiyat Aralığı",
"@priceBreaks": {},
"noPricingAvailable": "Fiyatlandırma mevcut değil",
"@noPricingAvailable": {},
"noPricingDataFound": "Bu parça için fiyatlandırma verisi bulunamadı",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Bu resmi silmek istediğinizden emin misiniz?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Görüntüyü Sil",
"@deleteImageTooltip": {},
"deleteImage": "Resmi sil",
"@deleteImage": {}
"priceBreaks": "Fiyat Kademeleri",
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Виділити запас",
"@allocateStock": {},
"allocatedStock": "Виділений Запас",
"@allocatedStock": {},
"appReleaseNotes": "Показати примітки до випуску",
"@appReleaseNotes": {},
"appSettings": "Налаштування додатку",
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Компанії",
"@companies": {},
"complete": "Завершити",
"@complete": {},
"completeOrder": "Завершити замовлення",
"@completeOrder": {},
"completionDate": "Дата завершення",
"@completionDate": {},
"configureServer": "Налаштування сервера",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Помилка видалення",
"@deleteFailed": {},
"deleteImageConfirmation": "Ви дійсно хочете видалити це зображення?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Видалити Зображення",
"@deleteImageTooltip": {},
"deleteImage": "Видалити Зображення",
"@deleteImage": {},
"deletePart": "Видалити деталь",
"@deletePart": {},
"deletePartDetail": "Видалити цю частину з бази даних",
"@deletePartDetail": {},
"deleteSuccess": "Операція видалення пройшла успішно",
"@deleteSuccess": {},
"deliveryDate": "Дата Доставки",
"@deliveryDate": {},
"description": "Опис",
"@description": {},
"destination": "Місце призначення",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Показувати кнопку замовлення на домашньому екрані",
"@homeShowPoDescription": {},
"homeShowShipments": "Показати відправлення",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Показати відкладені відправлення на головному екрані",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Показати замовлення",
"@homeShowSo": {},
"homeShowSoDescription": "Показувати кнопку замовлення на домашньому екрані",
@ -436,11 +454,15 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Неправильна комбінація імені користувача та пароля",
"@invalidUsernamePassword": {},
"issue": "Issue",
"invoice": "Інвойс",
"@invoice": {},
"invoiceNumber": "Номер Інвойсу",
"@invoiceNumber": {},
"issue": "Видача",
"@issue": {},
"issueDate": "Issue Date",
"issueDate": "Дата Видачі",
"@issueDate": {},
"issueOrder": "Issue Order",
"issueOrder": "Оформити Замовлення",
"@issueOrder": {},
"itemInLocation": "Товар вже на місці",
"@itemInLocation": {},
@ -450,15 +472,19 @@
"@itemUpdated": {},
"keywords": "Ключові слова",
"@keywords": {},
"labelDriver": "Драйвер Етикеток",
"@labelDriver": {},
"labelSelectDriver": "Вибрати Драйвер Принтера Етикеток",
"@labelSelectDriver": {},
"labelPrinting": "Друк Ярликів",
"@labelPrinting": {},
"labelPrintingDetail": "Увімкнути друк ярликів",
"@labelPrintingDetail": {},
"labelTemplate": "Шаблон Ярлика",
"@labelTemplate": {},
"labelSelectTemplate": "Select Label Template",
"labelSelectTemplate": "Вибрати Шаблон Етикетки",
"@labelSelectTemplate": {},
"labelSelectPrinter": "Select Label Printer",
"labelSelectPrinter": "Вибрати Принтер Етикеток",
"@labelSelectPrinter": {},
"language": "Мова",
"@language": {},
@ -466,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": {},
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Створити нове розташування на складі",
"@locationCreateDetail": {},
"locationDefault": "Розташування за замовчуванням",
"@locationDefault": {},
"locationNotSet": "Розташування не вказано",
"@locationNotSet": {},
"locationUpdated": "Розташування запасів оновлено",
@ -500,11 +528,11 @@
"@loginEnterDetails": {},
"link": "Посилання",
"@link": {},
"lost": "Lost",
"lost": "Втрачено",
"@lost": {},
"manufacturerPart": "Manufacturer Part",
"manufacturerPart": "Виробник деталі",
"@manufacturerPart": {},
"manufacturerPartEdit": "Edit Manufacturer Part",
"manufacturerPartEdit": "Редагувати виробника деталі",
"@manufacturerPartEdit": {},
"manufacturerPartNumber": "Номер позиції виробника",
"@manufacturerPartNumber": {},
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Назва",
"@name": {},
"no": "Ні",
"@no": {},
"notApplicable": "Н/Д",
"@notApplicable": {},
"notConnected": "Не під’єднано",
"@notConnected": {},
"notes": "Нотатки",
@ -532,29 +564,33 @@
"@noResults": {},
"noImageAvailable": "Немає доступного зображення",
"@noImageAvailable": {},
"noSubcategories": "No Subcategories",
"noPricingAvailable": "Ціни не вказано",
"@noPricingAvailable": {},
"noPricingDataFound": "Для цієї деталі не знайдено даних про ціну",
"@noPricingDataFound": {},
"noSubcategories": "Немає Підкатегорій",
"@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available",
"noSubcategoriesAvailable": "Немає доступних підкатегорій",
"@noSubcategoriesAvailable": {},
"numberInvalid": "Invalid number",
"numberInvalid": "Некоректний номер",
"@numberInvalid": {},
"onOrder": "On Order",
"onOrder": "У замовленні",
"@onOrder": {},
"onOrderDetails": "Items currently on order",
"onOrderDetails": "Позиції в поточних замовленнях",
"@onOrderDetails": {},
"orientation": "Screen Orientation",
"orientation": "Орієнтація екрана",
"@orientation": {},
"orientationDetail": "Screen orientation (requires restart)",
"orientationDetail": "Орієнтація екрана (потребує перезапуску)",
"@orientationDetail": {},
"orientationLandscape": "Landscape",
"orientationLandscape": "Альбомна орієнтація",
"@orientationLandscape": {},
"orientationPortrait": "Portrait",
"orientationPortrait": "Портретна орієнтація екрану",
"@orientationPortrait": {},
"orientationSystem": "System",
"orientationSystem": "Орієнтація задана системою",
"@orientationSystem": {},
"outstanding": "Відмінно",
"@outstanding": {},
"outstandingOrderDetail": "Show outstanding orders",
"outstandingOrderDetail": "Показати незавершені замовлення",
"@outstandingOrderDetail": {},
"overdue": "Протерміновані",
"@overdue": {},
@ -594,9 +630,9 @@
"@partsNone": {},
"partNoResults": "Немає позицій відповідних запиту",
"@partNoResults": {},
"partPricing": "Part Pricing",
"partPricing": "Ціна деталі",
"@partPricing": {},
"partPricingSettingDetail": "Display part pricing information",
"partPricingSettingDetail": "Відображати інформацію про ціни на деталь",
"@pricingSettingDetail": {},
"partSettings": "Налаштування позиції",
"@partSettings": {},
@ -616,7 +652,7 @@
"@partDetails": {},
"partNotes": "Примітки до позиції",
"@partNotes": {},
"partStock": "Part Stock",
"partStock": "Наявність На Складі",
"@partStock": {
"description": "part stock"
},
@ -624,11 +660,13 @@
"@password": {},
"passwordEmpty": "Пароль не може бути порожнім",
"@passwordEmpty": {},
"pending": "В очікуванні",
"@pending": {},
"permissionAccountDenied": "Ваш обліковий запис не має необхідних прав для виконання цієї дії",
"@permissionAccountDenied": {},
"permissionRequired": "Потрібен дозвіл",
"@permissionRequired": {},
"phone": "Phone",
"phone": "Телефон",
"@phone": {},
"printLabel": "Друк ярлика",
"@printLabel": {},
@ -674,65 +712,65 @@
"@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",
"quantity": "Кількість",
"@quantity": {
"description": "Quantity"
},
"quantityAvailable": "Quantity Available",
"quantityAvailable": "Доступна кількість",
"@quantityAvailable": {},
"quantityEmpty": "Quantity is empty",
"quantityEmpty": "Кількість не вказана",
"@quantityEmpty": {},
"quantityInvalid": "Quantity is invalid",
"quantityInvalid": "Некоректна кількість",
"@quantityInvalid": {},
"quantityPositive": "Quantity must be positive",
"quantityPositive": "Кількість мусить бути позитивною",
"@quantityPositive": {},
"queryEmpty": "Enter search query",
"queryEmpty": "Що шукати?",
"@queryEmpty": {},
"queryNoResults": "No results for query",
"queryNoResults": "Нічого не знайдено",
"@queryNoResults": {},
"received": "Received",
"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",
"refresh": "Оновити",
"@refresh": {},
"rotateClockwise": "Rotate 90° clockwise",
"rotateClockwise": "Повернути на 90° за годинниковою стрілкою",
"@rotateClockwise": {},
"refreshing": "Refreshing",
"refreshing": "Оновлення",
"@refreshing": {},
"rejected": "Rejected",
"rejected": "Відхилено",
"@rejected": {},
"releaseNotes": "Release Notes",
"releaseNotes": "Замітки до випуску",
"@releaseNotes": {},
"remove": "Remove",
"remove": "Видалити",
"@remove": {
"description": "remove"
},
@ -740,47 +778,47 @@
"@removeStock": {
"description": "remove stock"
},
"reportBug": "Report Bug",
"reportBug": "Зголосити помилку",
"@reportBug": {},
"reportBugDescription": "Відправити звіт про помилку (потрібен обліковий запис GitHub)",
"@reportBugDescription": {},
"responsible": "Responsible",
"responsible": "Відповідальний",
"@responsible": {},
"results": "Results",
"results": "Результати",
"@results": {},
"request": "Request",
"request": "Запит",
"@request": {},
"requestFailed": "Request Failed",
"requestFailed": "Запит завершився помилкою",
"@requestFailed": {},
"requestSuccessful": "Request successful",
"requestSuccessful": "Успішний запит",
"@requestSuccessful": {},
"requestingData": "Requesting Data",
"requestingData": "Запит даних",
"@requestingData": {},
"required": "Required",
"@required": {
"description": "This field is required"
},
"response400": "Bad Request",
"response400": "Некоректний запит",
"@response400": {},
"response401": "Unauthorized",
"response401": "Потрібна авторизація",
"@response401": {},
"response403": "Permission Denied",
"response403": "Доступ заборонено",
"@response403": {},
"response404": "Resource Not Found",
"response404": "Ресурс не знайдено",
"@response404": {},
"response405": "Method Not Allowed",
"response405": "Цей метод заборонений",
"@response405": {},
"response429": "Too Many Requests",
"response429": "Занадто багато запитів",
"@response429": {},
"response500": "Internal Server Error",
"response500": "Внутрішня помилка сервера",
"@response500": {},
"response501": "Not Implemented",
"response501": "Не реалізовано",
"@response501": {},
"response502": "Bad Gateway",
"response502": "Поганий шлюз",
"@response502": {},
"response503": "Service Unavailable",
"response503": "Сервіс недоступний",
"@response503": {},
"response504": "Gateway Timeout",
"response504": "Шлю не відповідає",
"@response504": {},
"response505": "Версія HTTP не підтримується",
"@response505": {},
@ -824,21 +862,21 @@
"@scanBarcode": {},
"scanSupplierPart": "Сканувати штрих-код позиції постачальника",
"@scanSupplierPart": {},
"scanIntoLocation": "Scan Into Location",
"scanIntoLocation": "",
"@scanIntoLocation": {},
"scanIntoLocationDetail": "Scan this item into location",
"@scanIntoLocationDetail": {},
"scannerExternal": "External Scanner",
"scannerExternal": "Зовнішній сканер",
"@scannerExternal": {},
"scannerExternalDetail": "Використовувати зовнішній сканер для читання штрих-кодів (wedge режим)",
"@scannerExternalDetail": {},
"scanReceivedParts": "Scan Received Parts",
"@scanReceivedParts": {},
"search": "Search",
"search": "Пошук",
"@search": {
"description": "search"
},
"searching": "Searching",
"searching": "Триває пошук",
"@searching": {},
"searchLocation": "Search for location",
"@searchLocation": {},
@ -846,81 +884,105 @@
"@searchParts": {},
"searchStock": "Search Stock",
"@searchStock": {},
"select": "Select",
"select": "Вибрати",
"@select": {},
"selectFile": "Select File",
"selectFile": "Вибрати файл",
"@selectFile": {},
"selectImage": "Select Image",
"selectImage": "Виберіть зображення",
"@selectImage": {},
"selectLocation": "Select a location",
"@selectLocation": {},
"send": "Send",
"send": "Відправити",
"@send": {},
"serialNumber": "Serial Number",
"serialNumber": "Серійний номер",
"@serialNumber": {},
"serialNumbers": "Serial Numbers",
"serialNumbers": "Серійні номери",
"@serialNumbers": {},
"server": "Server",
"server": "Сервер",
"@server": {},
"serverAddress": "Server Address",
"serverAddress": "Адреса сервера",
"@serverAddress": {},
"serverApiRequired": "Required API Version",
"serverApiRequired": "Вимагана версія API",
"@serverApiRequired": {},
"serverApiVersion": "Server API Version",
"serverApiVersion": "Версія API сервера",
"@serverApiVersion": {},
"serverAuthenticationError": "Authentication Error",
"serverAuthenticationError": "Помилка аутентифікації",
"@serverAuthenticationError": {},
"serverCertificateError": "Cerficate Error",
"serverCertificateError": "Помилка сертифіката",
"@serverCertificateError": {},
"serverCertificateInvalid": "Server HTTPS certificate is invalid",
"serverCertificateInvalid": "Помилка HTTPS сертифікату сервера",
"@serverCertificateInvalid": {},
"serverConnected": "Connected to Server",
"serverConnected": "Підключений до сервера",
"@serverConnected": {},
"serverConnecting": "Connecting to server",
"serverConnecting": "Триває підключення до сервера",
"@serverConnecting": {},
"serverCouldNotConnect": "Could not connect to server",
"serverCouldNotConnect": "Неможливо під'єднатися до сервера",
"@serverCouldNotConnect": {},
"serverEmpty": "Server cannot be empty",
"@serverEmpty": {},
"serverError": "Server Error",
"serverError": "Помилка сервера",
"@serverError": {},
"serverDetails": "Server Details",
"serverDetails": "Інформація про сервер",
"@serverDetails": {},
"serverMissingData": "На сервері відсутні обов'язкові поля для відповіді",
"@serverMissingData": {},
"serverOld": "Old Server Version",
"serverOld": "Стара версія сервера",
"@serverOld": {},
"serverSettings": "Server Settings",
"serverSettings": "Налаштування сервера",
"@serverSettings": {},
"serverStart": "Server must start with http[s]",
"serverStart": "Адреса сервера мусить починатися з http[s]",
"@serverStart": {},
"settings": "Settings",
"settings": "Налаштування",
"@settings": {},
"serverInstance": "Server Instance",
"serverInstance": "Екземпляр сервера",
"@serverInstance": {},
"serverNotConnected": "Server not connected",
"serverNotConnected": "Відсутнє з'єднання з сервером",
"@serverNotConnected": {},
"serverNotSelected": "Server not selected",
"serverNotSelected": "Сервер не вибраний",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Shipments",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Add Shipment",
"@shipmentAdd": {},
"shipped": "Shipped",
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Відправлено",
"@shipped": {},
"sku": "SKU",
"@sku": {},
"sounds": "Sounds",
"sounds": "Звуки",
"@sounds": {},
"soundOnBarcodeAction": "Play audible tone on barcode action",
"soundOnBarcodeAction": "Відтворити звук при скануванні",
"@soundOnBarcodeAction": {},
"soundOnServerError": "Play audible tone on server error",
"soundOnServerError": "Відтворити звук при помилці сервера",
"@soundOnServerError": {},
"startDate": "Start Date",
"startDate": "Дата початку",
"@startDate": {},
"status": "Status",
"status": "Статус",
"@status": {},
"statusCode": "Status Code",
"statusCode": "Код статусу",
"@statusCode": {},
"stock": "Stock",
"@stock": {
@ -990,7 +1052,7 @@
"@submitFeedback": {},
"suppliedParts": "Supplied Parts",
"@suppliedParts": {},
"supplier": "Supplier",
"supplier": "Постачальник",
"@supplier": {},
"supplierPart": "Supplier Part",
"@supplierPart": {},
@ -1002,47 +1064,47 @@
"@supplierPartUpdated": {},
"supplierParts": "Supplier Parts",
"@supplierParts": {},
"suppliers": "Suppliers",
"suppliers": "Постачальники",
"@suppliers": {},
"supplierReference": "Supplier Reference",
"@supplierReference": {},
"switchCamera": "Switch Camera",
"@switchCamera": {},
"takePicture": "Take Picture",
"takePicture": "Зробити фото",
"@takePicture": {},
"targetDate": "Target Date",
"@targetDate": {},
"templatePart": "Parent Template Part",
"@templatePart": {},
"testName": "Test Name",
"testName": "Назва тесту",
"@testName": {},
"testPassedOrFailed": "Test passed or failed",
"testPassedOrFailed": "Тест завершився успішно або помилкою",
"@testPassedOrFailed": {},
"testsRequired": "Required Tests",
"testsRequired": "Вимаганні тести",
"@testsRequired": {},
"testResults": "Test Results",
"testResults": "Результат тесту",
"@testResults": {
"description": ""
},
"testResultsDetail": "Display stock item test results",
"testResultsDetail": "Показати результати перевірки товару на складі",
"@testResultsDetail": {},
"testResultAdd": "Add Test Result",
"testResultAdd": "Додати результат тесту",
"@testResultAdd": {},
"testResultNone": "No Test Results",
"testResultNone": "Відсутні результати тесту",
"@testResultNone": {},
"testResultNoneDetail": "No test results available",
"testResultNoneDetail": "Результати тесту недоступні",
"@testResultNoneDetail": {},
"testResultUploadFail": "Error uploading test result",
"testResultUploadFail": "Помилка при завантаженні результатів тесту",
"@testResultUploadFail": {},
"testResultUploadPass": "Test result uploaded",
"@testResultUploadPass": {},
"timeout": "Timeout",
"timeout": "Тайм-аут",
"@timeout": {
"description": ""
},
"toggleTorch": "Toggle Torch",
"@toggleTorch": {},
"tokenError": "Token Error",
"tokenError": "Помилка токену",
"@tokenError": {},
"tokenMissing": "Missing Token",
"@tokenMissing": {},
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Total Price",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Transfer",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Website",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "Phân kho",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "Hiển thị ghi chú phát hành ứng dụng",
"@appReleaseNotes": {},
"appSettings": "Cài đặt ứng dụng",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "Quét mã vạch đã bị dừng",
"@barodeScanPaused": {},
"barcodeScanPause": "Nhấp hoặc giữ để dừng quét",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "Quét để gán mã vạch",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "Doanh nghiệp",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "Cấu hình thiết lập máy chủ",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "Thao tác xóa đã thất bại",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "Xóa phần",
"@deletePart": {},
"deletePartDetail": "Xóa một phần ra khỏi cơ sở dữ liệu",
"@deletePartDetail": {},
"deleteSuccess": "Thao tác xóa thành công",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "Mô tả",
"@description": {},
"destination": "Destination",
@ -250,7 +264,7 @@
"@edit": {
"description": "edit"
},
"editAttachment": "Edit Attachment",
"editAttachment": "Sửa tệp đính kèm",
"@editAttachment": {},
"editCategory": "Sửa Danh mục",
"@editCategory": {},
@ -268,7 +282,7 @@
"@editItem": {},
"editLineItem": "Sửa dòng sản phẩm",
"@editLineItem": {},
"email": "Email",
"email": "Địa chỉ email",
"@email": {},
"enterPassword": "Nhập mật khẩu",
"@enterPassword": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "Hiển thị đơn hàng mới tại màn hình chính",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "Hiện đơn hàng bán",
"@homeShowSo": {},
"homeShowSoDescription": "Hiện nút đơn hàng bán tại màn hình trang chủ",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "Tên người dùng / mật khẩu không hợp lệ",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "Vấn đề",
"@issue": {},
"issueDate": "Ngày phát hành",
@ -446,10 +468,14 @@
"@itemInLocation": {},
"itemDeleted": "Hàng hóa đã bị xóa",
"@itemDeleted": {},
"itemUpdated": "Item updated",
"itemUpdated": "Mẫu đã được cập nhật",
"@itemUpdated": {},
"keywords": "Từ khóa",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "In nhãn mã vạch",
"@labelPrinting": {},
"labelPrintingDetail": "Bật in nhãn tem",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "Thêm mới vị trí kho hàng",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "Không xác định được vị trí",
"@locationNotSet": {},
"locationUpdated": "Cập nhật vị trí kho hàng",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "Tên",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "Không được kết nối",
"@notConnected": {},
"notes": "Ghi chú",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "Không có danh mục con",
"@noSubcategories": {},
"noSubcategoriesAvailable": "Không có sẵn danh mục",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "Mật khẩu không được để trống",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "Tài khoản này bắt buộc phải có đủ các quyền để thực hiện thao tác này",
"@permissionAccountDenied": {},
"permissionRequired": "Yêu cầu quyền truy cập",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "Chưa chọn máy chủ",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "Vận chuyển",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "Thêm phương thức vận chuyển",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "Đã vận chuyển",
"@shipped": {},
"sku": "Mã sản phẩm",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "Tổng tiền",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "Chuyển",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "Trang web",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "分配库存",
"@allocateStock": {},
"allocatedStock": "已分配库存",
"@allocatedStock": {},
"appReleaseNotes": "显示应用发布笔记",
"@appReleaseNotes": {},
"appSettings": "应用设置",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "条形码扫描已暂停",
"@barodeScanPaused": {},
"barcodeScanPause": "点击或按住以暂停扫描",
"barcodeScanPause": "点击以暂停扫描",
"@barcodeScanPause": {},
"barcodeScanAssign": "扫描以分配条形码",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "公司",
"@companies": {},
"complete": "完成",
"@complete": {},
"completeOrder": "完成订单",
"@completeOrder": {},
"completionDate": "完成日期",
"@completionDate": {},
"configureServer": "配置服务器的设置",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "删除操作失败",
"@deleteFailed": {},
"deleteImageConfirmation": "您确认要删除此图片吗?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "删除图片",
"@deleteImageTooltip": {},
"deleteImage": "删除图片",
"@deleteImage": {},
"deletePart": "删除零件",
"@deletePart": {},
"deletePartDetail": "从数据库中删除此零件",
"@deletePartDetail": {},
"deleteSuccess": "删除操作成功",
"@deleteSuccess": {},
"deliveryDate": "交货日期",
"@deliveryDate": {},
"description": "描述",
"@description": {},
"destination": "目的地",
@ -268,7 +282,7 @@
"@editItem": {},
"editLineItem": "编辑行项目",
"@editLineItem": {},
"email": "Email",
"email": "电子邮件",
"@email": {},
"enterPassword": "输入密码",
"@enterPassword": {},
@ -282,7 +296,7 @@
"@errorCreate": {},
"errorDelete": "删除数据库条目时出错",
"@errorDelete": {},
"errorDetails": "c w错误详情",
"errorDetails": "错误详情",
"@errorDetails": {},
"errorFetch": "从服务器获取数据时出错",
"@errorFetch": {},
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "在主屏幕上显示订单按钮",
"@homeShowPoDescription": {},
"homeShowShipments": "显示货件",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "在首页显示待处理货件",
"@homeShowShipmentsDescription": {},
"homeShowSo": "显示销售订单",
"@homeShowSo": {},
"homeShowSoDescription": "在主屏幕上显示销售订单按钮",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "无效的用户名密码组合",
"@invalidUsernamePassword": {},
"invoice": "发票",
"@invoice": {},
"invoiceNumber": "发票号码",
"@invoiceNumber": {},
"issue": "下单任务",
"@issue": {},
"issueDate": "签发日期",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "关键词",
"@keywords": {},
"labelDriver": "标签打印机",
"@labelDriver": {},
"labelSelectDriver": "选择标签打印机",
"@labelSelectDriver": {},
"labelPrinting": "打印标签",
"@labelPrinting": {},
"labelPrintingDetail": "启用标签打印功能",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "创建新库存地点",
"@locationCreateDetail": {},
"locationDefault": "默认位置",
"@locationDefault": {},
"locationNotSet": "没有指定仓储位置",
"@locationNotSet": {},
"locationUpdated": "库存地点已更新",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "名称",
"@name": {},
"no": "否",
"@no": {},
"notApplicable": "不适用",
"@notApplicable": {},
"notConnected": "未连接",
"@notConnected": {},
"notes": "注释",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "没有可用的图片",
"@noImageAvailable": {},
"noPricingAvailable": "无可用价格",
"@noPricingAvailable": {},
"noPricingDataFound": "未找到此零件的定价数据",
"@noPricingDataFound": {},
"noSubcategories": "无子类别",
"@noSubcategories": {},
"noSubcategoriesAvailable": "无可用子类别",
@ -624,11 +660,13 @@
"@password": {},
"passwordEmpty": "密码不能为空",
"@passwordEmpty": {},
"pending": "等待",
"@pending": {},
"permissionAccountDenied": "您的账户没有执行此操作所需的权限",
"@permissionAccountDenied": {},
"permissionRequired": "需要授权:",
"@permissionRequired": {},
"phone": "Phone",
"phone": "电话",
"@phone": {},
"printLabel": "打印标签",
"@printLabel": {},
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "未选定服务器",
"@serverNotSelected": {},
"shipment": "发货",
"@shipment": {},
"shipments": "配送",
"@shipments": {},
"shipmentsPending": "待处理货件",
"@shipmentsPending": {},
"shipmentAdd": "添加配送",
"@shipmentAdd": {},
"shipmentCheck": "查询物流",
"@shipmentCheck": {},
"shipmentCheckDetail": "标记为已核对",
"@shipmentCheckDetail": {},
"shipmentChecked": "已核对",
"@shipmentChecked": {},
"shipmentDate": "发货日期",
"@shipmentDate": {},
"shipmentEdit": "编辑货件",
"@shipmentEdit": {},
"shipmentReference": "参考编号",
"@shipmentReference": {},
"shipmentSend": "确认发货",
"@shipmentSend": {},
"shipmentUncheck": "取消核对",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "标记为未核对",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "货件信息已更新",
"@shipmentUpdated": {},
"shipped": "已配送",
"@shipped": {},
"sku": "库存单位 (SKU)",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "总价",
"@totalPrice": {},
"trackingNumber": "运单号",
"@trackingNumber": {},
"transfer": "转移",
"@transfer": {
"description": "transfer"
@ -1110,13 +1174,15 @@
"@viewSupplierPart": {},
"website": "网站",
"@website": {},
"yes": "是",
"@yes": {},
"price": "价格",
"@price": {},
"priceRange": "价格范围",
"@priceRange": {},
"priceOverrideMin": "Minimum Price Override",
"priceOverrideMin": "最低价格覆盖",
"@priceOverrideMin": {},
"priceOverrideMax": "Maximum Price Override",
"priceOverrideMax": "最高自定义价格",
"@priceOverrideMax": {},
"salePrice": "销售价格",
"@salePrice": {},
@ -1137,15 +1203,5 @@
"currency": "币种",
"@currency": {},
"priceBreaks": "批发价",
"@priceBreaks": {},
"noPricingAvailable": "无可用价格",
"@noPricingAvailable": {},
"noPricingDataFound": "未找到此零件的定价数据",
"@noPricingDataFound": {},
"deleteImageConfirmation": "您确认要删除此图片吗?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "删除图片",
"@deleteImageTooltip": {},
"deleteImage": "删除图片",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -46,6 +46,8 @@
"@aspectRatioSquare": {},
"allocateStock": "分配庫存",
"@allocateStock": {},
"allocatedStock": "Allocated Stock",
"@allocatedStock": {},
"appReleaseNotes": "顯示應用程式發布說明",
"@appReleaseNotes": {},
"appSettings": "程式設定",
@ -100,7 +102,7 @@
"@barcodeReceivePart": {},
"barcodeScanPaused": "條碼掃描已暫停",
"@barodeScanPaused": {},
"barcodeScanPause": "點擊或按住以暫停掃描",
"barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {},
"barcodeScanAssign": "掃描以設置條碼",
"@barcodeScanAssign": {},
@ -178,6 +180,10 @@
"@companyUpdated": {},
"companies": "公司",
"@companies": {},
"complete": "Complete",
"@complete": {},
"completeOrder": "Complete Order",
"@completeOrder": {},
"completionDate": "Completion Date",
"@completionDate": {},
"configureServer": "伺服器設定",
@ -222,12 +228,20 @@
"@delete": {},
"deleteFailed": "刪除失敗",
"@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {},
"deletePart": "刪除零件",
"@deletePart": {},
"deletePartDetail": "從數據庫中刪除此零件",
"@deletePartDetail": {},
"deleteSuccess": "刪除成功",
"@deleteSuccess": {},
"deliveryDate": "Delivery Date",
"@deliveryDate": {},
"description": "敘述",
"@description": {},
"destination": "Destination",
@ -370,6 +384,10 @@
"@homeShowPo": {},
"homeShowPoDescription": "在主屏幕上顯示訂單按鈕",
"@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments",
"@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {},
"homeShowSo": "顯示銷售訂單",
"@homeShowSo": {},
"homeShowSoDescription": "在主屏幕上顯示銷售訂單按鈕",
@ -436,6 +454,10 @@
"@invalidSupplierPart": {},
"invalidUsernamePassword": "無效的用户名密碼組合",
"@invalidUsernamePassword": {},
"invoice": "Invoice",
"@invoice": {},
"invoiceNumber": "Invoice Number",
"@invoiceNumber": {},
"issue": "發行",
"@issue": {},
"issueDate": "發行日期",
@ -450,6 +472,10 @@
"@itemUpdated": {},
"keywords": "關鍵字",
"@keywords": {},
"labelDriver": "Label Driver",
"@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {},
"labelPrinting": "標籤印製",
"@labelPrinting": {},
"labelPrintingDetail": "啓用標籤打印功能",
@ -488,6 +514,8 @@
"@locationCreate": {},
"locationCreateDetail": "創建新庫存地點",
"@locationCreateDetail": {},
"locationDefault": "Default Location",
"@locationDefault": {},
"locationNotSet": "沒有指定倉儲位置",
"@locationNotSet": {},
"locationUpdated": "庫存地點已更新",
@ -516,6 +544,10 @@
"@missingData": {},
"name": "名稱",
"@name": {},
"no": "No",
"@no": {},
"notApplicable": "N/A",
"@notApplicable": {},
"notConnected": "未連接",
"@notConnected": {},
"notes": "備註",
@ -532,6 +564,10 @@
"@noResults": {},
"noImageAvailable": "No image available",
"@noImageAvailable": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"noSubcategories": "無子類別",
"@noSubcategories": {},
"noSubcategoriesAvailable": "無可用子類別",
@ -624,6 +660,8 @@
"@password": {},
"passwordEmpty": "密碼不能為空",
"@passwordEmpty": {},
"pending": "Pending",
"@pending": {},
"permissionAccountDenied": "您的賬户沒有執行此操作所需的權限",
"@permissionAccountDenied": {},
"permissionRequired": "需要授權:",
@ -902,10 +940,34 @@
"@serverNotConnected": {},
"serverNotSelected": "未選定服務器",
"@serverNotSelected": {},
"shipment": "Shipment",
"@shipment": {},
"shipments": "配送",
"@shipments": {},
"shipmentsPending": "Pending Shipments",
"@shipmentsPending": {},
"shipmentAdd": "添加配送",
"@shipmentAdd": {},
"shipmentCheck": "Check Shipment",
"@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked",
"@shipmentChecked": {},
"shipmentDate": "Shipment Date",
"@shipmentDate": {},
"shipmentEdit": "Edit Shipment",
"@shipmentEdit": {},
"shipmentReference": "Shipment Reference",
"@shipmentReference": {},
"shipmentSend": "Send Shipment",
"@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {},
"shipped": "已配送",
"@shipped": {},
"sku": "庫存單位 (SKU)",
@ -1050,6 +1112,8 @@
"@tokenMissingFromResponse": {},
"totalPrice": "總價",
"@totalPrice": {},
"trackingNumber": "Tracking Number",
"@trackingNumber": {},
"transfer": "轉移",
"@transfer": {
"description": "transfer"
@ -1110,6 +1174,8 @@
"@viewSupplierPart": {},
"website": "網站",
"@website": {},
"yes": "Yes",
"@yes": {},
"price": "Price",
"@price": {},
"priceRange": "Price Range",
@ -1137,15 +1203,5 @@
"currency": "Currency",
"@currency": {},
"priceBreaks": "Price Breaks",
"@priceBreaks": {},
"noPricingAvailable": "No pricing available",
"@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part",
"@noPricingDataFound": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?",
"@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image",
"@deleteImageTooltip": {},
"deleteImage": "Delete Image",
"@deleteImage": {}
"@priceBreaks": {}
}

View file

@ -1,11 +1,206 @@
import "package:flutter/cupertino.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:flutter/material.dart";
import "package:inventree/api.dart";
import "package:inventree/widget/progress.dart";
import "package:inventree/preferences.dart";
import "package:inventree/api_form.dart";
import "package:inventree/l10.dart";
import "package:inventree/widget/progress.dart";
import "package:inventree/widget/snacks.dart";
const String PRINT_LABEL_URL = "api/label/print/";
/*
* Custom form handler for label printing.
* Required to manage dynamic form fields.
*/
class LabelFormWidgetState extends APIFormWidgetState {
LabelFormWidgetState() : super();
List<APIFormField> dynamicFields = [];
String pluginKey = "";
String labelType = "";
@override
List<APIFormField> get formFields {
final baseFields = super.formFields;
if (pluginKey.isEmpty) {
// Handle case where default plugin is provided
final APIFormField pluginField = baseFields.firstWhere(
(field) => field.name == "plugin",
);
if (pluginField.initial_data != null) {
pluginKey = pluginField.value.toString();
onValueChanged("plugin", pluginKey);
}
}
return [...baseFields, ...dynamicFields];
}
@override
void onValueChanged(String field, dynamic value) {
if (field == "plugin") {
onPluginChanged(value.toString());
}
}
@override
Future<void> handleSuccess(
Map<String, dynamic> submittedData,
Map<String, dynamic> responseData,
) async {
super.handleSuccess(submittedData, responseData);
// Save default values to the database
final String? plugin = submittedData["plugin"]?.toString();
final int? template = submittedData["template"] as int?;
// Save default printing plugin
if (plugin != null) {
InvenTreeSettingsManager().setValue(INV_LABEL_DEFAULT_PLUGIN, plugin);
}
// Save default template for this label type
if (labelType.isNotEmpty && template != null) {
final defaultTemplates =
await InvenTreeSettingsManager().getValue(
INV_LABEL_DEFAULT_TEMPLATES,
null,
)
as Map<String, dynamic>?;
InvenTreeSettingsManager().setValue(INV_LABEL_DEFAULT_TEMPLATES, {
...?defaultTemplates,
labelType: template,
});
}
}
/*
* Re-fetch printing options when the plugin changes
*/
Future<void> onPluginChanged(String key) async {
showLoadingOverlay();
InvenTreeAPI().options(PRINT_LABEL_URL, params: {"plugin": key}).then((
APIResponse response,
) {
if (response.isValid()) {
updateFields(response);
hideLoadingOverlay();
}
});
}
/*
* Callback when the server responds with printing options,
* based on the selected printing plugin
*/
Future<void> updateFields(APIResponse response) async {
Map<String, dynamic> printingFields = extractFields(response);
// Find only the fields which are not in the "base" fields
List<APIFormField> uniqueFields = [];
for (String key in printingFields.keys) {
if (super.formFields.any((field) => field.name == key)) {
continue;
}
dynamic data = printingFields[key];
Map<String, dynamic> fieldData = {};
if (data is Map) {
fieldData = Map<String, dynamic>.from(data);
}
APIFormField field = APIFormField(key, fieldData);
field.definition = extractFieldDefinition(
printingFields,
field.lookupPath,
);
if (field.type == "dependent field") {
// Dependent fields must be handled separately
// TODO: This should be refactored into api_form.dart
dynamic child = field.definition["child"];
if (child != null && child is Map) {
Map<String, dynamic> child_map = child as Map<String, dynamic>;
dynamic nested_children = child_map["children"];
if (nested_children != null && nested_children is Map) {
Map<String, dynamic> nested_child_map =
nested_children as Map<String, dynamic>;
for (var field_key in nested_child_map.keys) {
field = APIFormField(field_key, nested_child_map);
field.definition = extractFieldDefinition(
nested_child_map,
field_key,
);
uniqueFields.add(field);
}
}
}
} else {
// This is a "standard" (non-nested) field
uniqueFields.add(field);
}
}
if (mounted) {
setState(() {
dynamicFields = uniqueFields;
});
}
}
}
Future<void> handlePrintingSuccess(
BuildContext context,
Map<String, dynamic> data,
int repeatCount,
) async {
const int MAX_REPEATS = 60;
int id = (data["pk"] ?? -1) as int;
bool complete = (data["complete"] ?? false) as bool;
bool error = data["errors"] != null;
String? output = data["output"] as String?;
if (complete) {
if (output != null && output.isNotEmpty) {
// An output was generated - we can download it!
showSnackIcon(L10().downloading, success: true);
InvenTreeAPI().downloadFile(output);
} else {
// Label was offloaded, likely to an external printer
showSnackIcon(L10().printLabelSuccess, success: true);
}
} else if (error) {
showSnackIcon(L10().printLabelFailure, success: false);
} else if (repeatCount < MAX_REPEATS && id > 0) {
// Printing is not yet complete, but we have a valid output ID
Future.delayed(Duration(milliseconds: 1000), () async {
// Re-query the printing status
InvenTreeAPI().get("data-output/$id/").then((response) {
if (response.statusCode == 200) {
if (response.data is Map<String, dynamic>) {
final responseData = response.data as Map<String, dynamic>;
handlePrintingSuccess(context, responseData, repeatCount + 1);
}
}
});
});
}
}
/*
* Select a particular label, from a provided list of options,
* and print against the selected instances.
@ -13,202 +208,73 @@ import "package:inventree/widget/snacks.dart";
*/
Future<void> selectAndPrintLabel(
BuildContext context,
List<Map<String, dynamic>> labels,
int instanceId,
String labelType,
String labelQuery,
int instanceId,
) async {
if (!InvenTreeAPI().isConnected()) {
return;
}
// Find a list of available plugins which support label printing
var plugins = InvenTreeAPI().getPlugins(mixin: "labels");
dynamic initial_label;
dynamic initial_plugin;
List<Map<String, dynamic>> label_options = [];
List<Map<String, dynamic>> plugin_options = [];
// Construct list of available label templates
for (var label in labels) {
String name = (label["name"] ?? "").toString();
String description = (label["description"] ?? "").toString();
if (description.isNotEmpty) {
name += " - ${description}";
if (!InvenTreeAPI().supportsModernLabelPrinting) {
// Legacy label printing API not supported
showSnackIcon("Label printing not supported by server", success: false);
return;
}
int pk = (label["pk"] ?? -1) as int;
// Fetch default values for label printing
if (name.isNotEmpty && pk > 0) {
label_options.add({"display_name": name, "value": pk});
}
// Default template
final defaultTemplates = await InvenTreeSettingsManager().getValue(
INV_LABEL_DEFAULT_TEMPLATES,
null,
);
int? defaultTemplate;
if (defaultTemplates != null && defaultTemplates is Map<String, dynamic>) {
defaultTemplate = defaultTemplates[labelType] as int?;
}
if (label_options.length == 1) {
initial_label = label_options.first["value"];
}
// Construct list of available plugins
for (var plugin in plugins) {
plugin_options.add({"display_name": plugin.humanName, "value": plugin.key});
}
String selectedPlugin = await InvenTreeAPI().getUserSetting(
"LABEL_DEFAULT_PRINTER",
// Default plugin
final defaultPlugin = await InvenTreeSettingsManager().getValue(
INV_LABEL_DEFAULT_PLUGIN,
null,
);
if (selectedPlugin.isNotEmpty) {
initial_plugin = selectedPlugin;
} else if (plugin_options.length == 1) {
initial_plugin = plugin_options.first["value"];
}
Map<String, dynamic> fields = {
"label": {
"label": L10().labelTemplate,
"type": "choice",
"value": initial_label,
"choices": label_options,
"required": true,
// Specify a default list of fields for printing
// The selected plugin may optionally extend this list of fields dynamically
Map<String, Map<String, dynamic>> baseFields = {
"template": {
"default": defaultTemplate,
"filters": {
"enabled": true,
"model_type": labelType,
"items": instanceId.toString(),
},
},
"plugin": {
"label": L10().pluginPrinter,
"type": "choice",
"value": initial_plugin,
"choices": plugin_options,
"required": true,
"default": defaultPlugin,
"pk_field": "key",
"filters": {"enabled": true, "mixin": "labels"},
},
"items": {
"hidden": true,
"value": [instanceId],
},
};
final formHandler = LabelFormWidgetState();
formHandler.labelType = labelType;
launchApiForm(
context,
L10().printLabel,
"",
fields,
icon: TablerIcons.printer,
validate: (Map<String, dynamic> data) {
final template = data["label"];
final plugin = data["plugin"];
if (template == null) {
showSnackIcon(L10().labelSelectTemplate, success: false);
return false;
}
if (plugin == null) {
showSnackIcon(L10().labelSelectPrinter, success: false);
return false;
}
return true;
},
onSuccess: (Map<String, dynamic> data) async {
int labelId = (data["label"] ?? -1) as int;
var pluginKey = data["plugin"];
bool result = false;
if (labelId != -1 && pluginKey != null) {
showLoadingOverlay();
if (InvenTreeAPI().supportsModernLabelPrinting) {
// Modern label printing API uses a POST request to a single API endpoint.
await InvenTreeAPI()
.post(
"/label/print/",
body: {
"plugin": pluginKey,
"template": labelId,
"items": [instanceId],
},
)
.then((APIResponse response) {
if (response.isValid() &&
response.statusCode >= 200 &&
response.statusCode <= 201) {
var data = response.asMap();
if (data.containsKey("output")) {
String? label_file = (data["output"]) as String?;
if (label_file != null && label_file.isNotEmpty) {
// Attempt to open generated file
InvenTreeAPI().downloadFile(label_file);
}
result = true;
}
}
});
} else {
// Legacy label printing API
// Uses a GET request to a specially formed URL which depends on the parameters
String url =
"/label/${labelType}/${labelId}/print/?${labelQuery}&plugin=${pluginKey}";
await InvenTreeAPI().get(url).then((APIResponse response) {
if (response.isValid() && response.statusCode == 200) {
var data = response.asMap();
if (data.containsKey("file")) {
var label_file = (data["file"] ?? "") as String;
// Attempt to open remote file
InvenTreeAPI().downloadFile(label_file);
result = true;
}
}
});
}
hideLoadingOverlay();
if (result) {
showSnackIcon(L10().printLabelSuccess, success: true);
} else {
showSnackIcon(L10().printLabelFailure, success: false);
}
}
PRINT_LABEL_URL,
baseFields,
method: "POST",
modelData: {"plugin": defaultPlugin, "template": defaultTemplate},
formHandler: formHandler,
onSuccess: (data) async {
handlePrintingSuccess(context, data, 0);
},
);
}
/*
* Discover which label templates are available for a given item
*/
Future<List<Map<String, dynamic>>> getLabelTemplates(
String labelType,
Map<String, String> data,
) async {
if (!InvenTreeAPI().isConnected() ||
!InvenTreeAPI().supportsMixin("labels")) {
return [];
}
// Filter by active plugins
data["enabled"] = "true";
String url = "/label/template/";
if (InvenTreeAPI().supportsModernLabelPrinting) {
data["model_type"] = labelType;
} else {
// Legacy label printing API endpoint
url = "/label/${labelType}/";
}
List<Map<String, dynamic>> labels = [];
await InvenTreeAPI().get(url, params: data).then((APIResponse response) {
if (response.isValid() && response.statusCode == 200) {
for (var label in response.resultsList()) {
if (label is Map<String, dynamic>) {
labels.add(label);
}
}
}
});
return labels;
}

View file

@ -10,6 +10,7 @@ import "package:path/path.dart";
const String INV_HOME_SHOW_SUBSCRIBED = "homeShowSubscribed";
const String INV_HOME_SHOW_PO = "homeShowPo";
const String INV_HOME_SHOW_SO = "homeShowSo";
const String INV_HOME_SHOW_SHIPMENTS = "homeShowShipments";
const String INV_HOME_SHOW_MANUFACTURERS = "homeShowManufacturers";
const String INV_HOME_SHOW_CUSTOMERS = "homeShowCustomers";
const String INV_HOME_SHOW_SUPPLIERS = "homeShowSuppliers";
@ -24,10 +25,13 @@ const int SCREEN_ORIENTATION_LANDSCAPE = 2;
const String INV_SOUNDS_BARCODE = "barcodeSounds";
const String INV_SOUNDS_SERVER = "serverSounds";
// Label printing settings
const String INV_ENABLE_LABEL_PRINTING = "enableLabelPrinting";
const String INV_LABEL_DEFAULT_TEMPLATES = "defaultLabelTemplates";
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";

View file

@ -49,7 +49,8 @@ class InvenTreeAboutWidget extends StatelessWidget {
var url = Uri(
scheme: "https",
host: "github.com",
path: "inventree/inventree-app/issues/new?title=Enter+bug+description",
path: "inventree/inventree-app/issues/new/",
queryParameters: {"title": "Enter bug description"},
);
if (await canLaunchUrl(url)) {

View file

@ -20,6 +20,7 @@ class _HomeScreenSettingsState extends State<HomeScreenSettingsWidget> {
bool homeShowSubscribed = true;
bool homeShowPo = true;
bool homeShowSo = true;
bool homeShowShipments = true;
bool homeShowSuppliers = true;
bool homeShowManufacturers = true;
bool homeShowCustomers = true;
@ -46,6 +47,11 @@ class _HomeScreenSettingsState extends State<HomeScreenSettingsWidget> {
homeShowSo =
await InvenTreeSettingsManager().getValue(INV_HOME_SHOW_SO, true)
as bool;
homeShowShipments =
await InvenTreeSettingsManager().getValue(INV_HOME_SHOW_SHIPMENTS, true)
as bool;
homeShowManufacturers =
await InvenTreeSettingsManager().getValue(
INV_HOME_SHOW_MANUFACTURERS,
@ -118,6 +124,23 @@ class _HomeScreenSettingsState extends State<HomeScreenSettingsWidget> {
},
),
),
ListTile(
title: Text(L10().homeShowShipments),
subtitle: Text(L10().homeShowShipmentsDescription),
leading: Icon(TablerIcons.cube_send),
trailing: Switch(
value: homeShowShipments,
onChanged: (bool value) {
InvenTreeSettingsManager().setValue(
INV_HOME_SHOW_SHIPMENTS,
value,
);
setState(() {
homeShowShipments = value;
});
},
),
),
ListTile(
title: Text(L10().homeShowSuppliers),
subtitle: Text(L10().homeShowSuppliersDescription),

View file

@ -13,7 +13,6 @@ class InvenTreePartSettingsWidget extends StatefulWidget {
class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> {
_InvenTreePartSettingsState();
bool partShowParameters = true;
bool partShowBom = true;
bool partShowPricing = true;
bool stockShowHistory = false;
@ -28,10 +27,6 @@ class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> {
}
Future<void> 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<InvenTreePartSettingsWidget> {
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),

View file

@ -2,15 +2,13 @@ import "dart:io";
import "package:flutter/material.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:one_context/one_context.dart";
import "package:url_launcher/url_launcher.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/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";
@ -24,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;
@ -55,15 +53,15 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
IconButton(
icon: Icon(TablerIcons.camera),
onPressed: () async {
widget.attachmentClass.uploadImage(
InvenTreeAttachment()
.uploadImage(
widget.modelType,
widget.modelId,
prefix: widget.imagePrefix,
);
FilePickerDialog.pickImageFromCamera().then((File? file) {
upload(context, file).then((_) {
)
.then((_) {
refresh(context);
});
});
},
),
IconButton(
@ -84,8 +82,9 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
showLoadingOverlay();
final bool result = await widget.attachmentClass.uploadAttachment(
final bool result = await InvenTreeAttachment().uploadAttachment(
file,
widget.modelType,
widget.modelId,
);
@ -169,25 +168,24 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
Future<void> request(BuildContext context) async {
Map<String, String> filters = {};
if (InvenTreeAPI().supportsModernAttachments) {
filters["model_type"] = widget.attachmentClass.REF_MODEL_TYPE;
filters["model_type"] = widget.modelType;
filters["model_id"] = widget.modelId.toString();
} else {
filters[widget.attachmentClass.REFERENCE_FIELD] = widget.modelId
.toString();
}
await widget.attachmentClass.list(filters: filters).then((var results) {
attachments.clear();
List<InvenTreeAttachment> _attachments = [];
InvenTreeAttachment().list(filters: filters).then((var results) {
for (var result in results) {
if (result is InvenTreeAttachment) {
attachments.add(result);
_attachments.add(result);
}
}
if (mounted) {
setState(() {
attachments = _attachments;
});
}
});
setState(() {});
}
@override
@ -212,17 +210,14 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
},
),
);
} else if (attachment.link.isNotEmpty) {
} else if (attachment.hasLink) {
tiles.add(
ListTile(
title: Text(attachment.link),
subtitle: Text(attachment.comment),
leading: Icon(TablerIcons.link, color: COLOR_ACTION),
onTap: () async {
var uri = Uri.tryParse(attachment.link.trimLeft());
if (uri != null && await canLaunchUrl(uri)) {
await launchUrl(uri);
}
attachment.openLink();
},
onLongPress: () {
showOptionsMenu(context, attachment);
@ -244,3 +239,40 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
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,
),
),
);
},
);
}

View file

@ -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";
@ -13,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";
@ -37,6 +40,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
int outstandingPurchaseOrders = 0;
int outstandingSalesOrders = 0;
int parameterCount = 0;
int attachmentCount = 0;
@override
@ -184,9 +188,19 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
}
});
InvenTreeCompanyAttachment().countAttachments(widget.company.pk).then((
value,
) {
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) {
if (mounted) {
setState(() {
attachmentCount = value;
@ -287,7 +301,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
}
// External link
if (widget.company.link.isNotEmpty) {
if (widget.company.hasLink) {
tiles.add(
ListTile(
title: Text(L10().link),
@ -393,29 +407,31 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
);
}
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(
ListTile? parameterTile = ShowParametersItem(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreeCompanyAttachment(),
InvenTreeCompany.MODEL_TYPE,
widget.company.pk,
parameterCount,
widget.company.canEdit,
);
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreeCompany.MODEL_TYPE,
widget.company.pk,
widget.company.name,
InvenTreeCompany().canEdit,
),
),
);
},
),
attachmentCount,
widget.company.canEdit,
);
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles;
}
}

View file

@ -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,11 +10,12 @@ 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";
import "package:inventree/widget/progress.dart";
import "package:url_launcher/url_launcher.dart";
/*
* Detail widget for viewing a single ManufacturerPart instance
@ -32,6 +35,9 @@ class _ManufacturerPartDisplayState
extends RefreshableState<ManufacturerPartDetailWidget> {
_ManufacturerPartDisplayState();
int parameterCount = 0;
int attachmentCount = 0;
@override
String getAppBarTitle() => L10().manufacturerPart;
@ -43,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<void> editManufacturerPart(BuildContext context) async {
@ -92,11 +125,6 @@ class _ManufacturerPartDisplayState
List<Widget> getTiles(BuildContext context) {
List<Widget> tiles = [];
if (loading) {
tiles.add(progressIndicator());
return tiles;
}
// Internal Part
tiles.add(
ListTile(
@ -163,21 +191,43 @@ class _ManufacturerPartDisplayState
);
}
if (widget.manufacturerPart.link.isNotEmpty) {
if (widget.manufacturerPart.hasLink) {
tiles.add(
ListTile(
title: Text(widget.manufacturerPart.link),
leading: Icon(TablerIcons.link, color: COLOR_ACTION),
onTap: () async {
var uri = Uri.tryParse(widget.manufacturerPart.link);
if (uri != null && await canLaunchUrl(uri)) {
await launchUrl(uri);
}
widget.manufacturerPart.openLink();
},
),
);
}
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;
}
}

View file

@ -1,8 +1,11 @@
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:url_launcher/url_launcher.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/l10.dart";
@ -11,11 +14,13 @@ 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";
import "package:inventree/widget/snacks.dart";
import "package:inventree/widget/company/manufacturer_part_detail.dart";
import "package:inventree/widget/stock/stock_list.dart";
/*
* Detail widget for viewing a single SupplierPart instance
@ -34,6 +39,9 @@ class _SupplierPartDisplayState
extends RefreshableState<SupplierPartDetailWidget> {
_SupplierPartDisplayState();
int parameterCount = 0;
int attachmentCount = 0;
@override
String getAppBarTitle() => L10().supplierPart;
@ -96,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;
});
}
});
}
/*
@ -143,6 +178,28 @@ class _SupplierPartDisplayState
);
}
// Stock levels associated with this SupplierPart
tiles.add(
ListTile(
title: Text(L10().availableStock),
leading: Icon(TablerIcons.packages),
trailing: LinkIcon(
text: simpleNumberString(widget.supplierPart.inStock),
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => StockItemList({
"in_stock": "true",
"supplier_part": widget.supplierPart.pkString,
}),
),
);
},
),
);
// Supplier details
tiles.add(
ListTile(
@ -197,7 +254,7 @@ class _SupplierPartDisplayState
tiles.add(
ListTile(
title: Text(L10().manufacturerPartNumber),
title: Text(L10().manufacturerPart),
subtitle: Text(widget.supplierPart.MPN),
leading: Icon(TablerIcons.hash, color: COLOR_ACTION),
trailing: LinkIcon(),
@ -239,7 +296,7 @@ class _SupplierPartDisplayState
);
}
if (widget.supplierPart.link.isNotEmpty) {
if (widget.supplierPart.hasLink) {
tiles.add(
ListTile(
title: Text(L10().link),
@ -247,10 +304,7 @@ class _SupplierPartDisplayState
leading: Icon(TablerIcons.link, color: COLOR_ACTION),
trailing: LinkIcon(external: true),
onTap: () async {
var uri = Uri.tryParse(widget.supplierPart.link);
if (uri != null && await canLaunchUrl(uri)) {
await launchUrl(uri);
}
widget.supplierPart.openLink();
},
),
);
@ -266,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;
}
}

View file

@ -14,6 +14,7 @@ import "package:inventree/preferences.dart";
import "package:inventree/l10.dart";
import "package:inventree/settings/select_server.dart";
import "package:inventree/user_profile.dart";
import "package:inventree/widget/order/so_shipment_list.dart";
import "package:inventree/widget/part/category_display.dart";
import "package:inventree/widget/drawer.dart";
@ -55,6 +56,7 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
bool homeShowPo = false;
bool homeShowSo = false;
bool homeShowShipments = false;
bool homeShowSubscribed = false;
bool homeShowManufacturers = false;
bool homeShowCustomers = false;
@ -112,6 +114,20 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
);
}
void _showPendingShipments(BuildContext context) {
if (!InvenTreeAPI().checkConnection()) return;
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SOShipmentListWidget(
title: L10().shipmentsPending,
filters: {"order_outstanding": "true", "shipped": "false"},
),
),
);
}
void _showSuppliers(BuildContext context) {
if (!InvenTreeAPI().checkConnection()) return;
@ -167,6 +183,11 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
homeShowSo =
await InvenTreeSettingsManager().getValue(INV_HOME_SHOW_SO, true)
as bool;
homeShowShipments =
await InvenTreeSettingsManager().getValue(INV_HOME_SHOW_SHIPMENTS, true)
as bool;
homeShowManufacturers =
await InvenTreeSettingsManager().getValue(
INV_HOME_SHOW_MANUFACTURERS,
@ -325,6 +346,19 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
);
}
if (homeShowShipments && InvenTreeSalesOrderShipment().canView) {
tiles.add(
_listTile(
context,
L10().shipmentsPending,
TablerIcons.cube_send,
callback: () {
_showPendingShipments(context);
},
),
);
}
// Suppliers
if (homeShowSuppliers && InvenTreePurchaseOrder().canView) {
tiles.add(

View file

@ -241,7 +241,7 @@ class _POLineDetailWidgetState extends RefreshableState<POLineDetailWidget> {
}
// External link
if (widget.item.link.isNotEmpty) {
if (widget.item.hasLink) {
tiles.add(
ListTile(
title: Text(L10().link),

View file

@ -7,6 +7,8 @@ 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/inventree/parameter.dart";
import "package:inventree/l10.dart";
import "package:inventree/inventree/model.dart";
@ -21,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";
@ -50,6 +53,7 @@ class _PurchaseOrderDetailState
int completedLines = 0;
int attachmentCount = 0;
int parameterCount = 0;
bool showCameraShortcut = true;
bool supportProjectCodes = false;
@ -174,8 +178,12 @@ class _PurchaseOrderDetailState
/// Upload an image against the current PurchaseOrder
Future<void> _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,9 +303,19 @@ class _PurchaseOrderDetailState
}
}
InvenTreePurchaseOrderAttachment().countAttachments(widget.order.pk).then((
int value,
) {
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) {
if (mounted) {
setState(() {
attachmentCount = value;
@ -565,30 +583,31 @@ 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(
ListTile? parameterTile = ShowParametersItem(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreePurchaseOrderAttachment(),
InvenTreePurchaseOrder.MODEL_TYPE,
widget.order.pk,
parameterCount,
widget.order.canEdit,
);
if (parameterTile != null) {
tiles.add(parameterTile);
}
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;
}

View file

@ -3,13 +3,16 @@ 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/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";
@ -42,6 +45,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
bool showCameraShortcut = true;
bool supportsProjectCodes = false;
int attachmentCount = 0;
int parameterCount = 0;
@override
String getAppBarTitle() {
@ -108,8 +112,12 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
/// Upload an image for this order
Future<void> _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,9 +274,19 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
true,
);
InvenTreeSalesOrderAttachment().countAttachments(widget.order.pk).then((
int value,
) {
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) {
if (mounted) {
setState(() {
attachmentCount = value;
@ -375,24 +393,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
Color lineColor = widget.order.complete ? COLOR_SUCCESS : COLOR_WARNING;
// Shipment progress
if (widget.order.shipmentCount > 0) {
tiles.add(
ListTile(
title: Text(L10().shipments),
subtitle: ProgressBar(
widget.order.completedShipmentCount.toDouble(),
maximum: widget.order.shipmentCount.toDouble(),
),
leading: Icon(TablerIcons.truck_delivery),
trailing: LargeText(
"${widget.order.completedShipmentCount} / ${widget.order.shipmentCount}",
color: lineColor,
),
),
);
}
// Line items progress
tiles.add(
ListTile(
title: Text(L10().lineItems),
@ -408,6 +409,24 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
),
);
// Shipment progress
if (widget.order.shipmentCount > 0) {
tiles.add(
ListTile(
title: Text(L10().shipments),
subtitle: ProgressBar(
widget.order.completedShipmentCount.toDouble(),
maximum: widget.order.shipmentCount.toDouble(),
),
leading: Icon(TablerIcons.cube_send),
trailing: LargeText(
"${widget.order.completedShipmentCount} / ${widget.order.shipmentCount}",
color: lineColor,
),
),
);
}
// Extra line items
tiles.add(
ListTile(
@ -491,30 +510,31 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
),
);
// 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(
ListTile? parameterTile = ShowParametersItem(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreeSalesOrderAttachment(),
InvenTreeSalesOrder.MODEL_TYPE,
widget.order.pk,
parameterCount,
widget.order.canEdit,
);
if (parameterTile != null) {
tiles.add(parameterTile);
}
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;
}
@ -522,8 +542,8 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
List<Widget> getTabIcons(BuildContext context) {
return [
Tab(text: L10().details),
Tab(text: L10().shipments),
Tab(text: L10().lineItems),
Tab(text: L10().shipments),
];
}
@ -531,8 +551,8 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
List<Widget> getTabs(BuildContext context) {
return [
ListView(children: orderTiles(context)),
PaginatedSOShipmentList({"order": widget.order.pk.toString()}),
PaginatedSOLineList({"order": widget.order.pk.toString()}),
PaginatedSOShipmentList({"order": widget.order.pk.toString()}),
];
}
}

View file

@ -0,0 +1,69 @@
import "package:flutter/material.dart";
import "package:inventree/api.dart";
import "package:inventree/inventree/model.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/inventree/sales_order.dart";
import "package:inventree/inventree/stock.dart";
import "package:inventree/l10.dart";
import "package:inventree/widget/link_icon.dart";
import "package:inventree/widget/paginator.dart";
class PaginatedSOAllocationList extends PaginatedSearchWidget {
const PaginatedSOAllocationList(Map<String, String> filters)
: super(filters: filters);
@override
String get searchTitle => L10().allocatedStock;
@override
_PaginatedSOAllocationListState createState() =>
_PaginatedSOAllocationListState();
}
class _PaginatedSOAllocationListState
extends PaginatedSearchState<PaginatedSOAllocationList> {
_PaginatedSOAllocationListState() : super();
@override
String get prefix => "so_allocation_";
@override
Map<String, String> get orderingOptions => {};
@override
Map<String, Map<String, dynamic>> get filterOptions => {};
@override
Future<InvenTreePageResponse?> requestPage(
int limit,
int offset,
Map<String, String> params,
) async {
final page = await InvenTreeSalesOrderAllocation().listPaginated(
limit,
offset,
filters: params,
);
return page;
}
@override
Widget buildItem(BuildContext context, InvenTreeModel model) {
InvenTreeSalesOrderAllocation allocation =
model as InvenTreeSalesOrderAllocation;
InvenTreePart? part = allocation.part;
InvenTreeStockItem? stockItem = allocation.stockItem;
return ListTile(
title: Text(part?.fullname ?? ""),
subtitle: Text(part?.description ?? ""),
onTap: () async {
stockItem?.goToDetailPage(context);
},
leading: InvenTreeAPI().getThumbnail(allocation.part?.thumbnail ?? ""),
trailing: LargeText(stockItem?.serialOrQuantityDisplay() ?? ""),
);
}
}

View file

@ -244,7 +244,7 @@ class _SOLineDetailWidgetState extends RefreshableState<SoLineDetailWidget> {
}
// External link
if (widget.item.link.isNotEmpty) {
if (widget.item.hasLink) {
tiles.add(
ListTile(
title: Text(L10().link),

View file

@ -0,0 +1,381 @@
/*
* Widget for displaying detail view of a single SalesOrderShipment
*/
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/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";
import "package:inventree/widget/attachment_widget.dart";
import "package:inventree/widget/link_icon.dart";
import "package:inventree/widget/notes_widget.dart";
import "package:inventree/widget/order/so_allocation_list.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart";
class SOShipmentDetailWidget extends StatefulWidget {
const SOShipmentDetailWidget(this.shipment, {Key? key}) : super(key: key);
final InvenTreeSalesOrderShipment shipment;
@override
_SOShipmentDetailWidgetState createState() => _SOShipmentDetailWidgetState();
}
class _SOShipmentDetailWidgetState
extends RefreshableState<SOShipmentDetailWidget> {
_SOShipmentDetailWidgetState();
// The SalesOrder associated with this shipment
InvenTreeSalesOrder? order;
int attachmentCount = 0;
bool showCameraShortcut = true;
@override
String getAppBarTitle() => L10().shipment;
@override
List<Widget> appBarActions(BuildContext context) {
List<Widget> actions = [];
if (widget.shipment.canEdit) {
actions.add(
IconButton(
icon: Icon(TablerIcons.edit),
onPressed: () {
_editShipment(context);
},
),
);
}
return actions;
}
Future<void> _editShipment(BuildContext context) async {
var fields = widget.shipment.formFields();
fields["order"]?["hidden"] = true;
widget.shipment.editForm(
context,
L10().shipmentEdit,
fields: fields,
onSuccess: (data) async {
refresh(context);
showSnackIcon(L10().shipmentUpdated, success: true);
},
);
}
@override
Future<void> request(BuildContext context) async {
await widget.shipment.reload();
showCameraShortcut = await InvenTreeSettingsManager().getBool(
INV_SO_SHOW_CAMERA,
true,
);
final so = await InvenTreeSalesOrder().get(widget.shipment.orderId);
if (mounted) {
setState(() {
order = (so is InvenTreeSalesOrder ? so : null);
});
}
InvenTreeAttachment()
.countAttachments(
InvenTreeSalesOrderShipment.MODEL_TYPE,
widget.shipment.pk,
)
.then((int value) {
if (mounted) {
setState(() {
attachmentCount = value;
});
}
});
}
/// Upload an image for this shipment
Future<void> _uploadImage(BuildContext context) async {
InvenTreeAttachment()
.uploadImage(
InvenTreeSalesOrderShipment.MODEL_TYPE,
widget.shipment.pk,
prefix: widget.shipment.reference,
)
.then((result) => refresh(context));
}
/// Mark this shipment as shipped
Future<void> _sendShipment(BuildContext context) async {
Map<String, dynamic> fields = {
"shipment_date": {
"value": widget.shipment.isShipped
? widget.shipment.shipment_date!
: DateTime.now().toIso8601String().split("T").first,
},
"tracking_number": {"value": widget.shipment.tracking_number},
"invoice_number": {"value": widget.shipment.invoice_number},
};
launchApiForm(
context,
L10().shipmentSend,
widget.shipment.SHIP_SHIPMENT_URL,
fields,
method: "POST",
onSuccess: (data) {
refresh(context);
showSnackIcon(L10().shipmentUpdated, success: true);
},
);
}
@override
List<SpeedDialChild> actionButtons(BuildContext context) {
List<SpeedDialChild> actions = [];
if (!widget.shipment.canEdit) {
// Exit early if we do not have edit permissions
return actions;
}
if (showCameraShortcut) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.camera, color: Colors.blue),
label: L10().takePicture,
onTap: () async {
_uploadImage(context);
},
),
);
}
// Check shipment
if (!widget.shipment.isChecked && !widget.shipment.isShipped) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.check, color: Colors.green),
label: L10().shipmentCheck,
onTap: () async {
widget.shipment
.update(values: {"checked_by": InvenTreeAPI().userId})
.then((_) {
showSnackIcon(L10().shipmentUpdated, success: true);
refresh(context);
});
},
),
);
}
// Uncheck shipment
if (widget.shipment.isChecked && !widget.shipment.isShipped) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.x, color: Colors.red),
label: L10().shipmentUncheck,
onTap: () async {
widget.shipment.update(values: {"checked_by": null}).then((_) {
showSnackIcon(L10().shipmentUpdated, success: true);
refresh(context);
});
},
),
);
}
// Send shipment
if (!widget.shipment.isShipped) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.truck_delivery, color: Colors.green),
label: L10().shipmentSend,
onTap: () async {
_sendShipment(context);
},
),
);
}
// TODO: Cancel shipment
return actions;
}
List<Widget> shipmentTiles(BuildContext context) {
List<Widget> tiles = [];
final bool checked = widget.shipment.isChecked;
final bool shipped = widget.shipment.isShipped;
final bool delivered = widget.shipment.isDelivered;
// Order information
if (order != null) {
// Add SalesOrder information
tiles.add(
Card(
child: ListTile(
title: Text(order!.reference),
subtitle: Text(order!.description),
leading: api.getThumbnail(order!.customer?.thumbnail ?? ""),
trailing: LargeText(
api.SalesOrderStatus.label(order!.status),
color: api.SalesOrderStatus.color(order!.status),
),
onTap: () {
order!.goToDetailPage(context);
},
),
),
);
}
// Shipment reference number
tiles.add(
ListTile(
title: Text(L10().shipmentReference),
trailing: LargeText(widget.shipment.reference),
leading: Icon(TablerIcons.hash),
),
);
if (widget.shipment.invoice_number.isNotEmpty) {
tiles.add(
ListTile(
title: Text(L10().invoiceNumber),
trailing: LargeText(widget.shipment.invoice_number),
leading: Icon(TablerIcons.invoice),
),
);
}
// Tracking Number
if (widget.shipment.tracking_number.isNotEmpty) {
tiles.add(
ListTile(
title: Text(L10().trackingNumber),
trailing: LargeText(widget.shipment.tracking_number),
leading: Icon(TablerIcons.truck_delivery),
),
);
}
if (checked || !shipped) {
tiles.add(
ListTile(
title: Text(L10().shipmentChecked),
trailing: LargeText(
checked ? L10().yes : L10().no,
color: checked ? COLOR_SUCCESS : COLOR_WARNING,
),
leading: Icon(
checked ? TablerIcons.circle_check : TablerIcons.circle_x,
color: checked ? COLOR_SUCCESS : COLOR_WARNING,
),
),
);
}
tiles.add(
ListTile(
title: Text(L10().shipmentDate),
trailing: LargeText(
shipped ? widget.shipment.shipment_date! : L10().notApplicable,
),
leading: Icon(
shipped ? TablerIcons.calendar_check : TablerIcons.calendar_cancel,
color: shipped ? COLOR_SUCCESS : COLOR_WARNING,
),
),
);
tiles.add(
ListTile(
title: Text(L10().deliveryDate),
trailing: LargeText(
delivered ? widget.shipment.delivery_date! : L10().notApplicable,
),
leading: Icon(
delivered ? TablerIcons.calendar_check : TablerIcons.calendar_cancel,
color: delivered ? COLOR_SUCCESS : COLOR_WARNING,
),
),
);
// External link
if (widget.shipment.hasLink) {
tiles.add(
ListTile(
title: Text(L10().link),
leading: Icon(TablerIcons.link, color: COLOR_ACTION),
trailing: LinkIcon(),
onTap: () async {
widget.shipment.openLink();
},
),
);
}
// Notes tile
tiles.add(
ListTile(
title: Text(L10().notes),
leading: Icon(TablerIcons.note, color: COLOR_ACTION),
trailing: LinkIcon(),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => NotesWidget(widget.shipment),
),
);
},
),
);
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;
}
@override
List<Widget> getTabIcons(BuildContext context) {
return [Tab(text: L10().details), Tab(text: L10().allocatedStock)];
}
@override
List<Widget> getTabs(BuildContext context) {
return [
ListView(children: shipmentTiles(context)),
PaginatedSOAllocationList({
"order": widget.shipment.orderId.toString(),
"shipment": widget.shipment.pk.toString(),
}),
];
}
}

View file

@ -7,6 +7,35 @@ import "package:inventree/widget/paginator.dart";
import "package:inventree/inventree/model.dart";
import "package:inventree/l10.dart";
import "package:inventree/widget/refreshable_state.dart";
class SOShipmentListWidget extends StatefulWidget {
const SOShipmentListWidget({
this.title = "",
this.filters = const {},
Key? key,
}) : super(key: key);
final Map<String, String> filters;
final String title;
@override
_SOShipmentListWidgetState createState() => _SOShipmentListWidgetState();
}
class _SOShipmentListWidgetState
extends RefreshableState<SOShipmentListWidget> {
_SOShipmentListWidgetState();
@override
String getAppBarTitle() => widget.title;
@override
Widget getBody(BuildContext context) {
return PaginatedSOShipmentList(widget.filters);
}
}
class PaginatedSOShipmentList extends PaginatedSearchWidget {
const PaginatedSOShipmentList(Map<String, String> filters)
@ -51,15 +80,21 @@ class _PaginatedSOShipmentListState
Widget buildItem(BuildContext context, InvenTreeModel model) {
InvenTreeSalesOrderShipment shipment = model as InvenTreeSalesOrderShipment;
InvenTreeSalesOrder? order = shipment.order;
return ListTile(
title: Text(shipment.reference),
subtitle: Text(shipment.tracking_number),
leading: shipment.shipped
title: Text(
"${order?.reference ?? L10().salesOrder} - ${shipment.reference}",
),
subtitle: Text(order?.description ?? L10().description),
onTap: () async {
shipment.goToDetailPage(context);
},
leading: shipment.isShipped
? Icon(TablerIcons.calendar_check, color: COLOR_SUCCESS)
: Icon(TablerIcons.calendar_cancel, color: COLOR_WARNING),
trailing: shipment.shipped
trailing: shipment.isShipped
? LargeText(shipment.shipment_date ?? "")
: null,
: LargeText(L10().pending),
);
}
}

View file

@ -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<PartParameterWidget> {
class _ParameterWidgetState extends RefreshableState<ParameterWidget> {
_ParameterWidgetState();
@override
@ -34,9 +40,16 @@ class _ParameterWidgetState extends RefreshableState<PartParameterWidget> {
@override
Widget getBody(BuildContext context) {
Map<String, String> filters = {"part": widget.part.pk.toString()};
Map<String, String> 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<PartParameterWidget> {
* Widget for displaying a paginated list of Part parameters
*/
class PaginatedParameterList extends PaginatedSearchWidget {
const PaginatedParameterList(Map<String, String> filters)
const PaginatedParameterList(Map<String, String> filters, this.editable)
: super(filters: filters);
final bool editable;
@override
String get searchTitle => L10().parameters;
@ -75,7 +90,7 @@ class _PaginatedParameterState
int offset,
Map<String, String> 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<void> editParameter(InvenTreePartParameter parameter) async {
Future<void> 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),
),
);
},
);
}

View file

@ -4,6 +4,8 @@ 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";
@ -15,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";
@ -47,13 +49,13 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
InvenTreePart? parentPart;
int parameterCount = 0;
InvenTreeStockLocation? defaultLocation;
bool allowLabelPrinting = false;
bool showParameters = false;
bool showBom = false;
bool showPricing = false;
int parameterCount = 0;
int attachmentCount = 0;
int bomCount = 0;
int usedInCount = 0;
@ -61,8 +63,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
InvenTreePartPricing? partPricing;
List<Map<String, dynamic>> labels = [];
@override
String getAppBarTitle() => L10().partDetails;
@ -119,19 +119,13 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
);
}
if (labels.isNotEmpty) {
if (allowLabelPrinting && api.supportsModernLabelPrinting) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.printer),
label: L10().printLabel,
onTap: () async {
selectAndPrintLabel(
context,
labels,
widget.part.pk,
"part",
"part=${widget.part.pk}",
);
selectAndPrintLabel(context, "part", widget.part.pk);
},
),
);
@ -158,10 +152,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
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,
@ -177,33 +167,71 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
// If the part points to a parent "template" part, request that too
int? templatePartId = part.variantOf;
if (templatePartId == null) {
parentPart = null;
} else {
final result = await InvenTreePart().get(templatePartId);
if (result != null && result is InvenTreePart) {
parentPart = result;
} else {
parentPart = null;
if (templatePartId != null) {
InvenTreePart().get(templatePartId).then((value) {
if (mounted) {
setState(() {
parentPart = value as InvenTreePart?;
});
}
});
} else if (mounted) {
setState(() {
parentPart = null;
});
}
// Is there a default location specified for this part?
int? defaultLocationId = part.defaultLocation;
if (defaultLocationId != null) {
InvenTreeStockLocation().get(defaultLocationId).then((value) {
if (mounted) {
setState(() {
defaultLocation = value as InvenTreeStockLocation?;
});
}
});
} else if (mounted) {
setState(() {
defaultLocation = null;
});
}
// Request part test templates
if (part.isTestable) {
part.getTestTemplates().then((value) {
if (mounted) {
setState(() {});
}
});
}
// Request the number of attachments
InvenTreePartAttachment().countAttachments(part.pk).then((int 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) {
@ -248,26 +276,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
});
}
});
List<Map<String, dynamic>> _labels = [];
allowLabelPrinting &= api.supportsMixin("labels");
if (allowLabelPrinting) {
String model_type = api.supportsModernLabelPrinting
? InvenTreePart.MODEL_TYPE
: "part";
String item_key = api.supportsModernLabelPrinting ? "items" : "part";
_labels = await getLabelTemplates(model_type, {
item_key: widget.part.pk.toString(),
});
}
if (mounted) {
setState(() {
labels = _labels;
});
}
}
void _editPartDialog(BuildContext context) {
@ -412,6 +420,20 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
),
);
if (defaultLocation != null) {
tiles.add(
ListTile(
title: Text(L10().locationDefault),
subtitle: Text(defaultLocation!.pathstring),
leading: Icon(TablerIcons.map_pin),
trailing: LinkIcon(),
onTap: () {
defaultLocation?.goToDetailPage(context);
},
),
);
}
if (showPricing && partPricing != null) {
String pricing = formatPriceRange(
partPricing?.overallMin,
@ -524,7 +546,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
}
// External link?
if (part.link.isNotEmpty) {
if (part.hasLink) {
tiles.add(
ListTile(
title: Text("${part.link}"),
@ -587,29 +609,31 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
),
);
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(
ListTile? parameterTile = ShowParametersItem(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreePartAttachment(),
InvenTreePart.MODEL_TYPE,
part.pk,
parameterCount,
part.canEdit,
);
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreePart.MODEL_TYPE,
part.pk,
L10().part,
attachmentCount,
part.canEdit,
),
),
);
},
),
);
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles;
}
@ -703,10 +727,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
List<Widget> getTabIcons(BuildContext context) {
List<Widget> icons = [Tab(text: L10().details), Tab(text: L10().stock)];
if (showParameters) {
icons.add(Tab(text: L10().parameters));
}
return icons;
}
@ -719,11 +739,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
),
PaginatedStockItemList({"part": part.pk.toString()}),
];
if (showParameters) {
tabs.add(PaginatedParameterList({"part": part.pk.toString()}));
}
return tabs;
}
}

View file

@ -64,6 +64,7 @@ void showSnackIcon(
},
),
backgroundColor: backgroundColor,
showCloseIcon: true,
action: onAction == null
? null
: SnackBarAction(

View file

@ -38,7 +38,7 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
final InvenTreeStockLocation? location;
List<Map<String, dynamic>> labels = [];
bool allowLabelPrinting = false;
@override
String getAppBarTitle() {
@ -179,19 +179,15 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
);
}
if (widget.location != null && labels.isNotEmpty) {
if (widget.location != null &&
allowLabelPrinting &&
api.supportsModernLabelPrinting) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.printer),
label: L10().printLabel,
onTap: () async {
selectAndPrintLabel(
context,
labels,
widget.location!.pk,
"location",
"location=${widget.location!.pk}",
);
selectAndPrintLabel(context, "stocklocation", widget.location!.pk);
},
),
);
@ -236,33 +232,10 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
}
}
List<Map<String, dynamic>> _labels = [];
bool allowLabelPrinting = await InvenTreeSettingsManager().getBool(
allowLabelPrinting = await InvenTreeSettingsManager().getBool(
INV_ENABLE_LABEL_PRINTING,
true,
);
allowLabelPrinting &= api.supportsMixin("labels");
if (allowLabelPrinting) {
if (widget.location != null) {
String model_type = api.supportsModernLabelPrinting
? InvenTreeStockLocation.MODEL_TYPE
: "location";
String item_key = api.supportsModernLabelPrinting
? "items"
: "location";
_labels = await getLabelTemplates(model_type, {
item_key: widget.location!.pk.toString(),
});
}
}
if (mounted) {
setState(() {
labels = _labels;
});
}
}
Future<void> _newLocation(BuildContext context) async {

View file

@ -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";
@ -49,6 +50,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
// Linked data fields
InvenTreePart? part;
InvenTreeStockLocation? defaultLocation;
InvenTreeSalesOrder? salesOrder;
InvenTreeCompany? customer;
@ -127,19 +129,13 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
);
}
if (labels.isNotEmpty) {
if (allowLabelPrinting && api.supportsModernLabelPrinting) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.printer),
label: L10().printLabel,
onTap: () async {
selectAndPrintLabel(
context,
labels,
widget.item.pk,
"stock",
"item=${widget.item.pk}",
);
selectAndPrintLabel(context, "stockitem", widget.item.pk);
},
),
);
@ -195,10 +191,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
return actions;
}
// Is label printing enabled for this StockItem?
// This will be determined when the widget is loaded
List<Map<String, dynamic>> labels = [];
bool allowLabelPrinting = false;
int attachmentCount = 0;
@override
@ -234,6 +227,23 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
stockShowTests &= part?.isTrackable ?? false;
// Request default location
int? defaultLocationId = part?.defaultLocation;
if (defaultLocationId != null) {
InvenTreeStockLocation().get(defaultLocationId).then((value) {
if (mounted) {
setState(() {
defaultLocation = value as InvenTreeStockLocation?;
});
}
});
} else if (mounted) {
setState(() {
defaultLocation = null;
});
}
// Request test results (async)
if (stockShowTests) {
widget.item.getTestResults().then((value) {
@ -246,9 +256,9 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
}
// Request the number of attachments
InvenTreeStockItemAttachment().countAttachments(widget.item.pk).then((
int value,
) {
InvenTreeAttachment()
.countAttachments(InvenTreeStockItem.MODEL_TYPE, widget.item.pk)
.then((int value) {
if (mounted) {
setState(() {
attachmentCount = value;
@ -300,31 +310,10 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
}
}
List<Map<String, dynamic>> _labels = [];
bool allowLabelPrinting = await InvenTreeSettingsManager().getBool(
allowLabelPrinting = await InvenTreeSettingsManager().getBool(
INV_ENABLE_LABEL_PRINTING,
true,
);
allowLabelPrinting &= api.supportsMixin("labels");
// Request information on labels available for this stock item
if (allowLabelPrinting) {
String model_type = api.supportsModernLabelPrinting
? InvenTreeStockItem.MODEL_TYPE
: "stock";
String item_key = api.supportsModernLabelPrinting ? "items" : "item";
// Clear the existing labels list
_labels = await getLabelTemplates(model_type, {
item_key: widget.item.pk.toString(),
});
}
if (mounted) {
setState(() {
labels = _labels;
});
}
}
/// Delete the stock item from the database
@ -569,6 +558,21 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
);
}
if (defaultLocation != null &&
defaultLocation?.pk != widget.item.locationId) {
tiles.add(
ListTile(
title: Text(L10().locationDefault),
subtitle: Text(defaultLocation!.pathstring),
leading: Icon(TablerIcons.map_pin),
trailing: LinkIcon(),
onTap: () {
defaultLocation?.goToDetailPage(context);
},
),
);
}
// Quantity information
if (widget.item.isSerialized()) {
tiles.add(
@ -744,13 +748,13 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
tiles.add(
ListTile(
title: Text(L10().lastStocktake),
subtitle: Text(widget.item.stocktakeDateString),
trailing: LargeText(widget.item.stocktakeDateString),
leading: Icon(TablerIcons.calendar),
),
);
}
if (widget.item.link.isNotEmpty) {
if (widget.item.hasLink) {
tiles.add(
ListTile(
title: Text("${widget.item.link}"),
@ -834,29 +838,19 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
),
);
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(
ListTile? attachmentTile = ShowAttachmentsItem(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreeStockItemAttachment(),
InvenTreeStockItem.MODEL_TYPE,
widget.item.pk,
L10().stockItem,
attachmentCount,
widget.item.canEdit,
),
),
);
},
),
);
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles;
}
}

View file

@ -1,7 +1,7 @@
name: inventree
description: InvenTree stock management
version: 0.19.2+101
version: 0.21.1+107
environment:
sdk: ^3.8.1

60
update-flutter-nix.sh Normal file
View file

@ -0,0 +1,60 @@
#!/usr/bin/env bash
set -e
# 0. Abhängigkeiten prüfen
for cmd in jq curl sed nix; do
command -v $cmd >/dev/null 2>&1 || { echo "Fehler: $cmd nicht installiert!"; exit 1; }
done
# 1. Version aus .fvmrc extrahieren
if [ ! -f .fvmrc ]; then
echo "Fehler: .fvmrc nicht gefunden!"
exit 1
fi
FLUTTER_VERSION=$(jq -r .flutter .fvmrc)
echo "Gesuchte Flutter Version: $FLUTTER_VERSION"
# 2. Commit-Hash und Version aus Devbox-API holen
API_URL="https://search.devbox.sh/v2/pkg?name=flutter"
RELEASES_JSON=$(curl -s "$API_URL")
# Alle Versionen extrahieren und sortieren
ALL_VERSIONS=$(echo "$RELEASES_JSON" | jq -r '.releases[].version' | sort -V)
# Finde die gewünschte oder nächsthöhere Version
FOUND_VERSION=$(echo "$ALL_VERSIONS" | awk -v v="$FLUTTER_VERSION" '$0 >= v { print; exit }')
if [ -z "$FOUND_VERSION" ]; then
echo "Fehler: Keine passende Flutter-Version gefunden."
exit 1
fi
if [ "$FOUND_VERSION" != "$FLUTTER_VERSION" ]; then
echo "Hinweis: Exakte Version nicht gefunden, benutze stattdessen Version $FOUND_VERSION."
fi
# Commit-Hash für x86_64-linux extrahieren
COMMIT=$(echo "$RELEASES_JSON" | jq -r --arg v "$FOUND_VERSION" '.releases[] | select(.version==$v) | .platforms[] | select(.system=="x86_64-linux") | .commit_hash' | head -n 1)
if [ -z "$COMMIT" ] || [ "$COMMIT" == "null" ]; then
echo "Fehler: Kein Commit-Hash für Version $FOUND_VERSION und Plattform x86_64-linux gefunden."
exit 1
fi
echo "Gefundener Commit: $COMMIT (Version: $FOUND_VERSION)"
# 3. Die flake.nix patchen (Backup anlegen)
sed -i.bak "s|nixpkgs-flutter.url = \"github:NixOS/nixpkgs/[a-f0-9]*\";|nixpkgs-flutter.url = \"github:NixOS/nixpkgs/$COMMIT\";|" flake.nix
# 4. Den Flake-Lock aktualisieren
nix flake update nixpkgs-flutter
# 5. Optional: direnv reload
if command -v direnv >/dev/null 2>&1; then
direnv reload
fi
echo "Erfolgreich! Die flake.nix nutzt nun den Commit für Flutter $FLUTTER_VERSION (oder höher)."