Merge branch 'master' of https://github.com/inventree/InvenTree into pui-only
This commit is contained in:
commit
7c36e5bc8b
|
|
@ -4,7 +4,7 @@
|
|||
<p>Open Source Inventory Management System </p>
|
||||
|
||||
<!-- Badges -->
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](https://opensource.org/license/MIT)
|
||||

|
||||
[](https://inventree.readthedocs.io/en/latest/?badge=latest)
|
||||

|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
|
|
@ -1,11 +1,20 @@
|
|||
---
|
||||
title: Platform UI / React
|
||||
title: React Frontend Development
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
The new React-based UI will not be available by default. In order to set your development environment up to view the frontend, follow this guide.
|
||||
The new UI requires a separate frontend server to run to serve data for the new Frontend.
|
||||
The following documentation details how to setup and run a development installation of the InvenTree frontend user interface.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
To run the frontend development server, you will need to have the following installed:
|
||||
|
||||
- Node.js
|
||||
- Yarn
|
||||
|
||||
!!! note "Devcontainer"
|
||||
The [devcontainer](./devcontainer.md) setup already includes all prerequisite packages, and is ready to run the frontend server.
|
||||
|
||||
### Install
|
||||
|
||||
|
|
@ -79,3 +88,27 @@ When running the frontend development server, some features may not work entirel
|
|||
#### SSO Login
|
||||
|
||||
When logging into the frontend dev server via SSO, the redirect URL may not redirect correctly.
|
||||
|
||||
## Testing
|
||||
|
||||
The frontend codebase it tested using [Playwright](https://playwright.dev/). There are a large number of tests that cover the frontend codebase, which are run automatically as part of the CI pipeline.
|
||||
|
||||
### Install Playwright
|
||||
|
||||
To install the required packages to run the tests, you can use the following command:
|
||||
|
||||
```bash
|
||||
cd src/frontend
|
||||
npx playwright install
|
||||
```
|
||||
|
||||
### Running Tests
|
||||
|
||||
To run the tests locally, in an interactive editor, you can use the following command:
|
||||
|
||||
```bash
|
||||
cd src/frontend
|
||||
npx playwright test --ui
|
||||
```
|
||||
|
||||
This will first launch the backend server (at `http://localhost:8000`), and then run the tests against the frontend server (at `http://localhost:5173`). An interactive browser window will open, and you can run the tests individually or as a group.
|
||||
|
|
|
|||
|
|
@ -4,19 +4,104 @@ title: User Interface Mixin
|
|||
|
||||
## User Interface Mixin
|
||||
|
||||
The *User Interface* mixin class provides a set of methods to implement custom functionality for the InvenTree web interface.
|
||||
The `UserInterfaceMixin` class provides a set of methods to implement custom functionality for the InvenTree web interface.
|
||||
|
||||
### Enable User Interface Mixin
|
||||
|
||||
To enable user interface plugins, the global setting `ENABLE_PLUGINS_INTERFACE` must be enabled, in the [plugin settings](../../settings/global.md#plugin-settings).
|
||||
|
||||
## Plugin Context
|
||||
## Custom UI Features
|
||||
|
||||
When rendering certain content in the user interface, the rendering functions are passed a `context` object which contains information about the current page being rendered. The type of the `context` object is defined in the `PluginContext` file:
|
||||
The InvenTree user interface functionality can be extended in various ways using plugins. Multiple types of user interface *features* can be added to the InvenTree user interface.
|
||||
|
||||
{{ includefile("src/frontend/src/components/plugins/PluginContext.tsx", title="Plugin Context", fmt="javascript") }}
|
||||
The entrypoint for user interface plugins is the `UserInterfaceMixin` class, which provides a number of methods which can be overridden to provide custom functionality. The `get_ui_features` method is used to extract available user interface features from the plugin:
|
||||
|
||||
## Custom Panels
|
||||
::: plugin.base.ui.mixins.UserInterfaceMixin.get_ui_features
|
||||
options:
|
||||
show_bases: False
|
||||
show_root_heading: False
|
||||
show_root_toc_entry: False
|
||||
show_sources: True
|
||||
summary: False
|
||||
members: []
|
||||
|
||||
Note here that the `get_ui_features` calls other methods to extract the available features from the plugin, based on the requested feature type. These methods can be overridden to provide custom functionality.
|
||||
|
||||
!!! info "Implementation"
|
||||
Your custom plugin does not need to override the `get_ui_features` method. Instead, override one of the other methods to provide custom functionality.
|
||||
|
||||
### UIFeature Return Type
|
||||
|
||||
The `get_ui_features` method should return a list of `UIFeature` objects, which define the available user interface features for the plugin. The `UIFeature` class is defined as follows:
|
||||
|
||||
::: plugin.base.ui.mixins.UIFeature
|
||||
options:
|
||||
show_bases: False
|
||||
show_root_heading: False
|
||||
show_root_toc_entry: False
|
||||
show_sources: True
|
||||
summary: False
|
||||
members: []
|
||||
|
||||
Note that the *options* field contains fields which may be specific to a particular feature type - read the documentation below on each feature type for more information.
|
||||
|
||||
### Dynamic Feature Loading
|
||||
|
||||
Each of the provided feature types can be loaded dynamically by the plugin, based on the information provided in the API request. For example, the plugin can choose to show or hide a particular feature based on the user permissions, or the current state of the system.
|
||||
|
||||
For examples of this dynamic feature loading, refer to the [sample plugin](#sample-plugin) implementation which demonstrates how to dynamically load custom panels based on the provided context.
|
||||
|
||||
### Javascript Source Files
|
||||
|
||||
The rendering function for the custom user interface features expect that the plugin provides a Javascript source file which contains the necessary code to render the custom content. The path to this file should be provided in the `source` field of the `UIFeature` object.
|
||||
|
||||
Note that the `source` field can include the name of the function to be called (if this differs from the expected default function name).
|
||||
|
||||
For example:
|
||||
|
||||
```
|
||||
"source": "/static/plugins/my_plugin/my_plugin.js:my_custom_function"
|
||||
```
|
||||
|
||||
## Available UI Feature Types
|
||||
|
||||
The following user interface feature types are available:
|
||||
|
||||
### Dashboard Items
|
||||
|
||||
The InvenTree dashboard is a collection of "items" which are displayed on the main dashboard page. Custom dashboard items can be added to the dashboard by implementing the `get_ui_dashboard_items` method:
|
||||
|
||||
::: plugin.base.ui.mixins.UserInterfaceMixin.get_ui_dashboard_items
|
||||
options:
|
||||
show_bases: False
|
||||
show_root_heading: False
|
||||
show_root_toc_entry: False
|
||||
show_sources: True
|
||||
summary: False
|
||||
members: []
|
||||
|
||||
#### Dashboard Item Options
|
||||
|
||||
The *options* field in the returned `UIFeature` object can contain the following properties:
|
||||
|
||||
::: plugin.base.ui.mixins.CustomDashboardItemOptions
|
||||
options:
|
||||
show_bases: False
|
||||
show_root_heading: False
|
||||
show_root_toc_entry: False
|
||||
show_sources: True
|
||||
summary: False
|
||||
members: []
|
||||
|
||||
#### Source Function
|
||||
|
||||
The frontend code expects a path to a javascript file containing a function named `renderDashboardItem` which will be called to render the custom dashboard item. Note that this function name can be overridden by appending the function name in the `source` field of the `UIFeature` object.
|
||||
|
||||
#### Example
|
||||
|
||||
Refer to the [sample plugin](#sample-plugin) for an example of how to implement server side rendering for custom panels.
|
||||
|
||||
### Panels
|
||||
|
||||
Many of the pages in the InvenTree web interface are built using a series of "panels" which are displayed on the page. Custom panels can be added to these pages, by implementing the `get_ui_panels` method:
|
||||
|
||||
|
|
@ -29,71 +114,11 @@ Many of the pages in the InvenTree web interface are built using a series of "pa
|
|||
summary: False
|
||||
members: []
|
||||
|
||||
The custom panels can display content which is generated either on the server side, or on the client side (see below).
|
||||
#### Panel Options
|
||||
|
||||
### Server Side Rendering
|
||||
The *options* field in the returned `UIFeature` object can contain the following properties:
|
||||
|
||||
The panel content can be generated on the server side, by returning a 'content' attribute in the response. This 'content' attribute is expected to be raw HTML, and is rendered directly into the page. This is particularly useful for displaying static content.
|
||||
|
||||
Server-side rendering is simple to implement, and can make use of the powerful Django templating system.
|
||||
|
||||
Refer to the [sample plugin](#sample-plugin) for an example of how to implement server side rendering for custom panels.
|
||||
|
||||
**Advantages:**
|
||||
|
||||
- Simple to implement
|
||||
- Can use Django templates to render content
|
||||
- Has access to the full InvenTree database, and content not available on the client side (via the API)
|
||||
|
||||
**Disadvantages:**
|
||||
|
||||
- Content is rendered on the server side, and cannot be updated without a page refresh
|
||||
- Content is not interactive
|
||||
|
||||
### Client Side Rendering
|
||||
|
||||
The panel content can also be generated on the client side, by returning a 'source' attribute in the response. This 'source' attribute is expected to be a URL which points to a JavaScript file which will be loaded by the client.
|
||||
|
||||
Refer to the [sample plugin](#sample-plugin) for an example of how to implement client side rendering for custom panels.
|
||||
|
||||
#### Panel Render Function
|
||||
|
||||
The JavaScript file must implement a `renderPanel` function, which is called by the client when the panel is rendered. This function is passed two parameters:
|
||||
|
||||
- `target`: The HTML element which the panel content should be rendered into
|
||||
- `context`: A dictionary of context data which can be used to render the panel content
|
||||
|
||||
|
||||
**Example**
|
||||
|
||||
```javascript
|
||||
export function renderPanel(target, context) {
|
||||
target.innerHTML = "<h1>Hello, world!</h1>";
|
||||
}
|
||||
```
|
||||
|
||||
#### Panel Visibility Function
|
||||
|
||||
The JavaScript file can also implement a `isPanelHidden` function, which is called by the client to determine if the panel is displayed. This function is passed a single parameter, *context* - which is the same as the context data passed to the `renderPanel` function.
|
||||
|
||||
The `isPanelHidden` function should return a boolean value, which determines if the panel is displayed or not, based on the context data.
|
||||
|
||||
If the `isPanelHidden` function is not implemented, the panel will be displayed by default.
|
||||
|
||||
**Example**
|
||||
|
||||
```javascript
|
||||
export function isPanelHidden(context) {
|
||||
// Only visible for active parts
|
||||
return context.model == 'part' && context.instance?.active;
|
||||
}
|
||||
```
|
||||
|
||||
## Custom UI Functions
|
||||
|
||||
User interface plugins can also provide additional user interface functions. These functions can be provided via the `get_ui_features` method:
|
||||
|
||||
::: plugin.base.ui.mixins.UserInterfaceMixin.get_ui_features
|
||||
::: plugin.base.ui.mixins.CustomPanelOptions
|
||||
options:
|
||||
show_bases: False
|
||||
show_root_heading: False
|
||||
|
|
@ -102,36 +127,55 @@ User interface plugins can also provide additional user interface functions. The
|
|||
summary: False
|
||||
members: []
|
||||
|
||||
::: plugin.samples.integration.user_interface_sample.SampleUserInterfacePlugin.get_ui_features
|
||||
#### Source Function
|
||||
|
||||
The frontend code expects a path to a javascript file containing a function named `renderPanel` which will be called to render the custom panel. Note that this function name can be overridden by appending the function name in the `source` field of the `UIFeature` object.
|
||||
|
||||
#### Example
|
||||
|
||||
Refer to the [sample plugin](#sample-plugin) for an example of how to implement server side rendering for custom panels.
|
||||
|
||||
### Template Editors
|
||||
|
||||
The `get_ui_template_editors` feature type can be used to provide custom template editors.
|
||||
|
||||
::: plugin.base.ui.mixins.UserInterfaceMixin.get_ui_template_editors
|
||||
options:
|
||||
show_bases: False
|
||||
show_root_heading: False
|
||||
show_root_toc_entry: False
|
||||
show_source: True
|
||||
members: []
|
||||
|
||||
|
||||
Currently the following functions can be extended:
|
||||
|
||||
### Template editors
|
||||
|
||||
The `template_editor` feature type can be used to provide custom template editors.
|
||||
|
||||
**Example:**
|
||||
|
||||
{{ includefile("src/backend/InvenTree/plugin/samples/static/plugin/sample_template.js", title="sample_template.js", fmt="javascript") }}
|
||||
show_bases: False
|
||||
show_root_heading: False
|
||||
show_root_toc_entry: False
|
||||
show_sources: True
|
||||
summary: False
|
||||
members: []
|
||||
|
||||
### Template previews
|
||||
|
||||
The `template_preview` feature type can be used to provide custom template previews. For an example see:
|
||||
The `get_ui_template_previews` feature type can be used to provide custom template previews:
|
||||
|
||||
**Example:**
|
||||
::: plugin.base.ui.mixins.UserInterfaceMixin.get_ui_template_previews
|
||||
options:
|
||||
show_bases: False
|
||||
show_root_heading: False
|
||||
show_root_toc_entry: False
|
||||
show_sources: True
|
||||
summary: False
|
||||
members: []
|
||||
|
||||
{{ includefile("src/backend/InvenTree/plugin/samples/static/plugin/sample_template.js", title="sample_template.js", fmt="javascript") }}
|
||||
## Plugin Context
|
||||
|
||||
When rendering certain content in the user interface, the rendering functions are passed a `context` object which contains information about the current page being rendered. The type of the `context` object is defined in the `PluginContext` file:
|
||||
|
||||
{{ includefile("src/frontend/src/components/plugins/PluginContext.tsx", title="Plugin Context", fmt="javascript") }}
|
||||
|
||||
This context data can be used to provide additional information to the rendering functions, and can be used to dynamically render content based on the current state of the system.
|
||||
|
||||
### Additional Context
|
||||
|
||||
Note that additional context can be passed to the rendering functions by adding additional key-value pairs to the `context` field in the `UIFeature` return type (provided by the backend via the API). This field is optional, and can be used at the discretion of the plugin developer.
|
||||
|
||||
## Sample Plugin
|
||||
|
||||
A sample plugin which implements custom user interface functionality is provided in the InvenTree source code:
|
||||
A sample plugin which implements custom user interface functionality is provided in the InvenTree source code, which provides a full working example of how to implement custom user interface functionality.
|
||||
|
||||
::: plugin.samples.integration.user_interface_sample.SampleUserInterfacePlugin
|
||||
options:
|
||||
|
|
|
|||
|
|
@ -93,6 +93,14 @@ There are two options to mark items as "received":
|
|||
!!! note "Permissions"
|
||||
Marking line items as received requires the "Purchase order" ADD permission.
|
||||
|
||||
### Item Location
|
||||
|
||||
When receiving items from a purchase order, the location of the items must be specified. There are multiple ways to specify the location:
|
||||
|
||||
* **Order Destination**: The *destination* field of the purchase order can be set to a specific location. When receiving items, the location will default to the destination location.
|
||||
|
||||
* **Line Item Location**: Each line item can have a specific location set. When receiving items, the location will default to the line item location. *Note: A destination specified at the line item level will override the destination specified at the order level.*
|
||||
|
||||
### Received Items
|
||||
|
||||
Each item marked as "received" is automatically converted into a stock item.
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ To enable access to the InvenTree server from other computers on a local network
|
|||
|
||||
## Background Worker
|
||||
|
||||
The background task manager must also be started. The InvenTree server is already running in the foreground, so open a *new shell window* to start the server.
|
||||
The [background task manager](./processes.md#background-worker) must also be started. The InvenTree server is already running in the foreground, so open a *new shell window* to start the server.
|
||||
|
||||
### Activate Virtual Environment
|
||||
|
||||
|
|
@ -55,4 +55,4 @@ source ./env/bin/activate
|
|||
(env) invoke worker
|
||||
```
|
||||
|
||||
This will start the background process manager in the current shell.
|
||||
This will start an instance of the background worker in the current shell.
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ The InvenTree web server is hosted using [Gunicorn](https://gunicorn.org/). Guni
|
|||
|
||||
### Supervisor
|
||||
|
||||
[Supervisor](http://supervisord.org/) is a process control system which monitors and controls multiple background processes. It is used in the InvenTree production setup to ensure that the server and background worker processes are always running.
|
||||
[Supervisor](http://supervisord.org/) is a process control system which monitors and controls multiple background processes. It is used in the InvenTree production setup to ensure that the [web server](./processes.md#web-server) and [background worker](./processes.md#background-worker) processes are always running.
|
||||
|
||||
## Gunicorn
|
||||
|
||||
|
|
@ -98,11 +98,12 @@ The InvenTree server (and background task manager) should now be running!
|
|||
In addition to the InvenTree server, you will need a method of delivering static and media files (this is *not* handled by the InvenTree server in a production environment).
|
||||
|
||||
!!! info "Read More"
|
||||
Refer to the [Serving Files](./serving_files.md) section for more details
|
||||
Refer to the [proxy server documentation](./processes.md#proxy-server) for more details
|
||||
|
||||
### Next Steps
|
||||
|
||||
You (or your system administrator) may wish to perform further steps such as placing the InvenTree server behind a reverse-proxy such as [caddy](https://caddyserver.com/), or [nginx](https://www.nginx.com/).
|
||||
You (or your system administrator) may wish to perform further steps such as placing the InvenTree server behind a [reverse proxy](./processes.md#proxy-server) such as [caddy](https://caddyserver.com/), or [nginx](https://www.nginx.com/).
|
||||
|
||||
As production environment options are many and varied, such tasks are outside the scope of this documentation.
|
||||
|
||||
There are many great online tutorials about running django applications in production!
|
||||
|
|
|
|||
|
|
@ -279,12 +279,12 @@ InvenTree requires some external directories for storing files:
|
|||
|
||||
| Environment Variable | Configuration File | Description | Default |
|
||||
| --- | --- | --- | --- |
|
||||
| INVENTREE_STATIC_ROOT | static_root | [Static files](./serving_files.md#static-files) directory | *Not specified* |
|
||||
| INVENTREE_MEDIA_ROOT | media_root | [Media files](./serving_files.md#media-files) directory | *Not specified* |
|
||||
| INVENTREE_STATIC_ROOT | static_root | [Static files](./processes.md#static-files) directory | *Not specified* |
|
||||
| INVENTREE_MEDIA_ROOT | media_root | [Media files](./processes.md#media-files) directory | *Not specified* |
|
||||
| INVENTREE_BACKUP_DIR | backup_dir | Backup files directory | *Not specified* |
|
||||
|
||||
!!! tip "Serving Files"
|
||||
Read the [Serving Files](./serving_files.md) section for more information on hosting *static* and *media* files
|
||||
Read the [proxy server documentation](./processes.md#proxy-server) for more information on hosting *static* and *media* files
|
||||
|
||||
### Static File Storage
|
||||
|
||||
|
|
@ -369,6 +369,15 @@ The logo and custom messages can be changed/set:
|
|||
| INVENTREE_CUSTOMIZE | customize.navbar_message | Custom message for navbar | *Not specified* |
|
||||
| INVENTREE_CUSTOMIZE | customize.hide_pui_banner | Disable PUI banner | False |
|
||||
|
||||
The INVENTREE_CUSTOMIZE environment variable must contain a json object with the keys from the table above and
|
||||
the wanted values. Example:
|
||||
|
||||
```
|
||||
INVENTREE_CUSTOMIZE={"login_message":"Hallo Michi","hide_pui_banner":"True"}
|
||||
```
|
||||
|
||||
This example removes the PUI banner and sets a login message. Take care of the double quotes.
|
||||
|
||||
If you want to remove the InvenTree branding as far as possible from your end-user also check the [global server settings](../settings/global.md#server-settings).
|
||||
|
||||
!!! info "Custom Splash Screen Path"
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ Plugins are supported natively when running under docker. There are two ways to
|
|||
The production docker compose configuration outlined on this page uses [Caddy](https://caddyserver.com/) to serve static files and media files. If you change this configuration, you will need to ensure that static and media files are served correctly.
|
||||
|
||||
!!! info "Read More"
|
||||
Refer to the [Serving Files](./serving_files.md) section for more details
|
||||
Refer to the [proxy server documentation](./processes.md#proxy-server) for more details
|
||||
|
||||
### SSL Certificates
|
||||
|
||||
|
|
@ -99,45 +99,11 @@ The example docker compose file launches the following containers:
|
|||
|
||||
| Container | Description |
|
||||
| --- | --- |
|
||||
| inventree-db | PostgreSQL database |
|
||||
| inventree-server | Gunicorn web server |
|
||||
| inventree-worker | django-q background worker |
|
||||
| inventree-proxy | Caddy file server and reverse proxy |
|
||||
| *inventree-cache* | *redis cache (optional)* |
|
||||
|
||||
#### PostgreSQL Database
|
||||
|
||||
A PostgreSQL database container which requires a username:password combination (which can be changed). This uses the official [PostgreSQL image](https://hub.docker.com/_/postgres).
|
||||
|
||||
#### Web Server
|
||||
|
||||
Runs an InvenTree web server instance, powered by a Gunicorn web server.
|
||||
|
||||
#### Background Worker
|
||||
|
||||
Runs the InvenTree background worker process. This spins up a second instance of the *inventree* container, with a different entrypoint command.
|
||||
|
||||
#### Proxy Server
|
||||
|
||||
Caddy working as a reverse proxy, separating requests for static and media files, and directing everything else to Gunicorn.
|
||||
|
||||
This container uses the official [caddy image](https://hub.docker.com/_/caddy).
|
||||
|
||||
!!! info "Nginx Proxy"
|
||||
An alternative is to run nginx as the reverse proxy. A sample configuration file is provided in the `./contrib/container/` source directory.
|
||||
|
||||
#### Redis Cache
|
||||
|
||||
Redis is used as cache storage for the InvenTree server. This provides a more performant caching system which can useful in larger installations.
|
||||
|
||||
This container uses the official [redis image](https://hub.docker.com/_/redis).
|
||||
|
||||
!!! info "Redis on Docker"
|
||||
Docker adds an additional network layer - that might lead to lower performance than bare metal.
|
||||
To optimize and configure your redis deployment follow the [official docker guide](https://redis.io/docs/getting-started/install-stack/docker/#configuration).
|
||||
|
||||
!!! tip "Enable Cache"
|
||||
While a redis container is provided in the default configuration, by default it is not enabled in the Inventree server. You can enable redis cache support by following the [caching configuration guide](./config.md#caching)
|
||||
| inventree-db | [PostgreSQL database](./processes.md#database) |
|
||||
| inventree-server | [InvenTree web server](./processes.md#web-server) |
|
||||
| inventree-worker | [django-q background worker](./processes.md#background-worker) |
|
||||
| inventree-proxy | [Caddy file server and reverse proxy](./processes.md#proxy-server) |
|
||||
| *inventree-cache* | [*redis cache (optional)*](./processes.md#cache-server) |
|
||||
|
||||
### Data Volume
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ The following files required for this setup are provided with the InvenTree sour
|
|||
|
||||
Download these files to a directory on your local machine.
|
||||
|
||||
!!! warning "File Extensions"
|
||||
If your computer adds *.txt* extensions to any of the downloaded files, rename the file and remove the added extension before continuing!
|
||||
|
||||
!!! success "Working Directory"
|
||||
This tutorial assumes you are working from a directory where all of these files are located.
|
||||
|
||||
|
|
@ -101,10 +104,11 @@ docker compose up -d
|
|||
|
||||
This command launches the following containers:
|
||||
|
||||
- `inventree-db` - PostgreSQL database
|
||||
- `inventree-server` - InvenTree web server
|
||||
- `inventree-worker` - Background worker
|
||||
- `inventree-proxy` - Caddy reverse proxy
|
||||
- `inventree-db` - [PostgreSQL database](./processes.md#database)
|
||||
- `inventree-server` - [InvenTree web server](./processes.md#web-server)
|
||||
- `inventree-worker` - [Background worker](./processes.md#background-worker)
|
||||
- `inventree-proxy` - [Caddy reverse proxy](./processes.md#proxy-server)
|
||||
- `inventree-cache` - [Redis cache](./processes.md#cache-server)
|
||||
|
||||
!!! success "Up and Running!"
|
||||
You should now be able to view the InvenTree login screen at [http://inventree.localhost](http://inventree.localhost) (or whatever custom domain you have configured in the `.env` file).
|
||||
|
|
|
|||
|
|
@ -66,14 +66,14 @@ In addition to the location where the InvenTree source code is located, you will
|
|||
InvenTree requires a directory for storage of [static files](./config.md#static-file-storage).
|
||||
|
||||
!!! info "Read More"
|
||||
Refer to the [Serving Files](./serving_files.md) section for more details
|
||||
Refer to the [proxy server documentation](./processes.md#proxy-server) for more details
|
||||
|
||||
#### Media Files
|
||||
|
||||
InvenTree requires a directory for storage of [user uploaded files](./config.md#uploaded-file-storage)
|
||||
|
||||
!!! info "Read More"
|
||||
Refer to the [Serving Files](./serving_files.md) section for more details
|
||||
Refer to the [proxy server documentation](./processes.md#proxy-server) for more details
|
||||
|
||||
#### Backup Directory
|
||||
|
||||
|
|
|
|||
|
|
@ -132,11 +132,14 @@ To update InvenTree run `apt install --only-upgrade inventree` - this might need
|
|||
## Controlling InvenTree
|
||||
|
||||
### Services
|
||||
|
||||
InvenTree installs multiple services that can be controlled with your local system runner (`service` or `systemctl`).
|
||||
The service `inventree` controls everything, `inventree-web` the (internal) webserver and `inventree-worker` the background worker(s).
|
||||
The service `inventree` controls everything, `inventree-web` (the [InvenTree web server](./processes.md#web-server)) and `inventree-worker` the [background worker(s)](./processes.md#background-worker).
|
||||
|
||||
More instances of the worker can be instantiated from the command line. This is only meant for advanced users.
|
||||
|
||||
This sample script launches 3 services. By default, 1 is launched.
|
||||
|
||||
```bash
|
||||
inventree scale worker=3
|
||||
```
|
||||
|
|
|
|||
|
|
@ -29,30 +29,7 @@ Independent of the preferred installation method, InvenTree provides a number of
|
|||
|
||||
## System Components
|
||||
|
||||
The InvenTree server ecosystem consists of the following components:
|
||||
|
||||
### Database
|
||||
|
||||
A persistent database is required for data storage. By default, InvenTree is configured to use [PostgreSQL](https://www.postgresql.org/) - and this is the recommended database backend to use. However, InvenTree can also be configured to connect to any database backend [supported by Django]({% include "django.html" %}/ref/databases/)
|
||||
|
||||
|
||||
### Web Server
|
||||
|
||||
The bulk of the InvenTree code base supports the custom web server application. The web server application services user requests and facilitates database access. The webserver provides access to the [API](../api/api.md) for performing database query actions.
|
||||
|
||||
InvenTree uses [Gunicorn](https://gunicorn.org/) as the web server - a Python WSGI HTTP server.
|
||||
|
||||
### Background Tasks
|
||||
|
||||
A separate application handles management of [background tasks](../settings/tasks.md), separate to user-facing web requests. The background task manager is required to perform asynchronous tasks, such as sending emails, generating reports, and other long-running tasks.
|
||||
|
||||
InvenTree uses [django-q2](https://django-q2.readthedocs.io/en/master/) as the background task manager.
|
||||
|
||||
### File Storage
|
||||
|
||||
Uploaded *media* files (images, attachments, reports, etc) and *static* files (javascript, html) are stored to a persistent storage volume. A *file server* is required to serve these files to the user.
|
||||
|
||||
InvenTree uses [Caddy](https://caddyserver.com/) as a file server, which is configured to serve both *static* and *media* files. Additionally, Caddy provides SSL termination and reverse proxy services.
|
||||
The InvenTree software stack is composed of multiple components, each of which is required for a fully functional server environment. Your can read more about the [InvenTree processes here](./processes.md).
|
||||
|
||||
## OS Requirements
|
||||
|
||||
|
|
@ -132,4 +109,4 @@ So, for a production setup, you should set `INVENTREE_DEBUG=false` in the [confi
|
|||
Turning off DEBUG mode creates further work for the system administrator. In particular, when running in DEBUG mode, the InvenTree web server natively manages *static* and *media* files, which means that the InvenTree server can run "monolithically" without the need for a separate web server.
|
||||
|
||||
!!! info "Read More"
|
||||
Refer to the [Serving Files](./serving_files.md) section for more details
|
||||
Refer to the [proxy server documentation](./processes.md#proxy-server) for more details
|
||||
|
|
|
|||
|
|
@ -0,0 +1,103 @@
|
|||
---
|
||||
title: InvenTree Processes
|
||||
---
|
||||
|
||||
## InvenTree Processes
|
||||
|
||||
InvenTree is a complex application, and there are a number of processes which must be running in order for the system to operate correctly. Typically, these processes are started automatically when the InvenTree application stack is launched. However, in some cases, it may be necessary to start these processes manually.
|
||||
|
||||
System administrators should be aware of the following processes when configuring an InvenTree installation:
|
||||
|
||||
### Database
|
||||
|
||||
At the core of the InvenTree application is the SQL database. The database is responsible for storing all of the persistent data which is used by the InvenTree application.
|
||||
|
||||
InvenTree supports a [number of database backends]({% include "django.html" %}/ref/databases) - which typically require their own process to be running.
|
||||
|
||||
Refer to the [database configuration guide](./config.md#database-options) for more information on selecting and configuring the database backend.
|
||||
|
||||
In running InvenTree via [docker compose](./docker_install.md), the database process is managed by the `inventree-db` service which provides a [Postgres docker container](https://hub.docker.com/_/postgres).
|
||||
|
||||
### Web Server
|
||||
|
||||
The InvenTree web server is responsible for serving the InvenTree web interface to users. The web server is a [Django](https://www.djangoproject.com/) application, which is run using the [Gunicorn](https://gunicorn.org/) WSGI server.
|
||||
|
||||
The web server interfaces with the backend database and provides a [REST API](../api/api.md) (via the [Django REST framework](https://www.django-rest-framework.org/)) which is used by the frontend web interface.
|
||||
|
||||
In running InvenTree via [docker compose](./docker_install.md), the web server process is managed by the `inventree-server` service, which runs from a custom docker image.
|
||||
|
||||
### Proxy Server
|
||||
|
||||
In a production installation, the InvenTree web server application *does not* provide hosting of static files, or user-uploaded (media) files. Instead, these files should be served by a separate web server, such as [Caddy](https://caddyserver.com/), [Nginx](https://www.nginx.com/), or [Apache](https://httpd.apache.org/).
|
||||
|
||||
!!! info "Debug Mode"
|
||||
When running in [production mode](./bare_prod.md) (i.e. the `INVENTREE_DEBUG` flag is disabled), a separate web server is required for serving *static* and *media* files. In `DEBUG` mode, the django webserver facilitates delivery of *static* and *media* files, but this is explicitly not suitable for a production environment.
|
||||
|
||||
!!! tip "Read More"
|
||||
You can find further information in the [django documentation]({% include "django.html" %}/howto/static-files/deployment/).
|
||||
|
||||
A proxy server is required to store and serve static files (such as images, documents, etc) which are used by the InvenTree application. As django is not designed to serve static files in a production environment, a separate file server is required. For our docker compose setup, we use the `inventree-proxy` service, which runs a [Caddy](https://caddyserver.com/) proxy server to serve static files.
|
||||
|
||||
In addition to serving static files, the proxy server also provides a reverse proxy to the InvenTree web server, allowing the InvenTree web interface to be accessed via a standard HTTP/HTTPS port.
|
||||
|
||||
Further, it provides an authentication endpoint for accessing files in the `/static/` and `/media/` directories.
|
||||
|
||||
Finally, it provides a [Let's Encrypt](https://letsencrypt.org/) endpoint for automatic SSL certificate generation and renewal.
|
||||
|
||||
#### Static Files
|
||||
|
||||
Static files can be served without any need for authentication. In fact, they must be accessible *without* authentication, otherwise the unauthenticated views (such as the login screen) will not function correctly.
|
||||
|
||||
#### Media Files
|
||||
|
||||
It is highly recommended that the *media* files are served behind an authentication layer. This is because the media files are user-uploaded, and may contain sensitive information. Most modern web servers provide a way to serve files behind an authentication layer.
|
||||
|
||||
#### Example Configuration
|
||||
|
||||
The [docker production example](./docker.md) provides an example using [Caddy](https://caddyserver.com) to serve *static* and *media* files, and redirecting other requests to the InvenTree web server itself.
|
||||
|
||||
Caddy is a modern web server which is easy to configure and provides a number of useful features, including automatic SSL certificate generation.
|
||||
|
||||
#### Alternatives to Caddy
|
||||
|
||||
An alternative is to run nginx as the reverse proxy. A sample configuration file is provided in the `./contrib/container/` source directory.
|
||||
|
||||
#### Integrating with Existing Proxy
|
||||
|
||||
You may wish to integrate the InvenTree web server with an existing reverse proxy server. This is possible, but requires careful configuration to ensure that the static and media files are served correctly.
|
||||
|
||||
*Note: A custom configuration of the proxy server is outside the scope of this documentation!*
|
||||
|
||||
### Background Worker
|
||||
|
||||
The InvenTree background worker is responsible for handling [asynchronous tasks](../settings/tasks.md) which are not suitable for the main web server process. This includes tasks such as sending emails, generating reports, and other long-running tasks.
|
||||
|
||||
InvenTree uses the [django-q2](https://django-q2.readthedocs.io/en/master/) package to manage background tasks.
|
||||
|
||||
The background worker process is managed by the `inventree-worker` service in the [docker compose](./docker_install.md) setup. Note that this services runs a duplicate copy of the `inventree-server` container, but with a different entrypoint command which starts the background worker process.
|
||||
|
||||
#### Important Information
|
||||
|
||||
If the background worker process is not running, InvenTree will not be able to perform background tasks. This can lead to issues such as emails not being sent, or reports not being generated. Additionally, certain data may not be updated correctly if the background worker is not running.
|
||||
|
||||
!!! warning "Background Worker"
|
||||
The background worker process is a critical part of the InvenTree application stack. It is important that this process is running correctly in order for the InvenTree application to operate correctly.
|
||||
|
||||
#### Limitations
|
||||
|
||||
If the [cache server](#cache-server) is not running, the background worker will be limited to running a single threaded worker. This is because the background worker uses the cache server to manage task locking, and without a global cache server to communicate between processes, concurrency issues can occur.
|
||||
|
||||
### Cache Server
|
||||
|
||||
The InvenTree cache server is used to store temporary data which is shared between the InvenTree web server and the background worker processes. The cache server is also used to store task information, and to manage task locking between the background worker processes.
|
||||
|
||||
Using a cache server can significantly improve the performance of the InvenTree application, as it reduces the need to query the database for frequently accessed data.
|
||||
|
||||
InvenTree uses the [Redis](https://redis.io/) cache server to manage cache data. When running in docker, we use the official [redis image](https://hub.docker.com/_/redis).
|
||||
|
||||
!!! info "Redis on Docker"
|
||||
Docker adds an additional network layer - that might lead to lower performance than bare metal.
|
||||
To optimize and configure your redis deployment follow the [official docker guide](https://redis.io/docs/getting-started/install-stack/docker/#configuration).
|
||||
|
||||
!!! tip "Enable Cache"
|
||||
While a redis container is provided in the default configuration, by default it is not enabled in the Inventree server. You can enable redis cache support by following the [caching configuration guide](./config.md#caching)
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
---
|
||||
title: Serving Static and Media Files
|
||||
---
|
||||
|
||||
## Serving Files
|
||||
|
||||
In a production installation, the InvenTree web server application *does not* provide hosting of static files, or user-uploaded (media) files. Instead, these files should be served by a separate web server, such as [Caddy](https://caddyserver.com/), [Nginx](https://www.nginx.com/), or [Apache](https://httpd.apache.org/).
|
||||
|
||||
!!! info "Debug Mode"
|
||||
When running in [production mode](./bare_prod.md) (i.e. the `INVENTREE_DEBUG` flag is disabled), a separate web server is required for serving *static* and *media* files. In `DEBUG` mode, the django webserver facilitates delivery of *static* and *media* files, but this is explicitly not suitable for a production environment.
|
||||
|
||||
!!! tip "Read More"
|
||||
You can find further information in the [django documentation]({% include "django.html" %}/howto/static-files/deployment/).
|
||||
|
||||
There are *many* different ways that a sysadmin might wish to handle this - and it depends on your particular installation requirements.
|
||||
|
||||
### Static Files
|
||||
|
||||
Static files can be served without any need for authentication. In fact, they must be accessible *without* authentication, otherwise the unauthenticated views (such as the login screen) will not function correctly.
|
||||
|
||||
### Media Files
|
||||
|
||||
It is highly recommended that the *media* files are served behind an authentication layer. This is because the media files are user-uploaded, and may contain sensitive information. Most modern web servers provide a way to serve files behind an authentication layer.
|
||||
|
||||
### Example Configuration
|
||||
|
||||
The [docker production example](./docker.md) provides an example using [Caddy](https://caddyserver.com) to serve *static* and *media* files, and redirecting other requests to the InvenTree web server itself.
|
||||
|
||||
Caddy is a modern web server which is easy to configure and provides a number of useful features, including automatic SSL certificate generation.
|
||||
|
|
@ -18,6 +18,19 @@ If there are some icons missing in the tabler icons package, users can even inst
|
|||
|
||||
A stock location type represents a specific type of location (e.g. one specific size of drawer, shelf, ... or box) which can be assigned to multiple stock locations. In the first place, it is used to specify an icon and having the icon in sync for all locations that use this location type, but it also serves as a data field to quickly see what type of location this is. It is planned to add e.g. drawer dimension information to the location type to add a "find a matching, empty stock location" tool.
|
||||
|
||||
## External Stock Location
|
||||
An external stock location can be used to indicate that items in there might not be available
|
||||
for immediate usage. Stock items in an external location are marked with an additional icon
|
||||
in the build order line items view where the material is allocated.
|
||||
|
||||
{% with id="stock_external_icon", url="stock/stock_external_icon.png", description="External stock indication" %}
|
||||
{% include 'img.html' %}
|
||||
{% endwith %}
|
||||
|
||||
Anyhow there is no limitation on the stock item. It can be allocated as usual.
|
||||
|
||||
The external flag does not get inherited to sublocations.
|
||||
|
||||
## Stock Item
|
||||
|
||||
A *Stock Item* is an actual instance of a [*Part*](../part/part.md) item. It represents a physical quantity of the *Part* in a specific location.
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ nav:
|
|||
- Security: security.md
|
||||
- Install:
|
||||
- Introduction: start/intro.md
|
||||
- Processes: start/processes.md
|
||||
- Configuration: start/config.md
|
||||
- Docker:
|
||||
- Introduction: start/docker.md
|
||||
|
|
@ -97,7 +98,6 @@ nav:
|
|||
- Installer: start/installer.md
|
||||
- Production: start/bare_prod.md
|
||||
- Development: start/bare_dev.md
|
||||
- Serving Files: start/serving_files.md
|
||||
- User Accounts: start/accounts.md
|
||||
- Data Backup: start/backup.md
|
||||
- Invoke: start/invoke.md
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@
|
|||
},
|
||||
{
|
||||
"pattern": "https://www.reddit.com/r/InvenTree/"
|
||||
},
|
||||
{
|
||||
"pattern": "https://opensource.org/license/MIT"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -307,21 +307,21 @@ mkdocs-get-deps==0.2.0 \
|
|||
--hash=sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c \
|
||||
--hash=sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134
|
||||
# via mkdocs
|
||||
mkdocs-git-revision-date-localized-plugin==1.2.9 \
|
||||
--hash=sha256:dea5c8067c23df30275702a1708885500fadf0abfb595b60e698bffc79c7a423 \
|
||||
--hash=sha256:df9a50873fba3a42ce9123885f8c53d589e90ef6c2443fe3280ef1e8d33c8f65
|
||||
mkdocs-git-revision-date-localized-plugin==1.3.0 \
|
||||
--hash=sha256:439e2f14582204050a664c258861c325064d97cdc848c541e48bb034a6c4d0cb \
|
||||
--hash=sha256:c99377ee119372d57a9e47cff4e68f04cce634a74831c06bc89b33e456e840a1
|
||||
# via -r docs/requirements.in
|
||||
mkdocs-include-markdown-plugin==6.2.2 \
|
||||
--hash=sha256:d293950f6499d2944291ca7b9bc4a60e652bbfd3e3a42b564f6cceee268694e7 \
|
||||
--hash=sha256:f2bd5026650492a581d2fd44be6c22f90391910d76582b96a34c264f2d17875d
|
||||
mkdocs-include-markdown-plugin==7.0.0 \
|
||||
--hash=sha256:a8eac8f2e6aa391d82d1d5e473b819b52393d91464060c02db5741834fe9008b \
|
||||
--hash=sha256:bf8d19245ae3fb2eea395888e80c60bc91806a0d879279707d707896c24319c3
|
||||
# via -r docs/requirements.in
|
||||
mkdocs-macros-plugin==1.3.6 \
|
||||
--hash=sha256:074bc072cac14c28724037b6988743cd9425752bdd35ae05fbf96b1b2457f3b7 \
|
||||
--hash=sha256:74fd418c8e1f9f021b7a45bb1c7d7461d8ae09ccec241787f3971e733374da8c
|
||||
mkdocs-macros-plugin==1.3.7 \
|
||||
--hash=sha256:02432033a5b77fb247d6ec7924e72fc4ceec264165b1644ab8d0dc159c22ce59 \
|
||||
--hash=sha256:17c7fd1a49b94defcdb502fd453d17a1e730f8836523379d21292eb2be4cb523
|
||||
# via -r docs/requirements.in
|
||||
mkdocs-material==9.5.42 \
|
||||
--hash=sha256:452a7c5d21284b373f36b981a2cbebfff59263feebeede1bc28652e9c5bbe316 \
|
||||
--hash=sha256:92779b5e9b5934540c574c11647131d217dc540dce72b05feeda088c8eb1b8f2
|
||||
mkdocs-material==9.5.43 \
|
||||
--hash=sha256:4aae0664c456fd12837a3192e0225c17960ba8bf55d7f0a7daef7e4b0b914a34 \
|
||||
--hash=sha256:83be7ff30b65a1e4930dfa4ab911e75780a3afc9583d162692e434581cb46979
|
||||
# via -r docs/requirements.in
|
||||
mkdocs-material-extensions==1.3.1 \
|
||||
--hash=sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443 \
|
||||
|
|
|
|||
|
|
@ -221,6 +221,7 @@ class InfoView(AjaxView):
|
|||
'instance': InvenTree.version.inventreeInstanceName(),
|
||||
'apiVersion': InvenTree.version.inventreeApiVersion(),
|
||||
'worker_running': is_worker_running(),
|
||||
'worker_count': settings.BACKGROUND_WORKER_COUNT,
|
||||
'worker_pending_tasks': self.worker_pending_tasks(),
|
||||
'plugins_enabled': settings.PLUGINS_ENABLED,
|
||||
'plugins_install_disabled': settings.PLUGINS_INSTALL_DISABLED,
|
||||
|
|
@ -235,6 +236,9 @@ class InfoView(AjaxView):
|
|||
'platform': InvenTree.version.inventreePlatform() if is_staff else None,
|
||||
'installer': InvenTree.version.inventreeInstaller() if is_staff else None,
|
||||
'target': InvenTree.version.inventreeTarget() if is_staff else None,
|
||||
'django_admin': settings.INVENTREE_ADMIN_URL
|
||||
if (is_staff and settings.INVENTREE_ADMIN_ENABLED)
|
||||
else None,
|
||||
}
|
||||
|
||||
return JsonResponse(data)
|
||||
|
|
|
|||
|
|
@ -1,13 +1,36 @@
|
|||
"""InvenTree API version information."""
|
||||
|
||||
# InvenTree API version
|
||||
INVENTREE_API_VERSION = 273
|
||||
INVENTREE_API_VERSION = 279
|
||||
|
||||
"""Increment this API version number whenever there is a significant change to the API that any clients need to know about."""
|
||||
|
||||
|
||||
INVENTREE_API_TEXT = """
|
||||
|
||||
v279 - 2024-11-09 : https://github.com/inventree/InvenTree/pull/8458
|
||||
- Adds "order_outstanding" and "part" filters to the BuildLine API endpoint
|
||||
- Adds "order_outstanding" filter to the SalesOrderLineItem API endpoint
|
||||
|
||||
v278 - 2024-11-07 : https://github.com/inventree/InvenTree/pull/8445
|
||||
- Updates to the SalesOrder API endpoints
|
||||
- Add "shipment count" information to the SalesOrder API endpoints
|
||||
- Allow null value for SalesOrderAllocation.shipment field
|
||||
- Additional filtering options for allocation endpoints
|
||||
|
||||
v277 - 2024-11-01 : https://github.com/inventree/InvenTree/pull/8278
|
||||
- Allow build order list to be filtered by "outstanding" (alias for "active")
|
||||
|
||||
v276 - 2024-10-31 : https://github.com/inventree/InvenTree/pull/8403
|
||||
- Adds 'destination' field to the PurchaseOrder model and API endpoints
|
||||
|
||||
v275 - 2024-10-31 : https://github.com/inventree/InvenTree/pull/8396
|
||||
- Adds SKU and MPN fields to the StockItem serializer
|
||||
- Additional export options for the StockItem serializer
|
||||
|
||||
v274 - 2024-10-29 : https://github.com/inventree/InvenTree/pull/8392
|
||||
- Add more detailed information to NotificationEntry API serializer
|
||||
|
||||
v273 - 2024-10-28 : https://github.com/inventree/InvenTree/pull/8376
|
||||
- Fixes for the BuildLine API endpoint
|
||||
|
||||
|
|
|
|||
|
|
@ -1022,7 +1022,14 @@ def get_objectreference(
|
|||
ret = {}
|
||||
if url_fnc:
|
||||
ret['link'] = url_fnc()
|
||||
return {'name': str(item), 'model': str(model_cls._meta.verbose_name), **ret}
|
||||
|
||||
return {
|
||||
'name': str(item),
|
||||
'model_name': str(model_cls._meta.verbose_name),
|
||||
'model_type': str(model_cls._meta.model_name),
|
||||
'model_id': getattr(item, 'pk', None),
|
||||
**ret,
|
||||
}
|
||||
|
||||
|
||||
Inheritors_T = TypeVar('Inheritors_T')
|
||||
|
|
|
|||
|
|
@ -36,6 +36,23 @@ def get_token_from_request(request):
|
|||
return None
|
||||
|
||||
|
||||
# List of target URL endpoints where *do not* want to redirect to
|
||||
urls = [
|
||||
reverse_lazy('account_login'),
|
||||
reverse_lazy('admin:login'),
|
||||
reverse_lazy('admin:logout'),
|
||||
]
|
||||
|
||||
# Do not redirect requests to any of these paths
|
||||
paths_ignore = [
|
||||
'/api/',
|
||||
'/auth/',
|
||||
'/js/', # TODO - remove when CUI is removed
|
||||
settings.MEDIA_URL,
|
||||
settings.STATIC_URL,
|
||||
]
|
||||
|
||||
|
||||
class AuthRequiredMiddleware:
|
||||
"""Check for user to be authenticated."""
|
||||
|
||||
|
|
@ -108,22 +125,6 @@ class AuthRequiredMiddleware:
|
|||
if not authorized:
|
||||
path = request.path_info
|
||||
|
||||
# List of URL endpoints we *do not* want to redirect to
|
||||
urls = [
|
||||
reverse_lazy('account_login'),
|
||||
reverse_lazy('admin:login'),
|
||||
reverse_lazy('admin:logout'),
|
||||
]
|
||||
|
||||
# Do not redirect requests to any of these paths
|
||||
paths_ignore = [
|
||||
'/api/',
|
||||
'/auth/',
|
||||
'/js/',
|
||||
settings.MEDIA_URL,
|
||||
settings.STATIC_URL,
|
||||
]
|
||||
|
||||
if path not in urls and not any(
|
||||
path.startswith(p) for p in paths_ignore
|
||||
):
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ from django.http import Http404
|
|||
|
||||
import rest_framework.exceptions
|
||||
import sentry_sdk
|
||||
from djmoney.contrib.exchange.exceptions import MissingRate
|
||||
from sentry_sdk.integrations.django import DjangoIntegration
|
||||
|
||||
import InvenTree.version
|
||||
|
|
@ -27,6 +28,7 @@ def sentry_ignore_errors():
|
|||
"""
|
||||
return [
|
||||
Http404,
|
||||
MissingRate,
|
||||
ValidationError,
|
||||
rest_framework.exceptions.AuthenticationFailed,
|
||||
rest_framework.exceptions.NotAuthenticated,
|
||||
|
|
|
|||
|
|
@ -510,6 +510,7 @@ class UserCreateSerializer(ExtendedUserSerializer):
|
|||
def create(self, validated_data):
|
||||
"""Send an e email to the user after creation."""
|
||||
from InvenTree.helpers_model import get_base_url
|
||||
from InvenTree.tasks import email_user, offload_task
|
||||
|
||||
base_url = get_base_url()
|
||||
|
||||
|
|
@ -527,8 +528,12 @@ class UserCreateSerializer(ExtendedUserSerializer):
|
|||
if base_url:
|
||||
message += f'\n\nURL: {base_url}'
|
||||
|
||||
subject = _('Welcome to InvenTree')
|
||||
|
||||
# Send the user an onboarding email (from current site)
|
||||
instance.email_user(subject=_('Welcome to InvenTree'), message=message)
|
||||
offload_task(
|
||||
email_user, instance.pk, str(subject), str(message), force_async=True
|
||||
)
|
||||
|
||||
return instance
|
||||
|
||||
|
|
|
|||
|
|
@ -840,13 +840,20 @@ _q_worker_timeout = int(
|
|||
get_setting('INVENTREE_BACKGROUND_TIMEOUT', 'background.timeout', 90)
|
||||
)
|
||||
|
||||
|
||||
# Prevent running multiple background workers if global cache is disabled
|
||||
# This is to prevent scheduling conflicts due to the lack of a shared cache
|
||||
BACKGROUND_WORKER_COUNT = (
|
||||
int(get_setting('INVENTREE_BACKGROUND_WORKERS', 'background.workers', 4))
|
||||
if GLOBAL_CACHE_ENABLED
|
||||
else 1
|
||||
)
|
||||
|
||||
# django-q background worker configuration
|
||||
Q_CLUSTER = {
|
||||
'name': 'InvenTree',
|
||||
'label': 'Background Tasks',
|
||||
'workers': int(
|
||||
get_setting('INVENTREE_BACKGROUND_WORKERS', 'background.workers', 4)
|
||||
),
|
||||
'workers': BACKGROUND_WORKER_COUNT,
|
||||
'timeout': _q_worker_timeout,
|
||||
'retry': max(120, _q_worker_timeout + 30),
|
||||
'max_attempts': int(
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ from datetime import datetime, timedelta
|
|||
from typing import Callable, Optional
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core.exceptions import AppRegistryNotReady
|
||||
from django.core.management import call_command
|
||||
from django.db import DEFAULT_DB_ALIAS, connections
|
||||
|
|
@ -693,3 +694,14 @@ def check_for_migrations(force: bool = False, reload_registry: bool = True):
|
|||
# We should be current now - triggering full reload to make sure all models
|
||||
# are loaded fully in their new state.
|
||||
registry.reload_plugins(full_reload=True, force_reload=True, collect=True)
|
||||
|
||||
|
||||
def email_user(user_id: int, subject: str, message: str) -> None:
|
||||
"""Send a message to a user."""
|
||||
try:
|
||||
user = get_user_model().objects.get(pk=user_id)
|
||||
except Exception:
|
||||
logger.warning('User <%s> not found - cannot send welcome message', user_id)
|
||||
return
|
||||
|
||||
user.email_user(subject=subject, message=message)
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ class MiddlewareTests(InvenTreeTestCase):
|
|||
|
||||
def test_token_auth(self):
|
||||
"""Test auth with token auth."""
|
||||
target = reverse('api-license')
|
||||
|
||||
# get token
|
||||
response = self.client.get(reverse('api-token'), format='json', data={})
|
||||
token = response.data['token']
|
||||
|
|
@ -45,16 +47,17 @@ class MiddlewareTests(InvenTreeTestCase):
|
|||
# logout
|
||||
self.client.logout()
|
||||
# this should raise a 401
|
||||
self.check_path(reverse('api-license'), 401)
|
||||
|
||||
self.check_path(target, 401)
|
||||
|
||||
# Request with broken token
|
||||
self.check_path(reverse('api-license'), 401, HTTP_Authorization='Token abcd123')
|
||||
self.check_path(target, 401, HTTP_Authorization='Token abcd123')
|
||||
|
||||
# should still fail without token
|
||||
self.check_path(reverse('api-license'), 401)
|
||||
self.check_path(target, 401)
|
||||
|
||||
# request with token
|
||||
self.check_path(reverse('api-license'), HTTP_Authorization=f'Token {token}')
|
||||
self.check_path(target, HTTP_Authorization=f'Token {token}')
|
||||
|
||||
def test_error_exceptions(self):
|
||||
"""Test that ignored errors are not logged."""
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@ class BuildFilter(rest_filters.FilterSet):
|
|||
|
||||
active = rest_filters.BooleanFilter(label='Build is active', method='filter_active')
|
||||
|
||||
# 'outstanding' is an alias for 'active' here
|
||||
outstanding = rest_filters.BooleanFilter(label='Build is outstanding', method='filter_active')
|
||||
|
||||
def filter_active(self, queryset, name, value):
|
||||
"""Filter the queryset to either include or exclude orders which are active."""
|
||||
if str2bool(value):
|
||||
|
|
@ -354,6 +357,23 @@ class BuildLineFilter(rest_filters.FilterSet):
|
|||
tracked = rest_filters.BooleanFilter(label=_('Tracked'), field_name='bom_item__sub_part__trackable')
|
||||
testable = rest_filters.BooleanFilter(label=_('Testable'), field_name='bom_item__sub_part__testable')
|
||||
|
||||
part = rest_filters.ModelChoiceFilter(
|
||||
queryset=part.models.Part.objects.all(),
|
||||
label=_('Part'),
|
||||
field_name='bom_item__sub_part',
|
||||
)
|
||||
|
||||
order_outstanding = rest_filters.BooleanFilter(
|
||||
label=_('Order Outstanding'),
|
||||
method='filter_order_outstanding'
|
||||
)
|
||||
|
||||
def filter_order_outstanding(self, queryset, name, value):
|
||||
"""Filter by whether the associated BuildOrder is 'outstanding'."""
|
||||
if str2bool(value):
|
||||
return queryset.filter(build__status__in=BuildStatusGroups.ACTIVE_CODES)
|
||||
return queryset.exclude(build__status__in=BuildStatusGroups.ACTIVE_CODES)
|
||||
|
||||
allocated = rest_filters.BooleanFilter(label=_('Allocated'), method='filter_allocated')
|
||||
|
||||
def filter_allocated(self, queryset, name, value):
|
||||
|
|
@ -380,12 +400,28 @@ class BuildLineFilter(rest_filters.FilterSet):
|
|||
return queryset.exclude(flt)
|
||||
|
||||
|
||||
|
||||
class BuildLineEndpoint:
|
||||
"""Mixin class for BuildLine API endpoints."""
|
||||
|
||||
queryset = BuildLine.objects.all()
|
||||
serializer_class = build.serializers.BuildLineSerializer
|
||||
|
||||
def get_serializer(self, *args, **kwargs):
|
||||
"""Return the serializer instance for this endpoint."""
|
||||
|
||||
kwargs['context'] = self.get_serializer_context()
|
||||
|
||||
try:
|
||||
params = self.request.query_params
|
||||
|
||||
kwargs['part_detail'] = str2bool(params.get('part_detail', True))
|
||||
kwargs['build_detail'] = str2bool(params.get('build_detail', False))
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
return self.serializer_class(*args, **kwargs)
|
||||
|
||||
def get_source_build(self) -> Build:
|
||||
"""Return the source Build object for the BuildLine queryset.
|
||||
|
||||
|
|
|
|||
|
|
@ -851,8 +851,13 @@ class Build(
|
|||
if location is None:
|
||||
location = self.destination or self.part.get_default_location()
|
||||
|
||||
if self.part.has_trackable_parts and not serials:
|
||||
raise ValidationError({
|
||||
'serials': _("Serial numbers must be provided for trackable parts")
|
||||
})
|
||||
|
||||
# We are generating multiple serialized outputs
|
||||
if serials or self.part.has_trackable_parts:
|
||||
if serials:
|
||||
"""Create multiple build outputs with a single quantity of 1."""
|
||||
|
||||
# Create tracking entries for each item
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ from django.db import models, transaction
|
|||
from django.db.models import (
|
||||
BooleanField,
|
||||
Case,
|
||||
Count,
|
||||
ExpressionWrapper,
|
||||
F,
|
||||
FloatField,
|
||||
|
|
@ -179,6 +180,7 @@ class BuildSerializer(NotesFieldMixin, DataImportExportSerializerMixin, InvenTre
|
|||
|
||||
return reference
|
||||
|
||||
@transaction.atomic
|
||||
def create(self, validated_data):
|
||||
"""Save the Build object."""
|
||||
|
||||
|
|
@ -191,7 +193,7 @@ class BuildSerializer(NotesFieldMixin, DataImportExportSerializerMixin, InvenTre
|
|||
InvenTree.tasks.offload_task(
|
||||
build.tasks.create_child_builds,
|
||||
build_order.pk,
|
||||
group='build',
|
||||
group='build'
|
||||
)
|
||||
|
||||
return build_order
|
||||
|
|
@ -1276,8 +1278,6 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
|
|||
'pk',
|
||||
'build',
|
||||
'bom_item',
|
||||
'bom_item_detail',
|
||||
'part_detail',
|
||||
'quantity',
|
||||
|
||||
# Build detail fields
|
||||
|
|
@ -1313,6 +1313,11 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
|
|||
# Extra fields only for data export
|
||||
'part_description',
|
||||
'part_category_name',
|
||||
|
||||
# Extra detail (related field) serializers
|
||||
'bom_item_detail',
|
||||
'part_detail',
|
||||
'build_detail',
|
||||
]
|
||||
|
||||
read_only_fields = [
|
||||
|
|
@ -1321,6 +1326,19 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
|
|||
'allocations',
|
||||
]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
"""Determine which extra details fields should be included"""
|
||||
part_detail = kwargs.pop('part_detail', True)
|
||||
build_detail = kwargs.pop('build_detail', False)
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
if not part_detail:
|
||||
self.fields.pop('part_detail', None)
|
||||
|
||||
if not build_detail:
|
||||
self.fields.pop('build_detail', None)
|
||||
|
||||
# Build info fields
|
||||
build_reference = serializers.CharField(source='build.reference', label=_('Build Reference'), read_only=True)
|
||||
|
||||
|
|
@ -1360,8 +1378,11 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
|
|||
)
|
||||
|
||||
part_detail = part_serializers.PartBriefSerializer(source='bom_item.sub_part', many=False, read_only=True, pricing=False)
|
||||
build_detail = BuildSerializer(source='build', part_detail=False, many=False, read_only=True)
|
||||
|
||||
# Annotated (calculated) fields
|
||||
|
||||
# Total quantity of allocated stock
|
||||
allocated = serializers.FloatField(
|
||||
label=_('Allocated Stock'),
|
||||
read_only=True
|
||||
|
|
@ -1400,9 +1421,13 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
|
|||
"""
|
||||
queryset = queryset.select_related(
|
||||
'build',
|
||||
'build__part',
|
||||
'build__part__pricing_data',
|
||||
'bom_item',
|
||||
'bom_item__part',
|
||||
'bom_item__part__pricing_data',
|
||||
'bom_item__sub_part',
|
||||
'bom_item__sub_part__pricing_data'
|
||||
)
|
||||
|
||||
# Pre-fetch related fields
|
||||
|
|
@ -1476,7 +1501,7 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
|
|||
allocated=Coalesce(
|
||||
Sum('allocations__quantity'), 0,
|
||||
output_field=models.DecimalField()
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
ref = 'bom_item__sub_part__'
|
||||
|
|
|
|||
|
|
@ -1,11 +1,15 @@
|
|||
"""Background task definitions for the BuildOrder app."""
|
||||
|
||||
import logging
|
||||
import random
|
||||
import time
|
||||
|
||||
from datetime import timedelta
|
||||
from decimal import Decimal
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.template.loader import render_to_string
|
||||
from django.db import transaction
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from allauth.account.models import EmailAddress
|
||||
|
|
@ -198,27 +202,49 @@ def create_child_builds(build_id: int) -> None:
|
|||
|
||||
assembly_items = build_order.part.get_bom_items().filter(sub_part__assembly=True)
|
||||
|
||||
for item in assembly_items:
|
||||
quantity = item.quantity * build_order.quantity
|
||||
# Random delay, to reduce likelihood of race conditions from multiple build orders being created simultaneously
|
||||
time.sleep(random.random())
|
||||
|
||||
sub_order = build_models.Build.objects.create(
|
||||
part=item.sub_part,
|
||||
quantity=quantity,
|
||||
title=build_order.title,
|
||||
batch=build_order.batch,
|
||||
parent=build_order,
|
||||
target_date=build_order.target_date,
|
||||
sales_order=build_order.sales_order,
|
||||
issued_by=build_order.issued_by,
|
||||
responsible=build_order.responsible,
|
||||
)
|
||||
with transaction.atomic():
|
||||
# Atomic transaction to ensure that all child build orders are created together, or not at all
|
||||
# This is critical to prevent duplicate child build orders being created (e.g. if the task is re-run)
|
||||
|
||||
# Offload the child build order creation to the background task queue
|
||||
InvenTree.tasks.offload_task(
|
||||
create_child_builds,
|
||||
sub_order.pk,
|
||||
group='build'
|
||||
)
|
||||
sub_build_ids = []
|
||||
|
||||
for item in assembly_items:
|
||||
quantity = item.quantity * build_order.quantity
|
||||
|
||||
|
||||
# Check if the child build order has already been created
|
||||
if build_models.Build.objects.filter(
|
||||
part=item.sub_part,
|
||||
parent=build_order,
|
||||
quantity=quantity,
|
||||
status__in=BuildStatusGroups.ACTIVE_CODES
|
||||
).exists():
|
||||
continue
|
||||
|
||||
sub_order = build_models.Build.objects.create(
|
||||
part=item.sub_part,
|
||||
quantity=quantity,
|
||||
title=build_order.title,
|
||||
batch=build_order.batch,
|
||||
parent=build_order,
|
||||
target_date=build_order.target_date,
|
||||
sales_order=build_order.sales_order,
|
||||
issued_by=build_order.issued_by,
|
||||
responsible=build_order.responsible,
|
||||
)
|
||||
|
||||
sub_build_ids.append(sub_order.pk)
|
||||
|
||||
for pk in sub_build_ids:
|
||||
# Offload the child build order creation to the background task queue
|
||||
InvenTree.tasks.offload_task(
|
||||
create_child_builds,
|
||||
pk,
|
||||
group='build'
|
||||
)
|
||||
|
||||
|
||||
def notify_overdue_build_order(bo: build_models.Build):
|
||||
|
|
|
|||
|
|
@ -451,6 +451,10 @@ class BuildTest(BuildAPITest):
|
|||
# Now, let's delete each build output individually via the API
|
||||
outputs = bo.build_outputs.all()
|
||||
|
||||
# Assert that each output is currently in production
|
||||
for output in outputs:
|
||||
self.assertTrue(output.is_building)
|
||||
|
||||
delete_url = reverse('api-build-output-delete', kwargs={'pk': 1})
|
||||
|
||||
response = self.post(
|
||||
|
|
|
|||
|
|
@ -895,7 +895,9 @@ class BaseInvenTreeSetting(models.Model):
|
|||
except ValidationError as e:
|
||||
raise e
|
||||
except Exception:
|
||||
raise ValidationError({'value': _('Invalid value')})
|
||||
raise ValidationError({
|
||||
'value': _('Value does not pass validation checks')
|
||||
})
|
||||
|
||||
def validate_unique(self, exclude=None):
|
||||
"""Ensure that the key:value pair is unique. In addition to the base validators, this ensures that the 'key' is unique, using a case-insensitive comparison.
|
||||
|
|
|
|||
|
|
@ -28,6 +28,10 @@ database:
|
|||
# Set debug to False to run in production mode, or use the environment variable INVENTREE_DEBUG
|
||||
debug: True
|
||||
|
||||
# Additional debug options
|
||||
debug_querycount: False
|
||||
debug_shell: False
|
||||
|
||||
# Set to False to disable the admin interface, or use the environment variable INVENTREE_ADMIN_ENABLED
|
||||
#admin_enabled: True
|
||||
|
||||
|
|
@ -114,10 +118,10 @@ use_x_forwarded_host: false
|
|||
# Override with the environment variable INVENTREE_USE_X_FORWARDED_PORT
|
||||
use_x_forwarded_port: false
|
||||
|
||||
# Cookie settings
|
||||
cookie:
|
||||
secure: false
|
||||
samesite: false
|
||||
# Cookie settings (nominally the default settings should be fine)
|
||||
#cookie:
|
||||
# secure: false
|
||||
# samesite: false
|
||||
|
||||
# Cross Origin Resource Sharing (CORS) settings (see https://github.com/adamchainz/django-cors-headers)
|
||||
cors:
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ from django.urls import include, path
|
|||
|
||||
from drf_spectacular.utils import extend_schema
|
||||
from rest_framework import permissions
|
||||
from rest_framework.exceptions import PermissionDenied
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
|
||||
|
|
@ -20,6 +21,39 @@ from InvenTree.mixins import (
|
|||
RetrieveUpdateAPI,
|
||||
RetrieveUpdateDestroyAPI,
|
||||
)
|
||||
from users.models import check_user_permission
|
||||
|
||||
|
||||
class DataImporterPermission(permissions.BasePermission):
|
||||
"""Mixin class for determining if the user has correct permissions."""
|
||||
|
||||
def has_permission(self, request, view):
|
||||
"""Class level permission checks are handled via permissions.IsAuthenticated."""
|
||||
return True
|
||||
|
||||
def has_object_permission(self, request, view, obj):
|
||||
"""Check if the user has permission to access the imported object."""
|
||||
# For safe methods (GET, HEAD, OPTIONS), allow access
|
||||
if request.method in permissions.SAFE_METHODS:
|
||||
return True
|
||||
|
||||
if isinstance(obj, importer.models.DataImportSession):
|
||||
session = obj
|
||||
else:
|
||||
session = getattr(obj, 'session', None)
|
||||
|
||||
if session:
|
||||
if model_class := session.model_class:
|
||||
return check_user_permission(request.user, model_class, 'change')
|
||||
|
||||
return True
|
||||
|
||||
|
||||
class DataImporterPermissionMixin:
|
||||
"""Mixin class for checking permissions on DataImporter objects."""
|
||||
|
||||
# Default permissions: User must be authenticated
|
||||
permission_classes = [permissions.IsAuthenticated, DataImporterPermission]
|
||||
|
||||
|
||||
class DataImporterModelList(APIView):
|
||||
|
|
@ -44,11 +78,9 @@ class DataImporterModelList(APIView):
|
|||
return Response(models)
|
||||
|
||||
|
||||
class DataImportSessionList(BulkDeleteMixin, ListCreateAPI):
|
||||
class DataImportSessionList(DataImporterPermission, BulkDeleteMixin, ListCreateAPI):
|
||||
"""API endpoint for accessing a list of DataImportSession objects."""
|
||||
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
queryset = importer.models.DataImportSession.objects.all()
|
||||
serializer_class = importer.serializers.DataImportSessionSerializer
|
||||
|
||||
|
|
@ -59,7 +91,7 @@ class DataImportSessionList(BulkDeleteMixin, ListCreateAPI):
|
|||
ordering_fields = ['timestamp', 'status', 'model_type']
|
||||
|
||||
|
||||
class DataImportSessionDetail(RetrieveUpdateDestroyAPI):
|
||||
class DataImportSessionDetail(DataImporterPermission, RetrieveUpdateDestroyAPI):
|
||||
"""Detail endpoint for a single DataImportSession object."""
|
||||
|
||||
queryset = importer.models.DataImportSession.objects.all()
|
||||
|
|
@ -78,13 +110,18 @@ class DataImportSessionAcceptFields(APIView):
|
|||
"""Accept the field mapping for a DataImportSession."""
|
||||
session = get_object_or_404(importer.models.DataImportSession, pk=pk)
|
||||
|
||||
# Check that the user has permission to accept the field mapping
|
||||
if model_class := session.model_class:
|
||||
if not check_user_permission(request.user, model_class, 'change'):
|
||||
raise PermissionDenied()
|
||||
|
||||
# Attempt to accept the mapping (may raise an exception if the mapping is invalid)
|
||||
session.accept_mapping()
|
||||
|
||||
return Response(importer.serializers.DataImportSessionSerializer(session).data)
|
||||
|
||||
|
||||
class DataImportSessionAcceptRows(CreateAPI):
|
||||
class DataImportSessionAcceptRows(DataImporterPermission, CreateAPI):
|
||||
"""API endpoint to accept the rows for a DataImportSession."""
|
||||
|
||||
queryset = importer.models.DataImportSession.objects.all()
|
||||
|
|
@ -105,7 +142,7 @@ class DataImportSessionAcceptRows(CreateAPI):
|
|||
return ctx
|
||||
|
||||
|
||||
class DataImportColumnMappingList(ListAPI):
|
||||
class DataImportColumnMappingList(DataImporterPermissionMixin, ListAPI):
|
||||
"""API endpoint for accessing a list of DataImportColumnMap objects."""
|
||||
|
||||
queryset = importer.models.DataImportColumnMap.objects.all()
|
||||
|
|
@ -116,14 +153,14 @@ class DataImportColumnMappingList(ListAPI):
|
|||
filterset_fields = ['session']
|
||||
|
||||
|
||||
class DataImportColumnMappingDetail(RetrieveUpdateAPI):
|
||||
class DataImportColumnMappingDetail(DataImporterPermissionMixin, RetrieveUpdateAPI):
|
||||
"""Detail endpoint for a single DataImportColumnMap object."""
|
||||
|
||||
queryset = importer.models.DataImportColumnMap.objects.all()
|
||||
serializer_class = importer.serializers.DataImportColumnMapSerializer
|
||||
|
||||
|
||||
class DataImportRowList(BulkDeleteMixin, ListAPI):
|
||||
class DataImportRowList(DataImporterPermission, BulkDeleteMixin, ListAPI):
|
||||
"""API endpoint for accessing a list of DataImportRow objects."""
|
||||
|
||||
queryset = importer.models.DataImportRow.objects.all()
|
||||
|
|
@ -138,7 +175,7 @@ class DataImportRowList(BulkDeleteMixin, ListAPI):
|
|||
ordering = 'row_index'
|
||||
|
||||
|
||||
class DataImportRowDetail(RetrieveUpdateDestroyAPI):
|
||||
class DataImportRowDetail(DataImporterPermission, RetrieveUpdateDestroyAPI):
|
||||
"""Detail endpoint for a single DataImportRow object."""
|
||||
|
||||
queryset = importer.models.DataImportRow.objects.all()
|
||||
|
|
|
|||
|
|
@ -123,6 +123,14 @@ class DataImportSession(models.Model):
|
|||
|
||||
return mapping
|
||||
|
||||
@property
|
||||
def model_class(self):
|
||||
"""Return the model class for this importer."""
|
||||
serializer = self.serializer_class
|
||||
|
||||
if serializer:
|
||||
return serializer.Meta.model
|
||||
|
||||
@property
|
||||
def serializer_class(self):
|
||||
"""Return the serializer class for this importer."""
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "نقطة نهاية API غير موجودة"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "المستخدم ليس لديه الصلاحية لعرض هذا النموذج"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "Не е намерена крайна точка на API"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Потребителя няма нужното разрешение, за да вижда този модел"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API endpoint nebyl nalezen"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Uživatel nemá právo zobrazit tento model"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Chyba při ověření pluginu"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metadata musí být objekt python dict"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Metadata pluginu"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Pole metadat JSON pro použití externími pluginy"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Nesprávně naformátovaný vzor"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Neznámý formát klíče"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Chybí požadovaný klíč"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Referenční pole nemůže být prázdné"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Referenční číslo musí odpovídat požadovanému vzoru"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Referenční číslo je příliš velké"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Duplicitní názvy nemohou existovat pod stejným nadřazeným názvem"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Neplatný výběr"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Název"
|
|||
msgid "Description"
|
||||
msgstr "Popis"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Popis (volitelně)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Popis (volitelně)"
|
|||
msgid "Path"
|
||||
msgstr "Cesta"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Poznámky (volitelné)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Data čárového kódu"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Data čárového kódu třetí strany"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Hash čárového kódu"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Jedinečný hash dat čárového kódu"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Nalezen existující čárový kód"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Chyba serveru"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Server zaznamenal chybu."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Nemáte oprávnění měnit tuto uživatelskou roli."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Pouze superuživatelé mohou vytvářet nové uživatele"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Váš účet byl vytvořen."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Pro přihlášení použijte funkci obnovení hesla"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Vítejte v InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Neplatná hodnota"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Datový soubor"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Vyberte datový soubor k nahrání"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Soubor je příliš velký"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "V souboru nebyly nalezeny žádné sloupce"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "V souboru nebyly nalezeny žádné řádky s daty"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Nebyly zadány žádné řádky s daty"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Nebyly zadány žádné sloupce s daty"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Chybí povinný sloupec: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Duplicitní sloupec: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Vzdálený obraz"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL souboru vzdáleného obrázku"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Stahování obrázků ze vzdálené URL není povoleno"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Nadřazená sestava"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr "Vystavil"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Sestavení musí být zrušeno před odstraněním"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Instalovat do"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Cílová skladová položka"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr "Název dílu"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Zrušeno"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Hotovo"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "Zásoby potřebné pro objednávku sestavy"
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr "Nový {verbose_name}"
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr "Byla vytvořena nová objednávka a přiřazena k vám"
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr "{verbose_name} zrušeno"
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr "Objednávka, která je vám přidělena, byla zrušena"
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr "Čas uzamčení"
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr "Jméno úkolu"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr "Funkce"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr "Název funkce"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr "Argumenty"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr "Argumenty úlohy"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr "Argumenty klíčových slov"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr "Argumenty klíčových slov úlohy"
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Název souboru"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr "Typ modelu"
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr "Uživatel nemá oprávnění k vytváření nebo úpravám příloh pro tento model"
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API endpoint ikke fundet"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Bruger har ikke tilladelse til at se denne model"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metadata skal være et python dict objekt"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "JSON metadata felt, til brug af eksterne plugins"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Forkert formateret mønster"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Ukendt formatnøgle angivet"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Mangler nødvendig formatnøgle"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Referencefelt må ikke være tomt"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Reference skal matche det påkrævede mønster"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Referencenummer er for stort"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Ugyldigt valg"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Navn"
|
|||
msgid "Description"
|
||||
msgstr "Beskrivelse"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Beskrivelse (valgfri)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Beskrivelse (valgfri)"
|
|||
msgid "Path"
|
||||
msgstr "Sti"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Markdown noter (valgfri)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Stregkode Data"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Tredjeparts stregkode data"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Stregkode Hash"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Unik hash af stregkode data"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Eksisterende stregkode fundet"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Serverfejl"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "En fejl blev logget af serveren."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Du har ikke tilladelse til at ændre denne brugerrolle."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Kun superbrugere kan oprette nye brugere"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr "Ugyldig værdi"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Datafil"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Vælg datafilen til upload"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Filen er for stor"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Ingen kolonner fundet i fil"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Ingen datarækker fundet i fil"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Ingen data-rækker angivet"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Ingen data-kolonner angivet"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Mangler påkrævet kolonne: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Duplikeret kolonne: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Eksternt billede"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL til ekstern billedfil"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Download af billeder fra ekstern URL er ikke aktiveret"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Overordnet produktion"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Produktion skal anulleres, før den kan slettes"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Annulleret"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Fuldført"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Filnavn"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "Το API endpoint δε βρέθηκε"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Δεν έχετε δικαιώματα να το δείτε αυτό"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Σφάλμα κατά την εκτέλεση επικύρωσης προσθέτου"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Τα μεταδεδομένα πρέπει να είναι ένα αντικείμενο dict python"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Μεταδεδομένα Πρόσθετου"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "JSON πεδίο μεταδεδομένων, για χρήση από εξωτερικά πρόσθετα"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Λανθασμένο μοτίβο"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Δώσατε λάθος μορφή κλειδιού"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Λείπει το απαραίτητο κλειδί"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Το πεδίο δεν μπορεί να είναι άδειο"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Η αναφορά πρέπει να ταιριάζει με το απαιτούμενο μοτίβο"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Ο αριθμός αναφοράς είναι πολύ μεγάλος"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Διπλότυπα ονόματα δεν μπορούν να υπάρχουν στον ίδιο γονέα"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Μη έγκυρη επιλογή"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Όνομα"
|
|||
msgid "Description"
|
||||
msgstr "Περιγραφή"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Περιγραφή (προαιρετική)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Περιγραφή (προαιρετική)"
|
|||
msgid "Path"
|
||||
msgstr "Μονοπάτι"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Σημειώσεις Markdown (προαιρετικό)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Στοιχεία Barcode"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Δεδομένα barcode τρίτων"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Μοναδικό hash δεδομένων barcode"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Βρέθηκε υπάρχων barcode"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Σφάλμα διακομιστή"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Ένα σφάλμα έχει καταγραφεί από το διακομιστή."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Δεν έχετε άδεια να αλλάξετε αυτόν τον ρ
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Μόνο υπερχρήστες (superusers) μπορούν να δημιουργήσουν νέους χρήστες"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Ο λογαριασμός σας δημιουργήθηκε."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Παρακαλούμε χρησιμοποιήστε τη λειτουργία επαναφοράς κωδικού πρόσβασης για να συνδεθείτε"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Καλώς ήρθατε στο InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Μη έγκυρη τιμή"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Αρχείο Δεδομένων"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Επιλέξτε ένα αρχείο για ανέβασμα"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Το αρχείο είναι πολύ μεγάλο"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Δεν βρέθηκαν στήλες στο αρχείο"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Δεν βρέθηκαν γραμμές δεδομένων στο αρχείο"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Δεν παρασχέθηκαν σειρές δεδομένων"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Δεν δόθηκαν στήλες δεδομένων"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Λείπει απαιτούμενη στήλη: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Διπλή στήλη: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Απομακρυσμένες Εικόνες"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "Διεύθυνση URL του αρχείου απομακρυσμένης εικόνας"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Η λήψη εικόνων από απομακρυσμένο URL δεν είναι ενεργοποιημένη"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Γονική Κατασκευή"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr "Εκδόθηκε από"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Η έκδοση πρέπει να ακυρωθεί πριν διαγραφεί"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Εγκατάσταση σε"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Αποθήκη προορισμού"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Ακυρώθηκε"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Ολοκληρώθηκε"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Όνομα αρχείου"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -18,23 +18,23 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -345,51 +345,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -410,7 +410,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -418,35 +418,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -520,11 +529,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -536,61 +545,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -623,7 +632,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -636,11 +645,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1004,7 +1013,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1014,15 +1023,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1434,13 +1443,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3392,109 +3401,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3931,59 +3940,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5926,7 +5935,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6345,7 +6354,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6353,31 +6362,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6385,11 +6394,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6499,43 +6508,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6906,38 +6911,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7442,7 +7479,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7486,7 +7523,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7856,11 +7893,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7872,113 +7909,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7990,71 +8027,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "endpoint API no encontrado"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "El usuario no tiene permiso para ver este modelo"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "Correo electrónico"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Error al ejecutar la validación del plug-in"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Los metadatos deben ser un objeto diccionario de python"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Metadatos del complemento"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Campo de metadatos JSON, para uso por complementos externos"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Patrón con formato incorrecto"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Clave de formato especificado desconocida"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Falta la clave de formato necesaria"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "El campo de servidor no puede estar vacío"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "La referencia debe coincidir con la expresión regular {pattern}"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "El número de referencia es demasiado grande"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Los nombres duplicados no pueden existir bajo el mismo padre"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Selección no válida"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Nombre"
|
|||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Descripción (opcional)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Descripción (opcional)"
|
|||
msgid "Path"
|
||||
msgstr "Ruta"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Notas de Markdown (opcional)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Datos de código de barras"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Datos de código de barras de terceros"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Hash del Código de barras"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Hash único de datos de código de barras"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Código de barras existente encontrado"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Error de servidor"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Se ha registrado un error por el servidor."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "No tiene permiso para cambiar este rol de usuario."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Solo los superusuarios pueden crear nuevos usuarios"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Su cuenta ha sido creada."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Por favor, utilice la función de restablecer la contraseña para iniciar sesión"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Bienvenido a InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Valor inválido"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Archivo de datos"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Seleccione el archivo para subir"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "El archivo es demasiado grande"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "No hay columnas en el archivo"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "No hay filas de datos en el archivo"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "No se proporcionaron filas de datos"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "No hay columnas de datos proporcionadas"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Falta la columna requerida: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Columna duplicada: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Imagen remota"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL de imagen remota"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "La descarga de imágenes desde la URL remota no está habilitada"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Construcción o Armado Superior"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr "Asignado a mí"
|
|||
msgid "Issued By"
|
||||
msgstr "Emitido por"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr "Asignadas a"
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "La compilación debe cancelarse antes de poder ser eliminada"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Instalar en"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Artículo de stock de destino"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr "Nivel de construcción"
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr "Nivel de construcción"
|
|||
msgid "Part Name"
|
||||
msgstr "Nombre de parte"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr "Etiqueta del código del proyecto"
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr "Crear construcciones hijas"
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr "Generar automáticamente órdenes de construcción hijas"
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr "En espera"
|
|||
msgid "Cancelled"
|
||||
msgstr "Cancelado"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Terminado"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "Stock requerido para la orden de construcción"
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr "Resultado"
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr "Nuevo {verbose_name}"
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr "Se ha creado un nuevo pedido y se le ha asignado"
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr "{verbose_name} cancelado"
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr "Artículos Recibidos"
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr "Los artículos han sido recibidos contra una orden de compra"
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr "Los artículos han sido recibidos contra una orden de devolución"
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr "Error generado por el complemento"
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr "Está en ejecución"
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr "Tareas pendientes"
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr "Tareas Programadas"
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr "Tareas fallidas"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr "Identificación de Tarea"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr "Identificación de tarea única"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr "Bloquear"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr "Bloquear hora"
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr "Nombre de la tarea"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr "Función"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr "Nombre de la Función"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr "Argumentos"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr "Argumentos de la tarea"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr "Argumentos de palabra clave"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr "Argumentos de palabra clave de tarea"
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Nombre de Archivo"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr "Filtros del campo"
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr "Algunos campos requeridos no han sido mapeados"
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr "La columna ya fue mapeada a un campo de la base de datos"
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr "La columna no existe en el archivo de datos"
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr "El campo no existe en el modelo destino"
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr "El campo seleccionado es de solo lectura"
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr "Sesión de importación"
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr "Campo"
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr "Columna"
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr "Número de fila"
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr "Datos de la fila original"
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr "Errores"
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr "Válido"
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr "Moneda de compra de ítem de stock"
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr "Ubicación principal"
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr "El número de serie es demasiado grande"
|
|||
msgid "Parent Item"
|
||||
msgstr "Elemento padre"
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr "Expirado"
|
|||
msgid "Child Items"
|
||||
msgstr "Elementos secundarios"
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr "Introduzca el número de artículos de stock para serializar"
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr "La cantidad no debe exceder la cantidad disponible de stock ({q})"
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr "Introduzca números de serie para nuevos artículos"
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr "Ubicación de stock de destino"
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr "Campo de nota opcional"
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr "Los números de serie no se pueden asignar a esta parte"
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "Números de serie ya existen"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr "Añadir nota de transacción (opcional)"
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr "Sub-ubicación"
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr "La parte debe ser vendible"
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr "El artículo está asignado a una orden de venta"
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr "El artículo está asignado a una orden de creación"
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr "Cliente para asignar artículos de stock"
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr "La empresa seleccionada no es un cliente"
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr "Notas de asignación de stock"
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr "Debe proporcionarse una lista de artículos de stock"
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr "Notas de fusión de stock"
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr "Permitir proveedores no coincidentes"
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr "Permitir fusionar artículos de stock con diferentes partes de proveedor"
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr "Permitir estado no coincidente"
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr "Permitir fusionar artículos de stock con diferentes códigos de estado"
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr "Debe proporcionar al menos dos artículos de stock"
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr "Sin cambios"
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr "Valor de clave primaria de Stock"
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr "Notas de transacción de stock"
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "Endpoint de API no encontrado"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "El usuario no tiene permiso para ver este modelo"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "Correo electrónico"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Error al ejecutar la validación del plugin"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Los metadatos deben ser un objeto diccionario de python"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Metadatos del complemento"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Campo de metadatos JSON, para uso por complementos externos"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Patrón con formato incorrecto"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Clave de formato especificado desconocida"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Falta la clave de formato necesaria"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "El campo de servidor no puede estar vacío"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "La referencia debe coincidir con el patrón requerido"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "El número de referencia es demasiado grande"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Los nombres duplicados no pueden existir bajo el mismo padre"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Selección no válida"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Nombre"
|
|||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Descripción (opcional)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Descripción (opcional)"
|
|||
msgid "Path"
|
||||
msgstr "Ruta"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Notas (opcional)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Datos de código de barras"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Datos de código de barras de terceros"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Hash del Código de barras"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Hash único de datos de código de barras"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Código de barras existente encontrado"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Error de servidor"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Se ha registrado un error por el servidor."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "No tiene permiso para cambiar este cargo de usuario."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Solo los superusuarios pueden crear nuevos usuarios"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Su cuenta ha sido creada."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Por favor, utilice la función de restablecer la contraseña para iniciar sesión"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Bienvenido a InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Valor inválido"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Archivo de datos"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Seleccione el archivo para subir"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "El archivo es demasiado grande"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "No hay columnas en el archivo"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "No hay filas de datos en el archivo"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "No se proporcionaron filas de datos"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "No hay columnas de datos para suministrar"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Falta la columna requerida: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Columna duplicada: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Imagen remota"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL de imagen remota"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "La descarga de imágenes desde la URL remota no está habilitada"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "Address e API peida nashod"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "کاربر سطح دسترسی نمایش این مدل را ندارد"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "فایلهای داده"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "فایل را برای بارگذاری انتخاب کنید"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "حجم فایل خیلی بزرگ است"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "هیچ ستونی در فایل یافت نشد"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "هیچ ردیف داده ای در فایل یافت نشد"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "هیچ ردیف داده ای ارائه نشده است"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "هیچ ستون داده ای ارائه نشده است"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "ستون مورد نیاز وجود ندارد: \"{name}\""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "ستون تکراری: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "آدرس فایل تصویری از راه دور"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API-rajapintaa ei löydy"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Käyttäjän oikeudet eivät riitä kohteen tarkastelemiseen"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "Sähköposti"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metatietojen tulee olla python dict objekti"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Liitännäisen metadata"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "JSON metadatakenttä, ulkoisten liitännäisten käyttöön"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Virheellisesti muotoiltu malli"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Viitekenttä ei voi olla tyhjä"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Viitenumero on liian suuri"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Virheellinen valinta"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Nimi"
|
|||
msgid "Description"
|
||||
msgstr "Kuvaus"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Kuvaus (valinnainen)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Kuvaus (valinnainen)"
|
|||
msgid "Path"
|
||||
msgstr "Polku"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Viivakoodin Tiedot"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Palvelinvirhe"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr "Virheellinen arvo"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Datatiedosto"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Valitse lähetettävä datatiedosto"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Tiedosto on liian suuri"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Datarivejä ei annettu"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Datasarakkeita ei annettu"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Vaadittu sarake puuttuu: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Duplikaatti sarake: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "Kuvatiedoston URL"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Kuvien lataaminen ei ole käytössä"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Peruttu"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Valmis"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr "Uusi {verbose_name}"
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Tiedostonimi"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "למשתמש אין הרשאה לצפות במוזל הזה"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "אימייל"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "שגיאה בהפעלת אימות הפלאגין"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metadata must be a python dict object"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "מטא נתונים של תוסף"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "שדה מטא נתונים של JSON, לשימוש על ידי תוספים חיצוניים"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "דפוס מעוצב בצורה לא נכונה"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "צוין מפתח פורמט לא ידוע"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "חסר מפתח פורמט נדרש"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "שדה הפניה לא יכול להיות ריק"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "הפניה חייבת להתאים לדפוס הנדרש"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "מספר האסמכתה גדול מדי"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "שמות כפולים אינם יכולים להתקיים תחת אותו אב"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "בחירה שגויה"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "שם"
|
|||
msgid "Description"
|
||||
msgstr "תיאור"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "תיאור (לא חובה)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "תיאור (לא חובה)"
|
|||
msgid "Path"
|
||||
msgstr "נתיב"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "הערות סימון (אופציונלי)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "נתוני ברקוד"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "נתוני ברקוד של צד שלישי"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "ברקוד Hash"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Hash ייחודי של נתוני ברקוד"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "נמצא ברקוד קיים"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "שגיאת שרת"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "נרשמה שגיאה על ידי השרת."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "מקור הבנייה"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "מבוטל"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "הושלם"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "שם קובץ"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "ई-मेल"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API funkciót nem találom"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Nincs jogosultságod az adatok megtekintéséhez"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Hiba a plugin validálása közben"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "A meta adatnak egy python dict objektumnak kell lennie"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Plugin meta adatok"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "JSON meta adat mező, külső pluginok számára"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Helytelenül formázott minta"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Ismeretlen formátum kulcs lett megadva"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Hiányzó formátum kulcs"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Az azonosító mező nem lehet üres"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Az azonosítónak egyeznie kell a mintával"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Azonosító szám túl nagy"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Duplikált nevek nem lehetnek ugyanazon szülő alatt"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Érvénytelen választás"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Név"
|
|||
msgid "Description"
|
||||
msgstr "Leírás"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Leírás (opcionális)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Leírás (opcionális)"
|
|||
msgid "Path"
|
||||
msgstr "Elérési út"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Markdown megjegyzések (opcionális)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Vonalkód adat"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Harmadik féltől származó vonalkód adat"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Vonalkód hash"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Egyedi vonalkód hash"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Létező vonalkód"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Kiszolgálóhiba"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "A kiszolgáló egy hibaüzenetet rögzített."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Önnek nincs joga változtatni ezen a felhasználói szerepkörön."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Csak a superuser-ek hozhatnak létre felhasználókat"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "A fiókod sikeresen létrejött."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Kérlek használd a jelszó visszállítás funkciót a belépéshez"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Üdvözlet az InvenTree-ben"
|
|||
msgid "Invalid value"
|
||||
msgstr "Érvénytelen érték"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Adat fájl"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Fájl kiválasztása feltöltéshez"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Fájl túl nagy"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Nem találhatók oszlopok a fájlban"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Nincsenek adatsorok a fájlban"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Nincs adatsor megadva"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Nincs adat oszlop megadva"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Szükséges oszlop hiányzik: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Duplikált oszlop: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Távoli kép"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "A távoli kép URL-je"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Képek letöltése távoli URL-ről nem engedélyezett"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Szülő gyártás"
|
|||
msgid "Include Variants"
|
||||
msgstr "Változatokkal együtt"
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr "Szülő Gyártás"
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr "Hozzám rendelt"
|
|||
msgid "Issued By"
|
||||
msgstr "Kiállította"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr "Hozzárendelve"
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "A gyártást be kell fejezni a törlés előtt"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Beépítés ebbe"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Cél készlet tétel"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr "Gyártási Szint"
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr "Gyártási Szint"
|
|||
msgid "Part Name"
|
||||
msgstr "Alkatrész neve"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr "Projekt kód címke"
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr "Leszármazott Gyártások Létrehozása"
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr "Leszármazott Gyártások létrehozása automatikusan"
|
||||
|
||||
|
|
@ -1435,13 +1444,13 @@ msgstr "Felfüggesztve"
|
|||
msgid "Cancelled"
|
||||
msgstr "Törölve"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Kész"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "A gyártási utasításhoz készlet szükséges"
|
||||
|
||||
|
|
@ -3393,109 +3402,109 @@ msgstr "Eredmény"
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr "Új {verbose_name}"
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr "Egy új megrendelés létrehozva, és hozzád rendelve"
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr "{verbose_name} megszakítva"
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr "Egy hozzád rendelt megrendelés megszakítva"
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr "Készlet érkezett"
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr "Készlet érkezett egy beszerzési megrendeléshez"
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr "Készlet érkezett vissza egy visszavétel miatt"
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr "Plugin hiba"
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr "Folyamatban"
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr "Folyamatban lévő feladatok"
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr "Ütemezett Feladatok"
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr "Hibás feladatok"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr "Feladat ID"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr "Egyedi feladat ID"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr "Zárol"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr "Zárolási idő"
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr "Feladat neve"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr "Funkció"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr "Funkció neve"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr "Paraméterek"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr "Feladat paraméterei"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr "Kulcsszó paraméterek"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr "Feladat kulcsszó paraméterek"
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Fájlnév"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr "Modell típusa"
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr "A felhasználónak nincs joga létrehozni vagy módosítani ehhez a modelhez tartozó mellékleteket"
|
||||
|
||||
|
|
@ -3932,59 +3941,59 @@ msgstr "Mező Felülbírálás"
|
|||
msgid "Field Filters"
|
||||
msgstr "Mező Szűrők"
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr "Néhány kötelező mező nem került hozzárendelésre"
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr "Oszlop már adatbázis mezőhöz lett rendelve"
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr "Adatbázis mező már adatfájl oszlophoz lett rendelve"
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr "Az oszlop összerendelésnek egy helyes importálási művelethez kell kapcsolódnia"
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr "Az Oszlop nem létezik ebben a fájlban"
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr "A mező nem létezik a cél adatszerkezetben"
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr "Kijelölt mező csak olvasható"
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr "Importálási művelet"
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr "Mező"
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr "Oszlop"
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr "Sor száma"
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr "Eredeti sor adat"
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr "Hibák"
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr "Érvényes"
|
||||
|
||||
|
|
@ -5927,7 +5936,7 @@ msgstr "Eredmények"
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr "Eszerint a sablon szerint rögzített eredmények száma"
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr "Beszerzési pénzneme ennek a készlet tételnek"
|
||||
|
||||
|
|
@ -6346,7 +6355,7 @@ msgstr "Nem található megfelelő beszállítói alkatrész"
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr "Több beszállítói alkatrész található"
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6354,31 +6363,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr "Beszállítói alkatrész található"
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr "Ez a termék már bevételezve"
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr "Beszállítói vonalkód nem található"
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr "Több egyező sortétel is található"
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr "Nincs egyező sortétel"
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr "Vonalkód nem egyezik egy létező készlet tétellel sem"
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr "Készlet tétel nem egyezik a sortétellel"
|
||||
|
||||
|
|
@ -6386,11 +6395,11 @@ msgstr "Készlet tétel nem egyezik a sortétellel"
|
|||
msgid "Insufficient stock available"
|
||||
msgstr "Nincs elegendő"
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr "Készlet tétel lefoglalva egy vevői rendeléshez"
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr "Nincs elég információ"
|
||||
|
||||
|
|
@ -6500,43 +6509,39 @@ msgstr "A címke HTML nyomtatása sikertelen"
|
|||
msgid "No items provided to print"
|
||||
msgstr "Nincs elem a nyomtatáshoz"
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6907,38 +6912,70 @@ msgstr "Minta árfolyamváltó plugin"
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr "InvenTree fejlesztők"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7443,7 +7480,7 @@ msgstr "Csúcs készlethelyre szűrés"
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr "Szűrt eredmények tartalmazzák az alhelyeket"
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr "Szülő hely"
|
||||
|
||||
|
|
@ -7487,7 +7524,7 @@ msgstr "A megadott beszállítói alkatrész nem létezik"
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr "A beszállítói alkatrészhez van megadva csomagolási mennyiség, de a use_pack_size flag nincs beállítva"
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr "Sorozatszámot nem lehet megadni nem követésre kötelezett alkatrész esetén"
|
||||
|
||||
|
|
@ -7857,11 +7894,11 @@ msgstr "Szériaszám túl nagy"
|
|||
msgid "Parent Item"
|
||||
msgstr "Szülő tétel"
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr "Szülő készlet tétel"
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr "Csomagolási mennyiség használata: a megadott mennyiség ennyi csomag"
|
||||
|
||||
|
|
@ -7873,113 +7910,113 @@ msgstr "Lejárt"
|
|||
msgid "Child Items"
|
||||
msgstr "Gyermek tételek"
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr "Nyilvántartott tételek"
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr "Készlet tétel beszerzési ára, per darab vagy csomag"
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr "Minimum árazás"
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr "Maximum árazás"
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr "Add meg hány készlet tételt lássunk el sorozatszámmal"
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr "A mennyiség nem lépheti túl a rendelkezésre álló készletet ({q})"
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr "Írd be a sorozatszámokat az új tételekhez"
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr "Cél készlet hely"
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr "Opcionális megjegyzés mező"
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr "Sorozatszámokat nem lehet hozzárendelni ehhez az alkatrészhez"
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "A sorozatszámok már léteznek"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr "Válaszd ki a beépítésre szánt készlet tételt"
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr "Beépítendő mennyiség"
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr "Adja meg a beépítendő mennyiséget"
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr "Tranzakció megjegyzés hozzáadása (opcionális)"
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr "A beépítendő mennyiség legalább 1 legyen"
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr "Készlet tétel nem elérhető"
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr "A kiválasztott alkatrész nincs az alkatrészjegyzékben"
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr "A beépítendő mennyiség nem haladhatja meg az elérhető mennyiséget"
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr "Cél hely a kiszedett tételeknek"
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr "Nem támogatott statisztikai típus: "
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr "Válassz alkatrészt amire konvertáljuk a készletet"
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr "A kiválasztott alkatrész nem megfelelő a konverzióhoz"
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr "Készlet tétel hozzárendelt beszállítói alkatrésszel nem konvertálható"
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr "Cél hely a visszatérő tételeknek"
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr "Válaszd ki a státuszváltásra szánt készlet tételeket"
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr "Nincs készlet tétel kiválasztva"
|
||||
|
||||
|
|
@ -7991,71 +8028,71 @@ msgstr "Alhelyek"
|
|||
msgid "Parent stock location"
|
||||
msgstr "Felsőbb szintű készlet hely"
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr "Az alkatrésznek értékesíthetőnek kell lennie"
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr "A tétel egy vevő rendeléshez foglalt"
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr "A tétel egy gyártási utasításhoz foglalt"
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr "Vevő akihez rendeljük a készlet tételeket"
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr "A kiválasztott cég nem egy vevő"
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr "Készlet hozzárendelés megjegyzései"
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr "A készlet tételek listáját meg kell adni"
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr "Készlet összevonás megjegyzései"
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr "Nem egyező beszállítók megengedése"
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr "Különböző beszállítói alkatrészekből származó készletek összevonásának engedélyezése"
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr "Nem egyező állapotok megjelenítése"
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr "Különböző állapotú készletek összevonásának engedélyezése"
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr "Legalább két készlet tételt meg kell adni"
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr "Nincs változás"
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr "Készlet tétel elsődleges kulcs értéke"
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr "Készlet tétel státusz kódja"
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr "Készlet tranzakció megjegyzései"
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API endpoint tidak ditemukan"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Pengguna tidak memiliki izin untuk melihat model ini"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "Surel"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Pilihan tidak valid"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Nama"
|
|||
msgid "Description"
|
||||
msgstr "Keterangan"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Keterangan (opsional)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Keterangan (opsional)"
|
|||
msgid "Path"
|
||||
msgstr "Direktori"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Data Barcode"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Data barcode pihak ketiga"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Hash unik data barcode"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Sudah ada barcode yang sama"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Terjadi Kesalahan Server"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Sebuah kesalahan telah dicatat oleh server."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Selamat Datang di InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Nilai tidak valid"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "File data"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Pilih file untuk diunggah"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Ukuran file terlalu besar"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Tidak ditemukan kolom dalam file"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Tidak ditemukan barisan data dalam file"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Tidak ada barisan data tersedia"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Tidak ada kolom data tersedia"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Kolom yang diperlukan kurang: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Kolom duplikat: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL file gambar external"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Unduhan gambar dari URL external tidak aktif"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Produksi Induk"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Pesanan harus dibatalkan sebelum dapat dihapus"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Pasang ke"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Tujuan stok item"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Dibatalkan"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Selesai"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "Stok dibutuhkan untuk order produksi"
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr "Barang diterima"
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Nama File"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr "Tidak cukup informasi"
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr "Kontributor InvenTree"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "Endpoint API non trovato"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "L'utente non ha i permessi per vedere questo modello"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Errore nell'eseguire la convalida del plugin"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "I metadati devono essere un oggetto python dict"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Metadati Plugin"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Campo di metadati JSON, da utilizzare con plugin esterni"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Schema formattato impropriamente"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Formato chiave sconosciuta"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Formato chiave mancante"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Il campo di riferimento non può essere vuoto"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Il campo deve corrispondere al modello richiesto"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Numero di riferimento troppo grande"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Nomi duplicati non possono esistere sotto lo stesso genitore"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Scelta non valida"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Nome"
|
|||
msgid "Description"
|
||||
msgstr "Descrizione"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Descrizione (opzionale)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Descrizione (opzionale)"
|
|||
msgid "Path"
|
||||
msgstr "Percorso"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Note di Markdown (opzionale)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Dati del Codice a Barre"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Dati Codice a Barre applicazioni di terze parti"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Codice a Barre"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Codice univoco del codice a barre"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Trovato codice a barre esistente"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Errore del server"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Un errore è stato loggato dal server."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Non hai i permessi per cambiare il ruolo dell'utente."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Solo i superutenti possono creare nuovi utenti"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Il tuo account è stato creato."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Si prega di utilizzare la funzione di reset password per accedere"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Benvenuto in InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Valore non valido"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "File dati"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Seleziona un file per il caricamento"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "File troppo grande"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Nessun colonna trovata nel file"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Nessuna riga di dati trovata nel file"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Nessun dato fornito"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Nessuna colonna di dati fornita"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Colonna richiesta mancante: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Colonna duplicata: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Immagine Remota"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL del file immagine remota"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Il download delle immagini da URL remoto non è abilitato"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Produzione Genitore"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr "Inviato da"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "La produzione deve essere annullata prima di poter essere eliminata"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Installa in"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Destinazione articolo in giacenza"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr "Nome Articolo"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Annullato"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Completo"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "Giacenza richiesta per l'ordine di produzione"
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr "Risultato"
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr "Nuovo {verbose_name}"
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr "Un nuovo ordine è stato creato e assegnato a te"
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr "Elemento ricevuto"
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr "Gli elementi sono stati ricevuti a fronte di un ordine di acquisto"
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr "Errore generato dal plugin"
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Nome del file"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr "Valido"
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr "Valuta di acquisto di questo articolo in stock"
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr "Scorte insufficienti disponibili"
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr "I numeri di serie non possono essere forniti per un articolo non tracciabile"
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr "Il numero di serie è troppo grande"
|
|||
msgid "Parent Item"
|
||||
msgstr "Elemento principale"
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr "Scaduto"
|
|||
msgid "Child Items"
|
||||
msgstr "Elementi secondari"
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr "Inserisci il numero di elementi di magazzino da serializzare"
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr "La quantità non deve superare la quantità disponibile ({q})"
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr "Inserisci i numeri di serie per i nuovi elementi"
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr "Posizione magazzino di destinazione"
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr "Note opzionali elemento"
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr "Numeri di serie non possono essere assegnati a questo articolo"
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "Numeri di serie già esistenti"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr "Seleziona elementi di magazzino da installare"
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr "Aggiungi nota di transazione (opzionale)"
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr "Elemento di magazzino non disponibile"
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr "L'articolo selezionato non è nella Fattura dei Materiali"
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr "Posizione di destinazione per gli elementi disinstallati"
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr "Seleziona l'articolo in cui convertire l'elemento di magazzino"
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr "L'articolo selezionato non è una valida opzione per la conversione"
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr "Posizione di destinazione per l'elemento restituito"
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr "Sottoallocazioni"
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr "L'articolo deve essere vendibile"
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr "L'elemento è assegnato a un ordine di vendita"
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr "Elemento assegnato a un ordine di costruzione"
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr "Cliente a cui assegnare elementi di magazzino"
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr "L'azienda selezionata non è un cliente"
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr "Note sull'assegnazione delle scorte"
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr "Deve essere fornito un elenco degli elementi di magazzino"
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr "Note di fusione di magazzino"
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr "Consenti fornitori non corrispondenti"
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr "Consenti di unire gli elementi di magazzino che hanno fornitori diversi"
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr "Consenti stato non corrispondente"
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr "Consenti di unire gli elementi di magazzino con diversi codici di stato"
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr "Devono essere riforniti almeno due elementi in magazzino"
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr "Valore di chiave primaria StockItem"
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr "Note sugli spostamenti di magazzino"
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "APIエンドポイントが見つかりません"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "ユーザーにこのモデルを表示する権限がありません"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "メールアドレス"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "プラグインメタデータ"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "外部プラグインで使用するためのJSONメタデータフィールド"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "無効な選択です"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "お名前"
|
|||
msgid "Description"
|
||||
msgstr "説明"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "説明 (オプション)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "説明 (オプション)"
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "マークダウンメモ (オプション)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "バーコード情報"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "サードパーティ製バーコードデータ"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "このユーザのロールを変更する権限がありません"
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr "無効な値です。"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "データファイル"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "アップロードするファイルを選択"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "ファイルサイズが大きすぎます"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "ファイルに列が見つかりません"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "ファイルにデータ行がみつかりません"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "データが入力されていません"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "データ列が指定されていません"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "必須の列がありません: {name}"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "{col} 列が重複しています。"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "外部画像ファイルのURL"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "外部URLからの画像ダウンロードは許可されていません"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "キャンセル済"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "完了"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "ファイル名"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr "シリアル番号が大きすぎます"
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr "期限切れ"
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "シリアル番号が既に存在します"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr "パーツは販売可能でなければなりません"
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API galapunkts nav atrasts"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Lietotājam nav atļaujas, lai apskatītu šo modeli"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API eindpunt niet gevonden"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr "Ongeldige items lijst verstrekt"
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr "Ongeldige filters opgegeven"
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr "Geen items gevonden om te verwijderen"
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Gebruiker heeft geen rechten om dit model te bekijken"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr "Log in op de app"
|
|||
msgid "Email"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Fout bij uitvoeren plug-in validatie"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metadata moeten een python dict object zijn"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Plug-in metadata"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "JSON metadata veld, voor gebruik door externe plugins"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Onjuist opgemaakt patroon"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Onbekende opmaaksleutel gespecificeerd"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Vereiste opmaaksleutel ontbreekt"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Referentieveld mag niet leeg zijn"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Referentie moet overeenkomen met verplicht patroon"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Referentienummer is te groot"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Dubbele namen kunnen niet bestaan onder hetzelfde bovenliggende object"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Ongeldige keuze"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Naam"
|
|||
msgid "Description"
|
||||
msgstr "Omschrijving"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Omschrijving (optioneel)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Omschrijving (optioneel)"
|
|||
msgid "Path"
|
||||
msgstr "Pad"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Markdown notitie (optioneel)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Streepjescode gegevens"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Streepjescode van derden"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Hash van Streepjescode"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Unieke hash van barcode gegevens"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Bestaande barcode gevonden"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Serverfout"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Er is een fout gelogd door de server."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Je bent niet bevoegd om deze gebruikersrol te wijzigen."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Alleen administrators kunnen nieuwe gebruikers aanmaken"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Je account is aangemaakt."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Gebruik de wachtwoordreset functie om in te loggen"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Welkom bij InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Ongeldige waarde"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Data bestand"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Selecteer een bestand om te uploaden"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr "Bestandsformaat niet ondersteund"
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Bestand is te groot"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Geen kolommen gevonden in het bestand"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Geen data rijen gevonden in dit bestand"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Geen data rijen opgegeven"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Geen gegevenskolommen opgegeven"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Verplichte kolom ontbreekt: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Dubbele kolom: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Externe afbeelding"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL van extern afbeeldingsbestand"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Afbeeldingen van externe URL downloaden is niet ingeschakeld"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr "Fout bij het downloaden van afbeelding van externe URL"
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Bovenliggende Productie"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr "Voorouderlijke bouw"
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr "Toegewezen aan mij"
|
|||
msgid "Issued By"
|
||||
msgstr "Uitgegeven door"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr "Toegewezen aan"
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Productie moet geannuleerd worden voordat het kan worden verwijderd"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Installeren in"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Bestemming voorraadartikel"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr "Onderdeel naam"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Geannuleerd"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Voltooid"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "Voorraad vereist voor productieorder"
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr "Resultaat"
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr "Was de barcode succesvol gescand?"
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr "Nieuw: {verbose_name}"
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr "Een nieuwe order is aangemaakt en aan u toegewezen"
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr "Artikelen zijn ontvangen tegen een inkooporder"
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Bestandsnaam"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr "Inkooporder voor dit voorraadartikel"
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr "Geen overeenkomende plug-in gevonden voor barcode gegevens"
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr "Geen overeenkomende plug-in gevonden voor barcode gegevens"
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr "Geen verkooporder opgegeven"
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr "Streepjescode komt niet overeen met een bestaand voorraadartikel"
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr "Voorraad item komt niet overeen met regelitem"
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr "Voorraad item komt niet overeen met regelitem"
|
|||
msgid "Insufficient stock available"
|
||||
msgstr "Onvoldoende voorraad beschikbaar"
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr "Voorraad item toegewezen aan verkooporder"
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
msgstr "Plug-in sleutel"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr "Paneel naam"
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr "Paneel titel"
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr "Paneel icoon"
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr "Paneel inhoud (HTML)"
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr "Paneel Context (JSON)"
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr "Paneel bron (javascript)"
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr "Kenmerk type"
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr "Feature opties"
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr "Feature bron (javascript)"
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr "Onderdeel panelen inschakelen"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr "Schakel aangepaste panelen in voor deelweergave"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr "Schakel order panelen in"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr "Schakel aangepaste panelen in voor inkooporders"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr "Kapotte panelen inschakelen"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr "Schakel defecte panelen in voor testen"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr "Dynamisch paneel inschakelen"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr "Activeer dynamische panelen om te testen"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr "Bron bestand"
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr "Filter op topniveau locaties"
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr "Inclusief sublocaties in gefilterde resultaten"
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr "Bovenliggende locatie"
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr "Het opgegeven leveranciers onderdeel bestaat niet"
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr "Het leveranciersdeel heeft een pakketgrootte gedefinieerd, maar vlag use_pack_size niet ingesteld"
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr "Serienummers kunnen niet worden meegeleverd voor een niet traceerbaar onderdeel"
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr "Serienummer is te groot"
|
|||
msgid "Parent Item"
|
||||
msgstr "Bovenliggend Item"
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr "Bovenliggende voorraad item"
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr "Gebruik pakketgrootte bij het toevoegen: de hoeveelheid gedefinieerd is het aantal pakketten"
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr "Verlopen"
|
|||
msgid "Child Items"
|
||||
msgstr "Onderliggende items"
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr "Items volgen"
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr "Inkoopprijs van dit voorraadartikel, per eenheid of pakket"
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr "Minimale prijs"
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr "Maximum prijs"
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr "Aantal voorraaditems om serienummers voor te maken"
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr "Hoeveelheid mag niet hoger zijn dan de beschikbare voorraad ({q})"
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr "Voer serienummers voor nieuwe items in"
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr "Locatie van bestemming"
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr "Optioneel notities veld"
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr "Serienummers kunnen niet worden toegewezen aan dit deel"
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "Serienummers bestaan al"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr "Selecteer voorraaditem om te installeren"
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr "Te installeren hoeveelheid"
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr "Voer de te installeren hoeveelheid items in"
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr "Transactienotitie toevoegen (optioneel)"
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr "Te installeren hoeveelheid moet minimaal 1 zijn"
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr "Voorraadartikel is niet beschikbaar"
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr "Het geselecteerde deel zit niet in de materialen lijst"
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr "De te installeren hoeveelheid mag niet groter zijn dan de beschikbare hoeveelheid"
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr "Bestemmingslocatie voor verwijderd item"
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr "Sublocaties"
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr "Artikel is toegewezen aan een verkooporder"
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr "Artikel is toegewezen aan een productieorder"
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API-endepunkt ikke funnet"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Brukeren har ikke rettigheter til å se denne modellen"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "E-post"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Feil under validering av utvidelse"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metadata må være et python dict-objekt"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Utvidelse-metadata"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "JSON-metadatafelt, for bruk av eksterne utvidelser"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Uriktig formatert mønster"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Ukjent formatnøkkel spesifisert"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Mangler nødvendig formatnøkkel"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Referansefeltet kan ikke være tomt"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Referansen må samsvare påkrevd mønster"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Referansenummeret er for stort"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Duplikatnavn kan ikke eksistere under samme overordnede"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Ugyldig valg"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Navn"
|
|||
msgid "Description"
|
||||
msgstr "Beskrivelse"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Beskrivelse (valgfritt)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Beskrivelse (valgfritt)"
|
|||
msgid "Path"
|
||||
msgstr "Sti"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Markdown-notater (valgfritt)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Strekkodedata"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Tredjeparts strekkodedata"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Strekkode-hash"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Unik hash av strekkodedata"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Eksisterende strekkode funnet"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Serverfeil"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "En feil har blitt logget av serveren."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Du har ikke tillatelse til å endre denne brukerrollen."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Bare superbrukere kan opprette nye brukere"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Din konto er opprettet."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Vennligst bruk funksjonen for å tilbakestille passord for å logge inn"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Velkommen til InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Ugyldig verdi"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Datafil"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Velg datafil for opplasting"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Filen er for stor"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Ingen kolonner funnet i filen"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Ingen datarader funnet i fil"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Ingen datarader oppgitt"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Ingen datakolonner angitt"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Mangler påkrevd kolonne: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Dupliaktkolonne: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Eksternt bilde"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URLtil ekstern bildefil"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Nedlasting av bilder fra ekstern URL er ikke aktivert"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Overordnet produksjon"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr "Utstedt av"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Produksjonen må avbrytes før den kan slettes"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Monteres i"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Lagervare for montering"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr "Delnavn"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr "Etikett for prosjektkode"
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Kansellert"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Fullført"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "Lagerbeholdning kreves for produksjonsordre"
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr "Resultat"
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr "Ny {verbose_name}"
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr "En ny ordre har blitt opprettet og tilordnet til deg"
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr "{verbose_name} kansellert"
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr "En ordre som er tildelt til deg ble kansellert"
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr "Artikler mottatt"
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr "Artikler har blitt mottatt mot en innkjøpsordre"
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr "Artikler har blitt mottatt mot en returordre"
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr "Feil oppstått i utvidelse"
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr "Kjører"
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr "Ventende oppgaver"
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr "Planlagte oppgaver"
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr "Mislykkede oppgaver"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr "Oppgave-ID"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr "Unik oppgave-ID"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr "Lås"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr "Låsetidspunkt"
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr "Oppgavenavn"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr "Funksjon"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr "Funksjonsnavn"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr "Argumenter"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr "Oppgaveargumenter"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr "Nøkkelordargumenter"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr "Nøkkelordargumenter for oppgave"
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Filnavn"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr "Modelltype"
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr "Brukeren har ikke tillatelse tillatelse å opprette eller endre vedlegg for denne modellen"
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr "Gyldig"
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr "Innkjøpsvaluta for lagervaren"
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr "Finner ingen matchende leverandørdeler"
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr "Flere samsvarende leverandørdeler funnet"
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr "Fant leverandørdel"
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr "Artikkelen er allerede mottatt"
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr "Ingen treff for leverandørstrekkode"
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr "Flere samsvarende elementer funnet"
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr "Ingen samsvarende element funnet"
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr "Strekkoden samsvarer ikke med eksisterende lagervare"
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr "Lagervare samsvarer ikke med linjeelement"
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr "Lagervare samsvarer ikke med linjeelement"
|
|||
msgid "Insufficient stock available"
|
||||
msgstr "Utilstrekkelig lagerbeholdning"
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr "Lagervaren er tildelt en salgsordre"
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr "Ikke nok informasjon"
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr "Eksempel valutakonverterings-utvidelse"
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr "InvenTree-bidragsytere"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr "Oppgitt leverandørdel eksisterer ikke"
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr "Leverandørdelen har en pakkestørrelse definert, men flagget \"use_pack_size\" er ikke satt"
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr "Serienumre kan ikke angis for en ikke-sporbar del"
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr "Serienummeret er for høyt"
|
|||
msgid "Parent Item"
|
||||
msgstr "Overodnet element"
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr "Bruk pakningsstørrelse når du legger til: antall definert er antall pakker"
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr "Utløpt"
|
|||
msgid "Child Items"
|
||||
msgstr "Underordnede artikler"
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr "Innkjøpspris for denne lagervaren, per enhet eller forpakning"
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr "Angi antall lagervarer som skal serialiseres"
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr "Antall kan ikke overstige tilgjengelig lagerbeholdning ({q})"
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr "Angi serienummer for nye artikler"
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr "Til Lagerplassering"
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr "Valgfritt notatfelt"
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr "Serienummer kan ikke tilordnes denne delen"
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "Seriernummer eksisterer allerede"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr "Velg lagervare å montere"
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr "Antall å installere"
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr "Angi antallet elementer som skal installeres"
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr "Legg til transaksjonsnotat (valgfritt)"
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr "Antall å installere må være minst 1"
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr "Lagervaren er utilgjengelig"
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr "Valgt del er ikke i stykklisten"
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr "Antall å installere må ikke overskride tilgjengelig antall"
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr "Lagerplassering for den avinstallerte artikkelen"
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr "Velg del å konvertere lagervare til"
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr "Valgt del er ikke et gyldig alternativ for konvertering"
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr "Kan ikke konvertere lagerprodukt med tildelt leverandørdel"
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr "Lagerplassering for returnert artikkel"
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr "Velg lagervarer for å endre status"
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr "Ingen lagervarer valgt"
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr "Underplasseringer"
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr "Delen må være salgbar"
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr "Artikkelen er tildelt en salgsordre"
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr "Artikkelen er tildelt en produksjonsordre"
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr "Kunde å tilordne lagervarer"
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr "Valgt firma er ikke en kunde"
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr "Lagervare-tildelignsnotater"
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr "En liste av lagervarer må oppgis"
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr "Notater om lagersammenslåing"
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr "Tillat forskjellige leverandører"
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr "Tillat lagervarer med forskjellige leverandørdeler å slås sammen"
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr "Tillat forskjellig status"
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr "Tillat lagervarer med forskjellige statuskoder å slås sammen"
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr "Minst to lagervarer må oppgis"
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr "Lagervare primærnøkkel verdi"
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr "Lagervare statuskode"
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr "Lager transaksjonsnotater"
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "Nie znaleziono punktu końcowego API"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Użytkownik nie ma uprawnień do przeglądania tego modelu"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "Adres E-Mail"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Błąd podczas walidacji wtyczki"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metadane muszą być obiektem typu dict w Python"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Wtyczka Metadane"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Pole metadanych JSON, do użycia przez wtyczki zewnętrzne"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Nieprawidłowo sformatowany wzór"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Określono nieznany format klucza"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Brak wymaganego formatu klucza"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Pole odniesienia nie może być puste"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Odniesienie musi być zgodne z wymaganym wzorem"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Numer odniesienia jest zbyt duży"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Duplikaty nazw nie mogą istnieć pod tym samym rodzicem"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Błędny wybór"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Nazwa"
|
|||
msgid "Description"
|
||||
msgstr "Opis"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Opis (opcjonalny)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Opis (opcjonalny)"
|
|||
msgid "Path"
|
||||
msgstr "Ścieżka"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Notatki Markdown (opcjonalne)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Dane kodu kreskowego"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Dane kodu kreskowego stron trzecich"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Hasz kodu kreskowego"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Unikalny hasz danych kodu kreskowego"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Znaleziono istniejący kod kreskowy"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Błąd serwera"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Błąd został zapisany w logach serwera."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Nie masz uprawnień do zmiany tej roli użytkownika."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Tylko superużytkownicy mogą tworzyć nowych użytkowników"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Twoje konto zostało utworzone."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Zresetuj hasło"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Witamy w InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Nieprawidłowa wartość"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Plik danych"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Wybierz plik danych do przesłania"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Plik jest zbyt duży"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Nie znaleziono kolumn w pliku"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Nie znaleziono wierszy danych w pliku"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Nie podano wierszy danych"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Nie podano kolumn danych"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Brakuje wymaganej kolumny: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Zduplikowana kolumna: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Obrazek zewnętrzny"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "Adres URL zdalnego pliku obrazu"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Pobieranie obrazów ze zdalnego URL nie jest włączone"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Budowa nadrzędna"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr "Dodane przez"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Kompilacja musi zostać anulowana, zanim będzie mogła zostać usunięta"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Zainstaluj do"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Docelowa lokalizacja magazynowa przedmiotu"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr "Nazwa komponentu"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1122,7 +1131,7 @@ msgstr ""
|
|||
#: order/models.py:2185 order/serializers.py:769 stock/admin.py:165
|
||||
#: stock/serializers.py:1046 stock/serializers.py:1587
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
msgstr "Status"
|
||||
|
||||
#: build/serializers.py:582
|
||||
msgid "Accept Incomplete Allocation"
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Anulowano"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Zakończono"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr "Wynik"
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr "Jest uruchomiony"
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr "Oczekujce zadania"
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr "Zaplanowane zadania"
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr "Zadania zakończone błędem"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr "ID zadania"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr "Unikalny identyfikator zadania"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr "Blokada"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr "Czas blokady"
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr "Nazwa zadania"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr "Funkcja"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr "Nazwa funkcji"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr "Argumenty"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr "Argumenty zadania"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Nazwa pliku"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr "Ważny"
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr "Waluta zakupu tego towaru"
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr "Brak dopasowania dla kodu kreskowego dostawcy"
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr "Kod kreskowy nie pasuje do istniejących pozycji magazynowych"
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr "Element nadrzędny"
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr "Termin minął"
|
|||
msgid "Child Items"
|
||||
msgstr "Elementy podrzędne"
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "Numer seryjny już istnieje"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr "Podlokalizacje"
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr "Część musi być dostępna do sprzedaży"
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API endpoint não encontrado"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Usuário não tem permissão para ver este modelo"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Erro ao executar validação do plugin"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metadados deve ser um objeto dict python"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Metadados da Extensão"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Campo de metadados JSON, para uso por extensões externas"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Padrão formatado incorretamente"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Chave de formato desconhecida especificada"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Chave de formato obrigatória ausente"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "O campo de referência não pode ficar vazio"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "A referência deve corresponder ao padrão exigido"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "O número de referência é muito grande"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Nomes duplicados não podem existir sob o mesmo parental"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Escolha inválida"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Nome"
|
|||
msgid "Description"
|
||||
msgstr "Descrição"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Descrição (opcional)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Descrição (opcional)"
|
|||
msgid "Path"
|
||||
msgstr "Caminho"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Notas Markdown (opcional)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Dados de código de barras"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Dados de código de barras de terceiros"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Hash de código de barras"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Hash exclusivo de dados de código de barras"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Código de barras existente encontrado"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Erro de servidor"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Log de erro salvo pelo servidor."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Não tem permissões para alterar este papel do usuário."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Apenas superusuários podem criar novos usuários"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Sua conta foi criada."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Por favor, use a função de redefinir senha para acessar"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Bem-vindo(a) ao InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Valor inválido"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Arquivo de dados"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Selecione um arquivo de dados para enviar"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "O arquivo é muito grande"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Nenhuma coluna encontrada no arquivo"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Nenhuma linha de dados encontrada no arquivo"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Nenhuma linha de dados fornecida"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Nenhuma coluna de dados fornecida"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Falta a coluna obrigatória: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Coluna duplicada: \"{col}\""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Imagens Remota"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL do arquivo de imagem remoto"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Baixar imagens de URL remota não está habilitado"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Produção Progenitor"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr "Emitido por"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Produção deve ser cancelada antes de ser deletada"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Instalar em"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Destino do Item do Estoque"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr "Nome da Peça"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Cancelado"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Completado"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "Estoque obrigatório para o pedido de produção"
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr "Resultado"
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr "Novo {verbose_name}"
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr "Um novo pedido foi criado e atribuído a você"
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr "{verbose_name} cancelado"
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr "Um pedido atribuído a você foi cancelado"
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr "Itens Recebidos"
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr "Os itens de um pedido de compra foram recebidos"
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr "Os itens de um pedido de devolução foram recebidos"
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr "Erro criado pela extensão"
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr "Executando"
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr "Tarefas Pendentes"
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr "Tarefas Agendadas"
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr "Tarefas com Falhas"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr "ID da Tarefa"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr "ID Único da Tarefa"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr "Bloquear"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr "Tempo de bloqueio"
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr "Nome da tarefa"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr "Função"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr "Nome da função"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr "Argumentos"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr "Argumentos da tarefa"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr "Argumentos de Palavra-chave"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr "Argumentos Palavra-chave da Tarefa"
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Nome do arquivo"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr "Válido"
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr "Moeda de compra deste item de estoque"
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr "Nenhuma peça de fornecedor correspondente encontrada"
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr "Múltiplas peças de fornecedores correspondentes encontradas"
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr "Peça de fornecedor correspondente"
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr "Item do pedido já foi recebido"
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr "Nenhuma correspondência para o código de barras do fornecedor"
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr "Diversos itens de linha correspondentes encontrados"
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr "Nenhum item de linha correspondente encontrado"
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr "Código de barras não corresponde a item de estoque válido"
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr "Item do estoque não corresponde ao item de linha"
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr "Item do estoque não corresponde ao item de linha"
|
|||
msgid "Insufficient stock available"
|
||||
msgstr "Estoque insuficiente disponível"
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr "Item de estoque atribuído para pedido de venda"
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr "Não há informação suficiente"
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr "Plugin de Câmbio de exemplo"
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr "Contribuidores do InvenTree"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr "A peça do fornecedor informado não existe"
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr "A peça do fornecedor tem um tamanho de pacote definido, mas o item use_pack_size não foi definida"
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr "Números de série não podem ser fornecidos para uma parte não rastreável"
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr "Número de série é muito grande"
|
|||
msgid "Parent Item"
|
||||
msgstr "Item Primário"
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr "Usar tamanho do pacote ao adicionar: a quantidade definida é o número de pacotes"
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr "Expirado"
|
|||
msgid "Child Items"
|
||||
msgstr "Itens Filhos"
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr "Preço de compra para este item de estoque, por unidade ou pacote"
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr "Insira o número de itens de estoque para serializar"
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr "Quantidade não deve exceder a quantidade disponível em estoque ({q})"
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr "Inserir número de série para novos itens"
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr "Local de destino do estoque"
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr "Campo opcional de notas"
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr "Números de série não podem ser atribuídos a esta peça"
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "Números de série já existem"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr "Selecione o item de estoque para instalar"
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr "Quantidade a Instalar"
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr "Insira a quantidade de itens a instalar"
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr "Adicionar nota de transação (opcional)"
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr "A quantidade para instalar deve ser pelo menos 1"
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr "Item de estoque indisponível"
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr "Peça selecionada não está na Lista de Materiais"
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr "Quantidade a instalar não deve exceder a quantidade disponível"
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr "Local de destino para o item desinstalado"
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr "Selecione peça para converter o item de estoque em"
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr "Peça selecionada não é uma opção válida para conversão"
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr "Não é possível converter o item de estoque com a Peça de Fornecedor atribuída"
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr "Local de destino para item retornado"
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr "Selecionar itens de estoque para mudar estados"
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr "Nenhum item de estoque selecionado"
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr "Sub-locais"
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr "Parte deve ser comercializável"
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr "Item é alocado para um pedido de venda"
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr "Item está alocado a um pedido de produção"
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr "Cliente para atribuir itens de estoque"
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr "A empresa selecionada não é um cliente"
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr "Nodas atribuídas a estoque"
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr "Uma lista de item de estoque deve ser providenciada"
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr "Notas de fusão de estoque"
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr "Permitir fornecedores divergentes"
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr "Permitir a fusão de itens de estoque de fornecedores diferentes"
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr "Permitir estado incompatível"
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr "Permitir a fusão de itens de estoque com estado diferentes"
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr "Ao menos dois itens de estoque devem ser providenciados"
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr "Valor da chave primária do Item Estoque"
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr "Código de estado do item estoque"
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr "Notas da transação de estoque"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "Конечная точка API не обнаружена"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "У пользователя недостаточно прав для просмотра этой модели!"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "EMail"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Ошибка запуска проверки плагина"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Метаданные должны быть объектом python dict"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Метаданные плагина"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Поле метаданных JSON для использования внешними плагинами"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Неправильно отформатированный шаблон"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Указан неизвестный ключ формата"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Отсутствует требуемый ключ формата"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Ссылочный идентификатор не может быть пустым"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Ссылка должна соответствовать шаблону {pattern}"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Номер ссылки слишком большой"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Повторяющиеся имена не могут существовать под одним и тем же родителем"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Неверный выбор"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Название"
|
|||
msgid "Description"
|
||||
msgstr "Описание"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Описание (необязательно)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Описание (необязательно)"
|
|||
msgid "Path"
|
||||
msgstr "Путь"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Записи о скидке (необязательно)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Данные штрих-кода"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Данные стороннего штрих-кода"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Хэш штрих-кода"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Уникальный хэш данных штрих-кода"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Обнаружен существующий штрих-код"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Ошибка сервера"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Сервер зарегистрировал ошибку."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "У вас недостаточно прав для изменения р
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Только суперпользователи могут создавать новых пользователей"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Ваша учётная запись была успешно создана."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Пожалуйста, используйте функцию сброса пароля для входа"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Добро пожаловать в InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Неверное значение"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Файл данных"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Выберите файл данных для загрузки"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Файл слишком большой"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Столбцы в файле не найдены"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Строки данных в файле не найдены"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Строки данных в файле не найдены"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Столбцы данных не предоставлены"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Отсутствует обязательный столбец: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Повторяющийся столбец: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Удаленное изображение"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "ССЫЛКА файла изображения на удаленном сервере"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Загрузка изображений с удаленного URL-адреса не включена"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Родительский заказ на производство"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr "Назначено мне"
|
|||
msgid "Issued By"
|
||||
msgstr "Создано"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Заказ на производство должен быть отменен перед удалением"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Установить в"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Целевая складская позиция"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr "Наименование детали"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr "Название кода проекта"
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr "На удержании"
|
|||
msgid "Cancelled"
|
||||
msgstr "Отменено"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Готово"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "Необходимый запас для заказа на производство"
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr "Результат"
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr "Полученные элементы"
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr "Запущен"
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr "Ожидающие задачи"
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr "Запланированные задания"
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr "Невыполненные Задачи"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr "Код задачи"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr "Уникальный ID задачи"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr "Заблокировать"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr "Время блокировки"
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr "Название задачи"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr "Функция"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr "Имя функции"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr "Аргументы"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr "Аргументы задачи"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Имя файла"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr "Сопоставление столбцов должно быть связано с корректным сеансом импорта"
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr "Номер строки"
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr "Ошибки"
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr "Корректный"
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr "Результаты"
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr "Валюта закупки складской позиции"
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr "Штрих-код не соответствует существующим складским позициям"
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr "Складская позиция не соответствует позиции"
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr "Складская позиция не соответствует поз
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr "Складская позиция зарезервирована заказом на продажу"
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr "Родительский элемент"
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr "Просрочен"
|
|||
msgid "Child Items"
|
||||
msgstr "Дочерние элементы"
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr "Закупочная цена для этой складской позиции, за единицу или за упаковку"
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr "Введите количество складских позиций для сериализации"
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr "Введите серийные номера для новых элементов"
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr "Опциональное поле записей"
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "Серийные номера уже существуют"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr "Выберите складскую позицию для установки"
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr "Добавить запись к транзакции (необязательно)"
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr "Складская позиция недоступна"
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr "Выбранная деталь отсутствует в спецификации"
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr "Выберите деталь в которую будет преобразована складская позиция"
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr "Невозможно преобразовать складскую позицию с назначенной деталью поставщика"
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr "Выберите складские позиции для изменения статуса"
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr "Не выбрано ни одной складской позиции"
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr "Места хранения"
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr "Элемент зарезервирован для заказа на производство"
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr "Покупатель для назначения складских позиций"
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr "Выбранная компания не является покупателем"
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr "Записи о назначенных запасах"
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr "Необходимо предоставить список складских позиций"
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr "Записи о слияниях запасов"
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr "Разрешить слияние складских позиций с различными поставщиками"
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr "Разрешить слияние складских позиций с различными статусами"
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr "Необходимо предоставить как минимум 2 складские позиции"
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr "Нет изменений"
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr "Статус складской позиции"
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr "Записи о перемещениях запасов"
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API vmesnik ni najden"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Uporabnik nima dovoljenja pogleda tega modela"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "E-pošta"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Napaka pri izvajanju preverjanja vtičnika"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metapodatki morajo biti objekt tipa python dict"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Metapodatki vtičnika"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Polje metapodatkov JSON za uporabo pri zunanjih vtičnikih"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Nepravilno nastavljen vzorec"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Nastavljen neprepoznan ključ formata"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Manjka obvezen ključ formata"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Referenčno polje ne sme biti prazno"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Referenca se mora ujemati s vzorcem"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Referenčna številka prevelika"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Podvojena imena ne morejo obstajati pod istim nadrejenim elementom"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Nedovoljena izbira"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Ime"
|
|||
msgid "Description"
|
||||
msgstr "Opis"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Opis (opcijsko)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Opis (opcijsko)"
|
|||
msgid "Path"
|
||||
msgstr "Pot"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Markdown opombe (neobvezno)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Podatki čtrne kode"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Podatki črtne kode tretje osebe"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Oznaka črtne kode"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Enolična oznaka podatkov črtne kode"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Črtna koda že obstaja"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Napaka strežnika"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Zaznana napaka na strežniku."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Nimate dovoljenja za spreminjanje vloge tega uporabnika."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Samo superuporabniki lahko ustvarijo nove uporabnike"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Vaš račun je bil ustvarjen."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Za prijavo uporabite funkcijo ponastavitve gesla"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Dobrodošli v InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Neveljavna vrednost"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Podatki datoteke"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Izberite datoteke za naložiti"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Datoteka je prevelika"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "V datoteki ni bilo najdenih stolpcev"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "V datoteki ni bilo njadenih vrstic"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Niso bile podane vrste s podatki"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Niso bili podani stolpci s podatki"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Manjka obvezni stolpec: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Dvojni stolpec: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Oddaljena slika"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "Povezava do oddaljene slike"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Prenos slik iz oddaljene povezave ni omogočen"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Nadrejena izgradnja"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Izgradnja mora biti najprej preklicana, nato je lahko izbrisana"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Inštaliraj v"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Destinacija postavke zaloge"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Preklicano"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Končano"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Ime datoteke"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API krajnja tačka nije pronađena"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Korisnik nema dozvolu za pregled ovog modela"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "E-Pošta"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metapodaci moraju biti \"python dict\" objekat"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Metapodaci dodatka"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Polje metapodataka JSON, za korištenje eksternih dodataka"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Neispravno formatiran obrazac"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Naveden je ključ nepoznatog formata"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Nedostaje potreban ključ formata"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Polje za reference ne može biti prazno"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Referenca mora odgovarati traženom obrascu"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Broj reference je predugačak"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Dvostruka imena ne mogu postojati pod istom nadredjenom grupom"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Nevažeći izvor"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Ime"
|
|||
msgid "Description"
|
||||
msgstr "Opis"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Opis (Opciono)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Opis (Opciono)"
|
|||
msgid "Path"
|
||||
msgstr "Putanja"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Zabeleške (Opciono)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Podaci sa barkoda"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Podaci sa barkoda trećih lica"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Heš barkoda"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Jedinstveni hash barkoda"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Postojeći barkod pronađen"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Greška servera"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Server je zabležio grešku."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Nemate dozvolu za promenu ove korisničke uloge."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Samo superkorisnici mogu kreirati nove korisnike"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr "Nevažeća vrednost"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Datoteka"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Odaberite datoteku za učitavanje"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Prevelika datoteka"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Nisu pronađene kolone podataka u datoteci"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Nisu pronađeni redovi podataka u datoteci"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Nisu navedeni redovi podataka"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Nisu obezbeđene kolone podataka"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Nedostaje potrebna kolona: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Duplicirana kolona: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Udaljena slika"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL udaljene slike"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Preuzimanje slika s udaljenog URL-a nije omogućeno"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Otkazano"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Gotovo"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Ime datoteke"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API-slutpunkt hittades inte"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Användaren har inte behörighet att se denna modell"
|
||||
|
||||
|
|
@ -128,7 +128,7 @@ msgstr "Serienummret finns redan"
|
|||
#: InvenTree/helpers.py:643 InvenTree/helpers.py:662
|
||||
#, python-brace-format
|
||||
msgid "Invalid group: {group}"
|
||||
msgstr ""
|
||||
msgstr "Ogiltig grupp: {group}"
|
||||
|
||||
#: InvenTree/helpers.py:606
|
||||
#, python-brace-format
|
||||
|
|
@ -337,58 +337,58 @@ msgstr "Kinesiska (Traditionell)"
|
|||
|
||||
#: InvenTree/magic_login.py:28
|
||||
msgid "Log in to the app"
|
||||
msgstr ""
|
||||
msgstr "Logga in på appen"
|
||||
|
||||
#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
|
||||
#: company/models.py:133
|
||||
msgid "Email"
|
||||
msgstr "E-postadress"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Fel vid validering av plugin"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metadata måste vara ett python dict objekt"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Metadata för plugin"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "JSON metadata fält, för användning av externa plugins"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Felaktigt formaterat mönster"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Okänd formatnyckel angiven"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Obligatorisk formatnyckel saknas"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Textfältet kan inte lämnas tomt"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Referensen måste matcha obligatoriskt mönster"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Referensnumret är för stort"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Ogiltigt val"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Namn"
|
|||
msgid "Description"
|
||||
msgstr "Beskrivning"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Beskrivning (valfritt)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Beskrivning (valfritt)"
|
|||
msgid "Path"
|
||||
msgstr "Sökväg"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Markdown anteckningar (valfritt)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Streckkodsdata"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Tredje parts streckkodsdata"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Streckkodsdata"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Unik hash med streckkodsdata"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Befintlig streckkod hittades"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Serverfel"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Ett fel har loggats av servern."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Du har inte behörighet att ändra denna användarrollen."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Endast superanvändare kan skapa nya användare"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Ditt konto har skapats."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Använd funktionen för lösenordsåterställning för att logga in"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Välkommen till InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Ogiltigt värde"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Datafil"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Välj fil för uppladdning"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Filen är för stor"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Inga kolumner hittades i filen"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Inga rader hittades i filen"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Inga rader angivna"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Inga datakolumner har angetts"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Saknar obligatorisk kolumn: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Duplicerad kolumn: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Fjärransluten bild"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL för fjärrbildsfil"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Nedladdning av bilder från fjärr-URL är inte aktiverad"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Föregående tillverkning"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr "Utfärdad av"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Tillverkningen måste avbrytas innan den kan tas bort"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Installera till"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Destination lagervara"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "Avbruten"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Slutför"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr "Schemalagda uppgifter"
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Filnamn"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr "Fält"
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr "Kolumn"
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "ไม่พบ API endpoint"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "อีเมล"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "ข้อมูลเมตาของปลั๊กอิน"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "ชื่อ"
|
|||
msgid "Description"
|
||||
msgstr "คำอธิบาย"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "ข้อมูลบาร์โค้ด"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "บาร์โค้ดนี้มีในระบบแล้ว"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "เกิดข้อผิดพลาดที่เซิร์ฟเวอร์"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "ยินดีต้อนรับเข้าสู่ Inventree"
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "ไฟล์ข้อมูล"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "เลือกไฟล์ข้อมูลที่จะอัปโหลด"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "ไฟล์มีขนาดใหญ่เกินไป"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr "ยกเลิกแล้ว"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "สำเร็จแล้ว"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "ชื่อไฟล์"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API uç noktası bulunamadı"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Kullanıcının bu modeli görüntüleme izni yok"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "E-posta"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Eklenti doğrulama sırasında hata oluştu"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metadata, bir python dict nesnesi olmalıdır"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Plugin Metaverileri"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Harici eklentiler tarafından kullanım için JSON metadata alanı"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Yanlış biçimlendirilmiş desen"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Belirtilen bilinmeyen format anahtarı"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Gerekli format anahtarı eksik"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Referans alanı boş olamaz"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Referans {pattern} deseniyle mutlaka eşleşmeli"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Referans sayısı çok fazla"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Aynı kaynak altında birden fazla aynı isim kullanılamaz"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Geçersiz seçim"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Adı"
|
|||
msgid "Description"
|
||||
msgstr "Açıklama"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Açıklama (isteğe bağlı)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Açıklama (isteğe bağlı)"
|
|||
msgid "Path"
|
||||
msgstr "Yol"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Markdown notları (isteğe bağlı)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Barkod Verisi"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Üçüncü parti barkod verisi"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Barkod Hash"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Barkod verisinin benzersiz hash'i"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Var olan barkod bulundu"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Sunucu Hatası"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Bir hafta sunucu tarafından kayıt edildi."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Bu kullanıcı rolünü değiştirmek için izniniz yok."
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Sadece süper kullanıcılar yeni kullanıcı oluşturabilir"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Kullanıcı hesabınız oluşturulmuştur."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Giriş yapmak için lütfen şifre sıfırlama fonksiyonunu kullanınız"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "InvenTree'ye Hoşgeldiniz"
|
|||
msgid "Invalid value"
|
||||
msgstr "Geçersiz değer"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Veri Dosyası"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Yüklemek istediğiniz dosyayı seçin"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Dosya boyutu çok büyük"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Dosyada kolon bulunamadı"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Dosyada satır bulunamadı"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Dosyada satır bulunamadı"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Dosyada uygun kolon bulunamadı"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Gerekli kolon ismi eksik:'{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Tekrarlanan kolon ismi:'{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Uzaktan Görüntüler"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "Uzaktan görüntü dosya URL'si"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Uzak URL'den resim indirmek etkinleştirilmedi"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Üst Yapım İşi"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr "Ata Yapım"
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr "Bana atandı"
|
|||
msgid "Issued By"
|
||||
msgstr "Veren"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr "Atanılan Kişi"
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Yapımın silinebilmesi için önce iptal edilmesi gerekir"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Kurulduğu yer"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Hedef stok kalemi"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr "Yapım Düzeyi"
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr "Yapım Düzeyi"
|
|||
msgid "Part Name"
|
||||
msgstr "Parça Adı"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr "Proje Kodu Etiketi"
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr "Alt Yapımlar Oluştur"
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr "Alt yapım siparişlerini otomatik olarak -üret"
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr "Beklemede"
|
|||
msgid "Cancelled"
|
||||
msgstr "İptal edildi"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Tamamlandı"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "Yapım siparişi için gereken stok"
|
||||
|
||||
|
|
@ -2371,15 +2380,15 @@ msgstr "Şifreyi unuttumu etkinleştir"
|
|||
|
||||
#: common/models.py:1952
|
||||
msgid "Enable password forgot function on the login pages"
|
||||
msgstr ""
|
||||
msgstr "Giriş yapma sayfasında şifremi unuttum işlevini etkinleştir"
|
||||
|
||||
#: common/models.py:1957
|
||||
msgid "Enable registration"
|
||||
msgstr ""
|
||||
msgstr "Kayıt olmayı etkinleştir"
|
||||
|
||||
#: common/models.py:1958
|
||||
msgid "Enable self-registration for users on the login pages"
|
||||
msgstr ""
|
||||
msgstr "Giriş yapma sayfalarında kullanıcılar için kendini kaydetme işlevini etkinleştir"
|
||||
|
||||
#: common/models.py:1963
|
||||
msgid "Enable SSO"
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr "Bekleyen Görevler"
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr "Planlanan Görevler"
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr "Başarısız Görevler"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr "Görev ID"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr "Benzersiz Görev ID"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr "Kilit"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr "Kilit Zamanı"
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr "Görev Adı"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr "Fonksiyon"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr "Fonksiyon Adı"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr "Argümanlar"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr "Görev Argümanları"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr "Anahtar Argümanlar"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr "Anahtar görev argümanları"
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Dosya adı"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr "Model Tipi"
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "Seri numaraları zaten mevcut"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr "İşlem notu ekle (isteğe bağlı)"
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr "Alt konumlar"
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "Кінцева точка API не знайдена"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "У користувача немає дозволу на перегляд цієї моделі"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr ""
|
|||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr ""
|
|||
msgid "Path"
|
||||
msgstr "Шлях"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr ""
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr ""
|
|||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr ""
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr ""
|
|||
msgid "Issued By"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr ""
|
|||
msgid "Destination stock item"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr ""
|
|||
msgid "Part Name"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr ""
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr ""
|
|||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr ""
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr ""
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr ""
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr ""
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr ""
|
|||
msgid "Parent Item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr ""
|
|||
msgid "Child Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr ""
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "API endpoint không tồn tại"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "Người dùng không được phân quyền xem mẫu này"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "Lỗi xác thực plugin"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Siêu dữ liệu phải là đối tượng từ điển của python"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "Phụ trợ siêu dữ liệu"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "Trường siêu dữ liệu JSON, được sử dụng bởi phụ trợ bên ngoài"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "Mẫu được định dạng không thích hợp"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "Khóa định dạng không rõ ràng đã được chỉ định"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "Thiếu khóa định dạng cần thiết"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "Trường tham chiếu không thể rỗng"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "Tham chiếu phải phù hợp với mẫu yêu cầu"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "Số tham chiếu quá lớn"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "Tên trùng lặp không thể tồn tại trong cùng cấp thư mục"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "Lựa chọn sai"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "Tên"
|
|||
msgid "Description"
|
||||
msgstr "Mô tả"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "Mô tả (tùy chọn)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "Mô tả (tùy chọn)"
|
|||
msgid "Path"
|
||||
msgstr "Đường dẫn"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Ghi chú markdown (không bắt buộc)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "Dữ liệu mã vạch"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "Dữ liệu mã vạch của bên thứ ba"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "Dữ liệu băm mã vạch"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "Chuỗi băm duy nhất của dữ liệu mã vạch"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "Mã vạch đã tồn tại"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "Lỗi máy chủ"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "Lỗi đã được ghi lại bởi máy chủ."
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "Bạn không có quyền thay đổi vai trò của người dùng này.
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "Chỉ có siêu người dùng là có thể tạo người dùng mới"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "Tài khoản của bạn đã được tạo."
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "Xin hãy sử dụng chức năng tạo lại mật khẩu để đăng nhập"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "Chào mừng đến với InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "Giá trị không hợp lệ"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "Tập tin dữ liệu"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "Chọn tệp tin để tải lên"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "Tệp tin quá lớn"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "Không tìm thấy cột nào trong tệp tin"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "Không tìm thấy dòng nào trong tệp tin"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "Chưa có dữ liệu"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "Chưa cung cấp cột dữ liệu"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "Thiếu cột bắt buộc: '{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "Nhân bản cột: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "Hình ảnh từ xa"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "URL của tệp hình ảnh bên ngoài"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "Chức năng tải hình ảnh từ URL bên ngoài không được bật"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "Phiên bản cha"
|
|||
msgid "Include Variants"
|
||||
msgstr ""
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr "Xây dựng nguồn gốc"
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr "Đã gán cho tôi"
|
|||
msgid "Issued By"
|
||||
msgstr "Phát hành bởi"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr "Đã gán cho"
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "Bạn dựng phải được hủy bỏ trước khi có thể xóa được"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "Cài đặt vào"
|
|||
msgid "Destination stock item"
|
||||
msgstr "Kho hàng đích"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr "Tạo cấp"
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr "Tạo cấp"
|
|||
msgid "Part Name"
|
||||
msgstr "Tên sản phẩm"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr "Nhãn mã dự án"
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr "Tạo mới bản dựng con"
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr "Tự động tạo đơn hàng con"
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr "Chờ"
|
|||
msgid "Cancelled"
|
||||
msgstr "Đã hủy"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "Hoàn thành"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "Kho được yêu cầu cho đặt hàng bản dựng"
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr "Kết quả"
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr ""
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr "Mới {verbose_name}"
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr "Một đơn đặt hàng mới đã được tạo và phân công cho bạn"
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr "{verbose_name} đã bị hủy"
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr "Một đơn đặt từng được phân công cho bạn đã bị hủy bỏ"
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr "Mục đã nhận"
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr "Hàng đã được nhận theo đơn đặt mua"
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr "Hàng đã nhận theo đơn hàng trả lại"
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr "Lỗi được thông báo bởi phần mở rộng"
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr "Đang chạy"
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr "Công việc chờ xử lý"
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr "Tác vụ theo lịch"
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr "Tác vụ thất bại"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr "ID tác vụ"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr "ID tác vụ duy nhất"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr "Khoá"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr "Thời gian khóa"
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr "Tên công việc"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr "Chức năng"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr "Tên chức năng"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr "Đối số"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr "Đối số công việc"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr "Đối số từ khóa"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr "Đối số từ khóa công việc"
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "Tên tập tin"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr ""
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr ""
|
|||
msgid "Field Filters"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr "Hợp lệ"
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr ""
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr ""
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr "Loại tiền mua hàng của hàng hóa này"
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr "Không tìm thấy sản phẩm nhà cung cấp phù hợp"
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr "Tìm thấy nhiều sản phẩm nhà cung cấp phù hợp"
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr ""
|
|||
msgid "Matched supplier part"
|
||||
msgstr "Sản phẩm nhà cung cấp phù hợp"
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr "Hàng hóa này đã được nhận"
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr "Không phù hợp với mã vạch nhà cung cấp"
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr ""
|
|||
msgid "Insufficient stock available"
|
||||
msgstr "Kho không đủ hạn mức khả dụng"
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr "Không đủ thông tin"
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr ""
|
|||
msgid "No items provided to print"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr "Phần bổ sung trao đổi tiền tệ mẫu"
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr "Người đóng góp InvenTree"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr ""
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr ""
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr "Sản phẩm nhà cung cấp đã đưa không tồn tại"
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr "Sản phẩm nhà cung cấp có kích thước đóng gói được định nghĩa nhưng cờ use_pack_size chưa được thiết lập"
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr "Số sê-ri không thê được cung cấp cho sản phẩm không thể theo dõi"
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr "Số sêri quá lớn"
|
|||
msgid "Parent Item"
|
||||
msgstr "Mục cha"
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr "Sử dụng kích thước đóng gói khi thêm: Số lượng được định nghĩa là số của gói"
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr "Đã hết hạn"
|
|||
msgid "Child Items"
|
||||
msgstr "Mục con"
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr "Giá mua của mặt hàng, theo đơn vị hoặc gói"
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr "Nhập số của mặt hàng cần tạo số nối tiếp"
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr "Số lượng phải không vượt quá số lượng trong kho đang có ({q})"
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr "Điền số sêri cho hàng hóa mới"
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr "Vị trí kho đích"
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr "Trường ghi chú tùy chọn"
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr "Không thể gán số sêri cho sản phẩm này"
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "Số sêri đã tồn tại"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr "Chọn mặt hàng để lắp đặt"
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr "Số lượng để cài đặt"
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr "Nhập số lượng hàng hóa để cài đặt"
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr "Thêm ghi chú giao dịch (tùy chọn)"
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr "Số lượng cần cài đặt phải ít nhất là 1"
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr "Mặt hàng không khả dụng"
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr "Sản phẩm đã chọn không có trong hóa đơn vật liệu"
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr "Số lượng cần lắp đặt phải không vượt quá số lượng đang có"
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr "Vị trí đích cho hàng hóa bị gỡ bỏ"
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr "Chọn sản phẩm để chuyển đổi mặt hàng vào bên trong"
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr "Sản phẩm đã chọn không phải là tùy chọn hợp lệ để chuyển đổi"
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr "Không thể chuyển đổi hàng hóa với sản phẩm nhà cung cấp đã gán"
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr "Vị trí đích dành cho hàng hóa trả lại"
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr "Chọn mặt hàng để đổi trạng thái"
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr "Không có mặt hàng nào được chọn"
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr "Kho phụ"
|
|||
msgid "Parent stock location"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr "Sản phẩm phải có thể bán được"
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr "Hàng hóa được phân bổ đến một đơn hàng bán"
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr "Hàng hóa được phân bổ đến một đơn đặt bản dựng"
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr "Khách hàng được gán vào các mặt hàng"
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr "Công ty đã chọn không phải là khách hàng"
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr "Ghi chú phân bổ kho"
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr "Phải cung cấp danh sách mặt hàng"
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr "Ghi chú gộp kho"
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr "Cho phép nhiều nhà cung không khớp"
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr "Cho phép mặt hàng cùng sản phẩm nhà cung cấp khác phải được gộp"
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr "Cho phép trạng thái không khớp"
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr "Cho phép mặt hàng với mã trạng thái khác nhau để gộp lại"
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr "Cần cung cấp ít nhất hai mặt hàng"
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr ""
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr "Giá trị khóa chính mặt hàng"
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr "Mã trạng thái mặt hàng"
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr "Ghi chú giao dịch kho"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -17,23 +17,23 @@ msgstr ""
|
|||
"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
|
||||
"X-Crowdin-File-ID: 250\n"
|
||||
|
||||
#: InvenTree/api.py:269
|
||||
#: InvenTree/api.py:273
|
||||
msgid "API endpoint not found"
|
||||
msgstr "未找到 API 端點"
|
||||
|
||||
#: InvenTree/api.py:386
|
||||
#: InvenTree/api.py:390
|
||||
msgid "Invalid items list provided"
|
||||
msgstr "提供了無效的單位"
|
||||
|
||||
#: InvenTree/api.py:395
|
||||
#: InvenTree/api.py:399
|
||||
msgid "Invalid filters provided"
|
||||
msgstr "提供了無效的過濾器"
|
||||
|
||||
#: InvenTree/api.py:400
|
||||
#: InvenTree/api.py:404
|
||||
msgid "No items found to delete"
|
||||
msgstr "未找到要刪除的項目"
|
||||
|
||||
#: InvenTree/api.py:514
|
||||
#: InvenTree/api.py:518
|
||||
msgid "User does not have permission to view this model"
|
||||
msgstr "用户沒有權限查閲當前模型。"
|
||||
|
||||
|
|
@ -344,51 +344,51 @@ msgstr ""
|
|||
msgid "Email"
|
||||
msgstr "電子郵件"
|
||||
|
||||
#: InvenTree/models.py:103
|
||||
#: InvenTree/models.py:105
|
||||
msgid "Error running plugin validation"
|
||||
msgstr "驗證外掛程式時發生錯誤"
|
||||
|
||||
#: InvenTree/models.py:172
|
||||
#: InvenTree/models.py:174
|
||||
msgid "Metadata must be a python dict object"
|
||||
msgstr "Metadata必須是一個Python Dictionary物件"
|
||||
|
||||
#: InvenTree/models.py:178
|
||||
#: InvenTree/models.py:180
|
||||
msgid "Plugin Metadata"
|
||||
msgstr "外掛程式Metadata"
|
||||
|
||||
#: InvenTree/models.py:179
|
||||
#: InvenTree/models.py:181
|
||||
msgid "JSON metadata field, for use by external plugins"
|
||||
msgstr "外掛程式使用的JSON Metadata欄位"
|
||||
|
||||
#: InvenTree/models.py:406
|
||||
#: InvenTree/models.py:408
|
||||
msgid "Improperly formatted pattern"
|
||||
msgstr "格式錯誤"
|
||||
|
||||
#: InvenTree/models.py:413
|
||||
#: InvenTree/models.py:415
|
||||
msgid "Unknown format key specified"
|
||||
msgstr "指定了不明的格式鍵值"
|
||||
|
||||
#: InvenTree/models.py:419
|
||||
#: InvenTree/models.py:421
|
||||
msgid "Missing required format key"
|
||||
msgstr "缺少必須的格式鍵值"
|
||||
|
||||
#: InvenTree/models.py:430
|
||||
#: InvenTree/models.py:432
|
||||
msgid "Reference field cannot be empty"
|
||||
msgstr "參考欄位不能空白"
|
||||
|
||||
#: InvenTree/models.py:438
|
||||
#: InvenTree/models.py:440
|
||||
msgid "Reference must match required pattern"
|
||||
msgstr "參考欄位並須符合格式"
|
||||
|
||||
#: InvenTree/models.py:469
|
||||
#: InvenTree/models.py:471
|
||||
msgid "Reference number is too large"
|
||||
msgstr "參考編號過大"
|
||||
|
||||
#: InvenTree/models.py:720
|
||||
#: InvenTree/models.py:722
|
||||
msgid "Duplicate names cannot exist under the same parent"
|
||||
msgstr "同一個上層元件下不能有重複的名字"
|
||||
|
||||
#: InvenTree/models.py:737
|
||||
#: InvenTree/models.py:739
|
||||
msgid "Invalid choice"
|
||||
msgstr "無效的選項"
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ msgstr "名稱"
|
|||
msgid "Description"
|
||||
msgstr "描述"
|
||||
|
||||
#: InvenTree/models.py:774 stock/models.py:90
|
||||
#: InvenTree/models.py:776 stock/models.py:90
|
||||
msgid "Description (optional)"
|
||||
msgstr "描述(選填)"
|
||||
|
||||
|
|
@ -417,35 +417,44 @@ msgstr "描述(選填)"
|
|||
msgid "Path"
|
||||
msgstr "路徑"
|
||||
|
||||
#: InvenTree/models.py:926
|
||||
#: InvenTree/models.py:928
|
||||
msgid "Markdown notes (optional)"
|
||||
msgstr "Markdown 註記(選填)"
|
||||
|
||||
#: InvenTree/models.py:957
|
||||
#: InvenTree/models.py:959
|
||||
msgid "Barcode Data"
|
||||
msgstr "條碼資料"
|
||||
|
||||
#: InvenTree/models.py:958
|
||||
#: InvenTree/models.py:960
|
||||
msgid "Third party barcode data"
|
||||
msgstr "第三方條碼資料"
|
||||
|
||||
#: InvenTree/models.py:964
|
||||
#: InvenTree/models.py:966
|
||||
msgid "Barcode Hash"
|
||||
msgstr "條碼雜湊值"
|
||||
|
||||
#: InvenTree/models.py:965
|
||||
#: InvenTree/models.py:967
|
||||
msgid "Unique hash of barcode data"
|
||||
msgstr "條碼資料的唯一雜湊值"
|
||||
|
||||
#: InvenTree/models.py:1032
|
||||
#: InvenTree/models.py:1034
|
||||
msgid "Existing barcode found"
|
||||
msgstr "發現現有條碼"
|
||||
|
||||
#: InvenTree/models.py:1075
|
||||
#: InvenTree/models.py:1112
|
||||
msgid "Task Failure"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1114
|
||||
#, python-brace-format
|
||||
msgid "Background worker task '{instance.func}' failed after {n} attempts"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/models.py:1142
|
||||
msgid "Server Error"
|
||||
msgstr "伺服器錯誤"
|
||||
|
||||
#: InvenTree/models.py:1076
|
||||
#: InvenTree/models.py:1143
|
||||
msgid "An error has been logged by the server."
|
||||
msgstr "伺服器紀錄了一個錯誤。"
|
||||
|
||||
|
|
@ -519,11 +528,11 @@ msgstr "您沒有更改這個使用者角色的權限"
|
|||
msgid "Only superusers can create new users"
|
||||
msgstr "只有管理員帳户可以建立新的使用者"
|
||||
|
||||
#: InvenTree/serializers.py:522
|
||||
#: InvenTree/serializers.py:523
|
||||
msgid "Your account has been created."
|
||||
msgstr "您的帳號已經建立完成。"
|
||||
|
||||
#: InvenTree/serializers.py:524
|
||||
#: InvenTree/serializers.py:525
|
||||
msgid "Please use the password reset function to login"
|
||||
msgstr "請使用重設密碼功能來登入"
|
||||
|
||||
|
|
@ -535,61 +544,61 @@ msgstr "歡迎使用 InvenTree"
|
|||
msgid "Invalid value"
|
||||
msgstr "無效值"
|
||||
|
||||
#: InvenTree/serializers.py:609 importer/models.py:64
|
||||
#: InvenTree/serializers.py:614 importer/models.py:64
|
||||
msgid "Data File"
|
||||
msgstr "數據文件"
|
||||
|
||||
#: InvenTree/serializers.py:610
|
||||
#: InvenTree/serializers.py:615
|
||||
msgid "Select data file for upload"
|
||||
msgstr "選擇要上傳的數據文件"
|
||||
|
||||
#: InvenTree/serializers.py:627 common/files.py:63
|
||||
#: InvenTree/serializers.py:632 common/files.py:63
|
||||
msgid "Unsupported file format"
|
||||
msgstr ""
|
||||
|
||||
#: InvenTree/serializers.py:633
|
||||
#: InvenTree/serializers.py:638
|
||||
msgid "File is too large"
|
||||
msgstr "文件過大"
|
||||
|
||||
#: InvenTree/serializers.py:654
|
||||
#: InvenTree/serializers.py:659
|
||||
msgid "No columns found in file"
|
||||
msgstr "在文件中沒有找到列"
|
||||
|
||||
#: InvenTree/serializers.py:657
|
||||
#: InvenTree/serializers.py:662
|
||||
msgid "No data rows found in file"
|
||||
msgstr "在文件中沒有找到數據行"
|
||||
|
||||
#: InvenTree/serializers.py:769
|
||||
#: InvenTree/serializers.py:774
|
||||
msgid "No data rows provided"
|
||||
msgstr "沒有提供數據行"
|
||||
|
||||
#: InvenTree/serializers.py:772
|
||||
#: InvenTree/serializers.py:777
|
||||
msgid "No data columns supplied"
|
||||
msgstr "沒有提供數據列"
|
||||
|
||||
#: InvenTree/serializers.py:838
|
||||
#: InvenTree/serializers.py:843
|
||||
#, python-brace-format
|
||||
msgid "Missing required column: '{name}'"
|
||||
msgstr "缺少必需的列:'{name}'"
|
||||
|
||||
#: InvenTree/serializers.py:847
|
||||
#: InvenTree/serializers.py:852
|
||||
#, python-brace-format
|
||||
msgid "Duplicate column: '{col}'"
|
||||
msgstr "重複列: '{col}'"
|
||||
|
||||
#: InvenTree/serializers.py:886
|
||||
#: InvenTree/serializers.py:891
|
||||
msgid "Remote Image"
|
||||
msgstr "遠程圖片"
|
||||
|
||||
#: InvenTree/serializers.py:887
|
||||
#: InvenTree/serializers.py:892
|
||||
msgid "URL of remote image file"
|
||||
msgstr "遠程圖片文件的 URL"
|
||||
|
||||
#: InvenTree/serializers.py:905
|
||||
#: InvenTree/serializers.py:910
|
||||
msgid "Downloading images from remote URL is not enabled"
|
||||
msgstr "未啓用從遠程 URL下載圖片"
|
||||
|
||||
#: InvenTree/serializers.py:912
|
||||
#: InvenTree/serializers.py:917
|
||||
msgid "Failed to download image from remote URL"
|
||||
msgstr "從遠程URL下載圖像失敗"
|
||||
|
||||
|
|
@ -622,7 +631,7 @@ msgstr "上層生產工單"
|
|||
msgid "Include Variants"
|
||||
msgstr "包含變體"
|
||||
|
||||
#: build/api.py:90
|
||||
#: build/api.py:93
|
||||
msgid "Ancestor Build"
|
||||
msgstr "可測試部分"
|
||||
|
||||
|
|
@ -635,11 +644,11 @@ msgstr "分配給我"
|
|||
msgid "Issued By"
|
||||
msgstr "發佈者"
|
||||
|
||||
#: build/api.py:145
|
||||
#: build/api.py:148
|
||||
msgid "Assigned To"
|
||||
msgstr "負責人"
|
||||
|
||||
#: build/api.py:307
|
||||
#: build/api.py:310
|
||||
msgid "Build must be cancelled before it can be deleted"
|
||||
msgstr "工單必須被取消才能被刪除"
|
||||
|
||||
|
|
@ -1003,7 +1012,7 @@ msgstr "安裝到"
|
|||
msgid "Destination stock item"
|
||||
msgstr "目的庫存品項"
|
||||
|
||||
#: build/serializers.py:107
|
||||
#: build/serializers.py:108
|
||||
msgid "Build Level"
|
||||
msgstr "構建等級"
|
||||
|
||||
|
|
@ -1013,15 +1022,15 @@ msgstr "構建等級"
|
|||
msgid "Part Name"
|
||||
msgstr "零件名稱"
|
||||
|
||||
#: build/serializers.py:127
|
||||
#: build/serializers.py:128
|
||||
msgid "Project Code Label"
|
||||
msgstr "項目編碼標籤"
|
||||
|
||||
#: build/serializers.py:133
|
||||
#: build/serializers.py:134
|
||||
msgid "Create Child Builds"
|
||||
msgstr "新建子生產項目"
|
||||
|
||||
#: build/serializers.py:134
|
||||
#: build/serializers.py:135
|
||||
msgid "Automatically generate child build orders"
|
||||
msgstr "自動生成子生成工單"
|
||||
|
||||
|
|
@ -1433,13 +1442,13 @@ msgstr "被掛起"
|
|||
msgid "Cancelled"
|
||||
msgstr "已取消"
|
||||
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:510
|
||||
#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
|
||||
#: importer/status_codes.py:27 order/status_codes.py:15
|
||||
#: order/status_codes.py:52 order/status_codes.py:83 report/models.py:451
|
||||
msgid "Complete"
|
||||
msgstr "完成"
|
||||
|
||||
#: build/tasks.py:180
|
||||
#: build/tasks.py:184
|
||||
msgid "Stock required for build order"
|
||||
msgstr "生產訂單所需庫存"
|
||||
|
||||
|
|
@ -3391,109 +3400,109 @@ msgstr "結果"
|
|||
msgid "Was the barcode scan successful?"
|
||||
msgstr "條碼掃描成功嗎?"
|
||||
|
||||
#: common/notifications.py:310
|
||||
#: common/notifications.py:328
|
||||
#, python-brace-format
|
||||
msgid "New {verbose_name}"
|
||||
msgstr "新建{verbose_name}"
|
||||
|
||||
#: common/notifications.py:312
|
||||
#: common/notifications.py:330
|
||||
msgid "A new order has been created and assigned to you"
|
||||
msgstr "新訂單已創建並分配給您"
|
||||
|
||||
#: common/notifications.py:318
|
||||
#: common/notifications.py:336
|
||||
#, python-brace-format
|
||||
msgid "{verbose_name} canceled"
|
||||
msgstr "{verbose_name} 已取消"
|
||||
|
||||
#: common/notifications.py:320
|
||||
#: common/notifications.py:338
|
||||
msgid "A order that is assigned to you was canceled"
|
||||
msgstr "分配給您的訂單已取消"
|
||||
|
||||
#: common/notifications.py:326 common/notifications.py:333 order/api.py:438
|
||||
#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
|
||||
msgid "Items Received"
|
||||
msgstr "收到的物品"
|
||||
|
||||
#: common/notifications.py:328
|
||||
#: common/notifications.py:346
|
||||
msgid "Items have been received against a purchase order"
|
||||
msgstr "已根據採購訂單收到物品"
|
||||
|
||||
#: common/notifications.py:335
|
||||
#: common/notifications.py:353
|
||||
msgid "Items have been received against a return order"
|
||||
msgstr "已收到退貨訂單中的物品"
|
||||
|
||||
#: common/notifications.py:453
|
||||
#: common/notifications.py:475
|
||||
msgid "Error raised by plugin"
|
||||
msgstr "插件引發的錯誤"
|
||||
|
||||
#: common/serializers.py:418
|
||||
#: common/serializers.py:423
|
||||
msgid "Is Running"
|
||||
msgstr "正在運行"
|
||||
|
||||
#: common/serializers.py:424
|
||||
#: common/serializers.py:429
|
||||
msgid "Pending Tasks"
|
||||
msgstr "等待完成的任務"
|
||||
|
||||
#: common/serializers.py:430
|
||||
#: common/serializers.py:435
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr "預定的任務"
|
||||
|
||||
#: common/serializers.py:436
|
||||
#: common/serializers.py:441
|
||||
msgid "Failed Tasks"
|
||||
msgstr "失敗的任務"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Task ID"
|
||||
msgstr "任務ID"
|
||||
|
||||
#: common/serializers.py:451
|
||||
#: common/serializers.py:456
|
||||
msgid "Unique task ID"
|
||||
msgstr "唯一任務ID"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock"
|
||||
msgstr "鎖定"
|
||||
|
||||
#: common/serializers.py:453
|
||||
#: common/serializers.py:458
|
||||
msgid "Lock time"
|
||||
msgstr "鎖定時間"
|
||||
|
||||
#: common/serializers.py:455
|
||||
#: common/serializers.py:460
|
||||
msgid "Task name"
|
||||
msgstr "任務名稱"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function"
|
||||
msgstr "功能"
|
||||
|
||||
#: common/serializers.py:457
|
||||
#: common/serializers.py:462
|
||||
msgid "Function name"
|
||||
msgstr "功能名稱"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Arguments"
|
||||
msgstr "參數"
|
||||
|
||||
#: common/serializers.py:459
|
||||
#: common/serializers.py:464
|
||||
msgid "Task arguments"
|
||||
msgstr "任務參數"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Keyword Arguments"
|
||||
msgstr "關鍵字參數"
|
||||
|
||||
#: common/serializers.py:462
|
||||
#: common/serializers.py:467
|
||||
msgid "Task keyword arguments"
|
||||
msgstr "任務關鍵詞參數"
|
||||
|
||||
#: common/serializers.py:572
|
||||
#: common/serializers.py:577
|
||||
msgid "Filename"
|
||||
msgstr "檔案名稱"
|
||||
|
||||
#: common/serializers.py:579 report/api.py:100 report/serializers.py:54
|
||||
#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
|
||||
msgid "Model Type"
|
||||
msgstr "模型類型"
|
||||
|
||||
#: common/serializers.py:607
|
||||
#: common/serializers.py:612
|
||||
msgid "User does not have permission to create or edit attachments for this model"
|
||||
msgstr "用户無權為此模式創建或編輯附件"
|
||||
|
||||
|
|
@ -3930,59 +3939,59 @@ msgstr "字段覆蓋"
|
|||
msgid "Field Filters"
|
||||
msgstr "字段篩選器"
|
||||
|
||||
#: importer/models.py:231
|
||||
#: importer/models.py:239
|
||||
msgid "Some required fields have not been mapped"
|
||||
msgstr "某些必填字段尚未映射"
|
||||
|
||||
#: importer/models.py:388
|
||||
#: importer/models.py:396
|
||||
msgid "Column is already mapped to a database field"
|
||||
msgstr "列已映射到數據庫字段"
|
||||
|
||||
#: importer/models.py:393
|
||||
#: importer/models.py:401
|
||||
msgid "Field is already mapped to a data column"
|
||||
msgstr "字段已映射到數據列"
|
||||
|
||||
#: importer/models.py:402
|
||||
#: importer/models.py:410
|
||||
msgid "Column mapping must be linked to a valid import session"
|
||||
msgstr "列映射必須鏈接到有效的導入會話"
|
||||
|
||||
#: importer/models.py:407
|
||||
#: importer/models.py:415
|
||||
msgid "Column does not exist in the data file"
|
||||
msgstr "數據文件中不存在列"
|
||||
|
||||
#: importer/models.py:414
|
||||
#: importer/models.py:422
|
||||
msgid "Field does not exist in the target model"
|
||||
msgstr "目標模型中不存在字段"
|
||||
|
||||
#: importer/models.py:418
|
||||
#: importer/models.py:426
|
||||
msgid "Selected field is read-only"
|
||||
msgstr "所選字段為只讀"
|
||||
|
||||
#: importer/models.py:423 importer/models.py:494
|
||||
#: importer/models.py:431 importer/models.py:502
|
||||
msgid "Import Session"
|
||||
msgstr "導入會話"
|
||||
|
||||
#: importer/models.py:427
|
||||
#: importer/models.py:435
|
||||
msgid "Field"
|
||||
msgstr "字段"
|
||||
|
||||
#: importer/models.py:429
|
||||
#: importer/models.py:437
|
||||
msgid "Column"
|
||||
msgstr "列"
|
||||
|
||||
#: importer/models.py:498
|
||||
#: importer/models.py:506
|
||||
msgid "Row Index"
|
||||
msgstr "行索引"
|
||||
|
||||
#: importer/models.py:501
|
||||
#: importer/models.py:509
|
||||
msgid "Original row data"
|
||||
msgstr "原始行數據"
|
||||
|
||||
#: importer/models.py:506 machine/models.py:110
|
||||
#: importer/models.py:514 machine/models.py:110
|
||||
msgid "Errors"
|
||||
msgstr "錯誤"
|
||||
|
||||
#: importer/models.py:508 part/api.py:857
|
||||
#: importer/models.py:516 part/api.py:857
|
||||
msgid "Valid"
|
||||
msgstr "有效"
|
||||
|
||||
|
|
@ -5925,7 +5934,7 @@ msgstr "結果"
|
|||
msgid "Number of results recorded against this template"
|
||||
msgstr "根據該模板記錄的結果數量"
|
||||
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:630
|
||||
#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
|
||||
msgid "Purchase currency of this stock item"
|
||||
msgstr "購買此庫存項的貨幣"
|
||||
|
||||
|
|
@ -6344,7 +6353,7 @@ msgstr "沒有找到匹配的供應商零件"
|
|||
msgid "Multiple matching supplier parts found"
|
||||
msgstr "找到多個匹配的供應商零件"
|
||||
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:655
|
||||
#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
|
||||
msgid "No matching plugin found for barcode data"
|
||||
msgstr "沒有找到匹配條碼數據的插件"
|
||||
|
||||
|
|
@ -6352,31 +6361,31 @@ msgstr "沒有找到匹配條碼數據的插件"
|
|||
msgid "Matched supplier part"
|
||||
msgstr "匹配的供應商零件"
|
||||
|
||||
#: plugin/base/barcodes/api.py:516
|
||||
#: plugin/base/barcodes/api.py:525
|
||||
msgid "Item has already been received"
|
||||
msgstr "項目已被接收"
|
||||
|
||||
#: plugin/base/barcodes/api.py:554
|
||||
#: plugin/base/barcodes/api.py:563
|
||||
msgid "No match for supplier barcode"
|
||||
msgstr "供應商條形碼沒有匹配"
|
||||
|
||||
#: plugin/base/barcodes/api.py:603
|
||||
#: plugin/base/barcodes/api.py:612
|
||||
msgid "Multiple matching line items found"
|
||||
msgstr "找到多個匹配的行項目"
|
||||
|
||||
#: plugin/base/barcodes/api.py:606
|
||||
#: plugin/base/barcodes/api.py:615
|
||||
msgid "No matching line item found"
|
||||
msgstr "未找到匹配的行項目"
|
||||
|
||||
#: plugin/base/barcodes/api.py:652
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
msgid "No sales order provided"
|
||||
msgstr "未提供銷售訂單"
|
||||
|
||||
#: plugin/base/barcodes/api.py:661
|
||||
#: plugin/base/barcodes/api.py:670
|
||||
msgid "Barcode does not match an existing stock item"
|
||||
msgstr "條形碼與現有的庫存項不匹配"
|
||||
|
||||
#: plugin/base/barcodes/api.py:677
|
||||
#: plugin/base/barcodes/api.py:686
|
||||
msgid "Stock item does not match line item"
|
||||
msgstr "庫存項與行項目不匹配"
|
||||
|
||||
|
|
@ -6384,11 +6393,11 @@ msgstr "庫存項與行項目不匹配"
|
|||
msgid "Insufficient stock available"
|
||||
msgstr "可用庫存不足"
|
||||
|
||||
#: plugin/base/barcodes/api.py:720
|
||||
#: plugin/base/barcodes/api.py:729
|
||||
msgid "Stock item allocated to sales order"
|
||||
msgstr "庫存項已分配到銷售訂單"
|
||||
|
||||
#: plugin/base/barcodes/api.py:723
|
||||
#: plugin/base/barcodes/api.py:732
|
||||
msgid "Not enough information"
|
||||
msgstr "沒有足夠的信息"
|
||||
|
||||
|
|
@ -6498,43 +6507,39 @@ msgstr "渲染標籤到 HTML 時出錯"
|
|||
msgid "No items provided to print"
|
||||
msgstr "沒有要打印的項目"
|
||||
|
||||
#: plugin/base/ui/serializers.py:27
|
||||
msgid "Plugin Key"
|
||||
msgstr "插件密鑰"
|
||||
#: plugin/base/ui/serializers.py:30
|
||||
msgid "Plugin Name"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:31
|
||||
msgid "Panel Name"
|
||||
msgstr "面板名稱"
|
||||
|
||||
#: plugin/base/ui/serializers.py:35
|
||||
msgid "Panel Title"
|
||||
msgstr "面板標題"
|
||||
|
||||
#: plugin/base/ui/serializers.py:40
|
||||
msgid "Panel Icon"
|
||||
msgstr "面板圖標"
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Panel Content (HTML)"
|
||||
msgstr "面板內容 (HTML)"
|
||||
|
||||
#: plugin/base/ui/serializers.py:48
|
||||
msgid "Panel Context (JSON)"
|
||||
msgstr "面板內容 (JSON)"
|
||||
|
||||
#: plugin/base/ui/serializers.py:52
|
||||
msgid "Panel Source (javascript)"
|
||||
msgstr "面板來源 (javascript)"
|
||||
|
||||
#: plugin/base/ui/serializers.py:66
|
||||
#: plugin/base/ui/serializers.py:34
|
||||
msgid "Feature Type"
|
||||
msgstr "功能類別"
|
||||
|
||||
#: plugin/base/ui/serializers.py:69
|
||||
#: plugin/base/ui/serializers.py:39
|
||||
msgid "Feature Label"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:44
|
||||
msgid "Feature Title"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:49
|
||||
msgid "Feature Description"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:54
|
||||
msgid "Feature Icon"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:58
|
||||
msgid "Feature Options"
|
||||
msgstr "特色選項"
|
||||
|
||||
#: plugin/base/ui/serializers.py:72
|
||||
#: plugin/base/ui/serializers.py:61
|
||||
msgid "Feature Context"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/base/ui/serializers.py:64
|
||||
msgid "Feature Source (javascript)"
|
||||
msgstr "功能源 (javascript)"
|
||||
|
||||
|
|
@ -6905,38 +6910,70 @@ msgstr "貨幣兑換插件示例"
|
|||
msgid "InvenTree Contributors"
|
||||
msgstr "InvenTree 貢獻者"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
#: plugin/samples/integration/user_interface_sample.py:27
|
||||
msgid "Enable Part Panels"
|
||||
msgstr "啓用零件面板"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:29
|
||||
#: plugin/samples/integration/user_interface_sample.py:28
|
||||
msgid "Enable custom panels for Part views"
|
||||
msgstr "啓用自定義面板來查看部件"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
#: plugin/samples/integration/user_interface_sample.py:33
|
||||
msgid "Enable Purchase Order Panels"
|
||||
msgstr "啓用採購訂單面板"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:35
|
||||
#: plugin/samples/integration/user_interface_sample.py:34
|
||||
msgid "Enable custom panels for Purchase Order views"
|
||||
msgstr "啓用自定義面板以查看購買訂單"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
#: plugin/samples/integration/user_interface_sample.py:39
|
||||
msgid "Enable Broken Panels"
|
||||
msgstr "啓用破損面板"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:41
|
||||
#: plugin/samples/integration/user_interface_sample.py:40
|
||||
msgid "Enable broken panels for testing"
|
||||
msgstr "啓用損壞的面板來測試"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
#: plugin/samples/integration/user_interface_sample.py:45
|
||||
msgid "Enable Dynamic Panel"
|
||||
msgstr "啓用動態面板"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:47
|
||||
#: plugin/samples/integration/user_interface_sample.py:46
|
||||
msgid "Enable dynamic panels for testing"
|
||||
msgstr "啓用動態面板來測試"
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:98
|
||||
msgid "Part Panel"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:131
|
||||
msgid "Broken Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:133
|
||||
msgid "This is a broken dashboard item - it will not render!"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:139
|
||||
msgid "Sample Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:141
|
||||
msgid "This is a sample dashboard item. It renders a simple string of HTML content."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:147
|
||||
msgid "Context Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:161
|
||||
msgid "Admin Dashboard Item"
|
||||
msgstr ""
|
||||
|
||||
#: plugin/samples/integration/user_interface_sample.py:162
|
||||
msgid "This is an admin-only dashboard item."
|
||||
msgstr ""
|
||||
|
||||
#: plugin/serializers.py:82
|
||||
msgid "Source File"
|
||||
msgstr ""
|
||||
|
|
@ -7441,7 +7478,7 @@ msgstr "按頂級位置篩選"
|
|||
msgid "Include sub-locations in filtered results"
|
||||
msgstr "在篩選結果中包含子地點"
|
||||
|
||||
#: stock/api.py:366 stock/serializers.py:1204
|
||||
#: stock/api.py:366 stock/serializers.py:1217
|
||||
msgid "Parent Location"
|
||||
msgstr "上級地點"
|
||||
|
||||
|
|
@ -7485,7 +7522,7 @@ msgstr "給定的供應商零件不存在"
|
|||
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
|
||||
msgstr "供應商零件有定義的包裝大小,但 use_pack_size 標誌未設置"
|
||||
|
||||
#: stock/api.py:993
|
||||
#: stock/api.py:996
|
||||
msgid "Serial numbers cannot be supplied for a non-trackable part"
|
||||
msgstr "不能為不可跟蹤的零件提供序列號"
|
||||
|
||||
|
|
@ -7855,11 +7892,11 @@ msgstr "序列號太大"
|
|||
msgid "Parent Item"
|
||||
msgstr "父項"
|
||||
|
||||
#: stock/serializers.py:461
|
||||
#: stock/serializers.py:463
|
||||
msgid "Parent stock item"
|
||||
msgstr "父庫存項"
|
||||
|
||||
#: stock/serializers.py:482
|
||||
#: stock/serializers.py:484
|
||||
msgid "Use pack size when adding: the quantity defined is the number of packs"
|
||||
msgstr "添加時使用包裝尺寸:定義的數量是包裝的數量"
|
||||
|
||||
|
|
@ -7871,113 +7908,113 @@ msgstr "已過期"
|
|||
msgid "Child Items"
|
||||
msgstr "子項目"
|
||||
|
||||
#: stock/serializers.py:620
|
||||
#: stock/serializers.py:633
|
||||
msgid "Tracking Items"
|
||||
msgstr "跟蹤項目"
|
||||
|
||||
#: stock/serializers.py:626
|
||||
#: stock/serializers.py:639
|
||||
msgid "Purchase price of this stock item, per unit or pack"
|
||||
msgstr "此庫存商品的購買價格,單位或包裝"
|
||||
|
||||
#: stock/serializers.py:645
|
||||
#: stock/serializers.py:658
|
||||
msgid "Minimum Pricing"
|
||||
msgstr "最低價格"
|
||||
|
||||
#: stock/serializers.py:651
|
||||
#: stock/serializers.py:664
|
||||
msgid "Maximum Pricing"
|
||||
msgstr "最高價格"
|
||||
|
||||
#: stock/serializers.py:675
|
||||
#: stock/serializers.py:688
|
||||
msgid "Enter number of stock items to serialize"
|
||||
msgstr "輸入要序列化的庫存項目數量"
|
||||
|
||||
#: stock/serializers.py:688
|
||||
#: stock/serializers.py:701
|
||||
#, python-brace-format
|
||||
msgid "Quantity must not exceed available stock quantity ({q})"
|
||||
msgstr "數量不得超過現有庫存量 ({q})"
|
||||
|
||||
#: stock/serializers.py:695
|
||||
#: stock/serializers.py:708
|
||||
msgid "Enter serial numbers for new items"
|
||||
msgstr "輸入新項目的序列號"
|
||||
|
||||
#: stock/serializers.py:706 stock/serializers.py:1444 stock/serializers.py:1700
|
||||
#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
|
||||
msgid "Destination stock location"
|
||||
msgstr "目標庫存位置"
|
||||
|
||||
#: stock/serializers.py:713
|
||||
#: stock/serializers.py:726
|
||||
msgid "Optional note field"
|
||||
msgstr "可選註釋字段"
|
||||
|
||||
#: stock/serializers.py:723
|
||||
#: stock/serializers.py:736
|
||||
msgid "Serial numbers cannot be assigned to this part"
|
||||
msgstr "此零件不能分配序列號"
|
||||
|
||||
#: stock/serializers.py:743
|
||||
#: stock/serializers.py:756
|
||||
msgid "Serial numbers already exist"
|
||||
msgstr "序列號已存在"
|
||||
|
||||
#: stock/serializers.py:782
|
||||
#: stock/serializers.py:795
|
||||
msgid "Select stock item to install"
|
||||
msgstr "選擇要安裝的庫存項目"
|
||||
|
||||
#: stock/serializers.py:789
|
||||
#: stock/serializers.py:802
|
||||
msgid "Quantity to Install"
|
||||
msgstr "安裝數量"
|
||||
|
||||
#: stock/serializers.py:790
|
||||
#: stock/serializers.py:803
|
||||
msgid "Enter the quantity of items to install"
|
||||
msgstr "輸入要安裝的項目數量"
|
||||
|
||||
#: stock/serializers.py:795 stock/serializers.py:875 stock/serializers.py:1001
|
||||
#: stock/serializers.py:1051
|
||||
#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
|
||||
#: stock/serializers.py:1064
|
||||
msgid "Add transaction note (optional)"
|
||||
msgstr "添加交易記錄 (可選)"
|
||||
|
||||
#: stock/serializers.py:803
|
||||
#: stock/serializers.py:816
|
||||
msgid "Quantity to install must be at least 1"
|
||||
msgstr "安裝數量必須至少為1"
|
||||
|
||||
#: stock/serializers.py:811
|
||||
#: stock/serializers.py:824
|
||||
msgid "Stock item is unavailable"
|
||||
msgstr "庫存項不可用"
|
||||
|
||||
#: stock/serializers.py:822
|
||||
#: stock/serializers.py:835
|
||||
msgid "Selected part is not in the Bill of Materials"
|
||||
msgstr "所選零件不在物料清單中"
|
||||
|
||||
#: stock/serializers.py:835
|
||||
#: stock/serializers.py:848
|
||||
msgid "Quantity to install must not exceed available quantity"
|
||||
msgstr "安裝數量不得超過可用數量"
|
||||
|
||||
#: stock/serializers.py:870
|
||||
#: stock/serializers.py:883
|
||||
msgid "Destination location for uninstalled item"
|
||||
msgstr "已卸載項目的目標位置"
|
||||
|
||||
#: stock/serializers.py:921
|
||||
#: stock/serializers.py:934
|
||||
msgid "Unsupported statistic type: "
|
||||
msgstr "不支持的統計類型: "
|
||||
|
||||
#: stock/serializers.py:935
|
||||
#: stock/serializers.py:948
|
||||
msgid "Select part to convert stock item into"
|
||||
msgstr "選擇要將庫存項目轉換為的零件"
|
||||
|
||||
#: stock/serializers.py:948
|
||||
#: stock/serializers.py:961
|
||||
msgid "Selected part is not a valid option for conversion"
|
||||
msgstr "所選零件不是有效的轉換選項"
|
||||
|
||||
#: stock/serializers.py:965
|
||||
#: stock/serializers.py:978
|
||||
msgid "Cannot convert stock item with assigned SupplierPart"
|
||||
msgstr "無法轉換已分配供應商零件的庫存項"
|
||||
|
||||
#: stock/serializers.py:996
|
||||
#: stock/serializers.py:1009
|
||||
msgid "Destination location for returned item"
|
||||
msgstr "退回物品的目的地位置"
|
||||
|
||||
#: stock/serializers.py:1033
|
||||
#: stock/serializers.py:1046
|
||||
msgid "Select stock items to change status"
|
||||
msgstr "選擇要更改狀態的庫存項目"
|
||||
|
||||
#: stock/serializers.py:1039
|
||||
#: stock/serializers.py:1052
|
||||
msgid "No stock items selected"
|
||||
msgstr "未選擇庫存商品"
|
||||
|
||||
|
|
@ -7989,71 +8026,71 @@ msgstr "轉租"
|
|||
msgid "Parent stock location"
|
||||
msgstr "上級庫存地點"
|
||||
|
||||
#: stock/serializers.py:1316
|
||||
#: stock/serializers.py:1329
|
||||
msgid "Part must be salable"
|
||||
msgstr "零件必須可銷售"
|
||||
|
||||
#: stock/serializers.py:1320
|
||||
#: stock/serializers.py:1333
|
||||
msgid "Item is allocated to a sales order"
|
||||
msgstr "物料已分配到銷售訂單"
|
||||
|
||||
#: stock/serializers.py:1324
|
||||
#: stock/serializers.py:1337
|
||||
msgid "Item is allocated to a build order"
|
||||
msgstr "項目被分配到生產訂單中"
|
||||
|
||||
#: stock/serializers.py:1348
|
||||
#: stock/serializers.py:1361
|
||||
msgid "Customer to assign stock items"
|
||||
msgstr "客户分配庫存項目"
|
||||
|
||||
#: stock/serializers.py:1354
|
||||
#: stock/serializers.py:1367
|
||||
msgid "Selected company is not a customer"
|
||||
msgstr "所選公司不是客户"
|
||||
|
||||
#: stock/serializers.py:1362
|
||||
#: stock/serializers.py:1375
|
||||
msgid "Stock assignment notes"
|
||||
msgstr "庫存分配説明"
|
||||
|
||||
#: stock/serializers.py:1372 stock/serializers.py:1626
|
||||
#: stock/serializers.py:1385 stock/serializers.py:1639
|
||||
msgid "A list of stock items must be provided"
|
||||
msgstr "必須提供庫存物品清單"
|
||||
|
||||
#: stock/serializers.py:1451
|
||||
#: stock/serializers.py:1464
|
||||
msgid "Stock merging notes"
|
||||
msgstr "庫存合併説明"
|
||||
|
||||
#: stock/serializers.py:1456
|
||||
#: stock/serializers.py:1469
|
||||
msgid "Allow mismatched suppliers"
|
||||
msgstr "允許不匹配的供應商"
|
||||
|
||||
#: stock/serializers.py:1457
|
||||
#: stock/serializers.py:1470
|
||||
msgid "Allow stock items with different supplier parts to be merged"
|
||||
msgstr "允許合併具有不同供應商零件的庫存項目"
|
||||
|
||||
#: stock/serializers.py:1462
|
||||
#: stock/serializers.py:1475
|
||||
msgid "Allow mismatched status"
|
||||
msgstr "允許不匹配的狀態"
|
||||
|
||||
#: stock/serializers.py:1463
|
||||
#: stock/serializers.py:1476
|
||||
msgid "Allow stock items with different status codes to be merged"
|
||||
msgstr "允許合併具有不同狀態代碼的庫存項目"
|
||||
|
||||
#: stock/serializers.py:1473
|
||||
#: stock/serializers.py:1486
|
||||
msgid "At least two stock items must be provided"
|
||||
msgstr "必須提供至少兩件庫存物品"
|
||||
|
||||
#: stock/serializers.py:1540
|
||||
#: stock/serializers.py:1553
|
||||
msgid "No Change"
|
||||
msgstr "無更改"
|
||||
|
||||
#: stock/serializers.py:1569
|
||||
#: stock/serializers.py:1582
|
||||
msgid "StockItem primary key value"
|
||||
msgstr "庫存項主鍵值"
|
||||
|
||||
#: stock/serializers.py:1588
|
||||
#: stock/serializers.py:1601
|
||||
msgid "Stock item status code"
|
||||
msgstr "庫存項狀態代碼"
|
||||
|
||||
#: stock/serializers.py:1616
|
||||
#: stock/serializers.py:1629
|
||||
msgid "Stock transaction notes"
|
||||
msgstr "庫存交易記錄"
|
||||
|
||||
|
|
|
|||
|
|
@ -196,7 +196,9 @@ class PurchaseOrderMixin:
|
|||
"""Return the annotated queryset for this endpoint."""
|
||||
queryset = super().get_queryset(*args, **kwargs)
|
||||
|
||||
queryset = queryset.prefetch_related('supplier', 'lines')
|
||||
queryset = queryset.prefetch_related(
|
||||
'supplier', 'project_code', 'lines', 'responsible'
|
||||
)
|
||||
|
||||
queryset = serializers.PurchaseOrderSerializer.annotate_queryset(queryset)
|
||||
|
||||
|
|
@ -671,7 +673,9 @@ class SalesOrderMixin:
|
|||
"""Return annotated queryset for this endpoint."""
|
||||
queryset = super().get_queryset(*args, **kwargs)
|
||||
|
||||
queryset = queryset.prefetch_related('customer', 'lines')
|
||||
queryset = queryset.prefetch_related(
|
||||
'customer', 'responsible', 'project_code', 'lines'
|
||||
)
|
||||
|
||||
queryset = serializers.SalesOrderSerializer.annotate_queryset(queryset)
|
||||
|
||||
|
|
@ -812,6 +816,17 @@ class SalesOrderLineItemFilter(LineItemFilter):
|
|||
|
||||
return queryset.exclude(order__status__in=SalesOrderStatusGroups.COMPLETE)
|
||||
|
||||
order_outstanding = rest_filters.BooleanFilter(
|
||||
label=_('Order Outstanding'), method='filter_order_outstanding'
|
||||
)
|
||||
|
||||
def filter_order_outstanding(self, queryset, name, value):
|
||||
"""Filter by whether the order is 'outstanding' or not."""
|
||||
if str2bool(value):
|
||||
return queryset.filter(order__status__in=SalesOrderStatusGroups.OPEN)
|
||||
|
||||
return queryset.exclude(order__status__in=SalesOrderStatusGroups.OPEN)
|
||||
|
||||
|
||||
class SalesOrderLineItemMixin:
|
||||
"""Mixin class for SalesOrderLineItem endpoints."""
|
||||
|
|
@ -974,7 +989,7 @@ class SalesOrderAllocationFilter(rest_filters.FilterSet):
|
|||
"""Metaclass options."""
|
||||
|
||||
model = models.SalesOrderAllocation
|
||||
fields = ['shipment', 'item']
|
||||
fields = ['shipment', 'line', 'item']
|
||||
|
||||
order = rest_filters.ModelChoiceFilter(
|
||||
queryset=models.SalesOrder.objects.all(),
|
||||
|
|
@ -1030,6 +1045,16 @@ class SalesOrderAllocationFilter(rest_filters.FilterSet):
|
|||
line__order__status__in=SalesOrderStatusGroups.OPEN,
|
||||
)
|
||||
|
||||
assigned_to_shipment = rest_filters.BooleanFilter(
|
||||
label=_('Has Shipment'), method='filter_assigned_to_shipment'
|
||||
)
|
||||
|
||||
def filter_assigned_to_shipment(self, queryset, name, value):
|
||||
"""Filter by whether or not the allocation has been assigned to a shipment."""
|
||||
if str2bool(value):
|
||||
return queryset.exclude(shipment=None)
|
||||
return queryset.filter(shipment=None)
|
||||
|
||||
|
||||
class SalesOrderAllocationMixin:
|
||||
"""Mixin class for SalesOrderAllocation endpoints."""
|
||||
|
|
@ -1045,12 +1070,16 @@ class SalesOrderAllocationMixin:
|
|||
'item',
|
||||
'item__sales_order',
|
||||
'item__part',
|
||||
'line__part',
|
||||
'item__location',
|
||||
'line__order',
|
||||
'line__part',
|
||||
'line__order__responsible',
|
||||
'line__order__project_code',
|
||||
'line__order__project_code__responsible',
|
||||
'shipment',
|
||||
'shipment__order',
|
||||
)
|
||||
'shipment__checked_by',
|
||||
).select_related('line__part__pricing_data', 'item__part__pricing_data')
|
||||
|
||||
return queryset
|
||||
|
||||
|
|
@ -1061,7 +1090,15 @@ class SalesOrderAllocationList(SalesOrderAllocationMixin, ListAPI):
|
|||
filterset_class = SalesOrderAllocationFilter
|
||||
filter_backends = SEARCH_ORDER_FILTER_ALIAS
|
||||
|
||||
ordering_fields = ['quantity', 'part', 'serial', 'batch', 'location', 'order']
|
||||
ordering_fields = [
|
||||
'quantity',
|
||||
'part',
|
||||
'serial',
|
||||
'batch',
|
||||
'location',
|
||||
'order',
|
||||
'shipment_date',
|
||||
]
|
||||
|
||||
ordering_field_aliases = {
|
||||
'part': 'item__part__name',
|
||||
|
|
@ -1069,6 +1106,7 @@ class SalesOrderAllocationList(SalesOrderAllocationMixin, ListAPI):
|
|||
'batch': 'item__batch',
|
||||
'location': 'item__location__name',
|
||||
'order': 'line__order__reference',
|
||||
'shipment_date': 'shipment__shipment_date',
|
||||
}
|
||||
|
||||
search_fields = {'item__part__name', 'item__serial', 'item__batch'}
|
||||
|
|
@ -1244,7 +1282,9 @@ class ReturnOrderMixin:
|
|||
"""Return annotated queryset for this endpoint."""
|
||||
queryset = super().get_queryset(*args, **kwargs)
|
||||
|
||||
queryset = queryset.prefetch_related('customer')
|
||||
queryset = queryset.prefetch_related(
|
||||
'customer', 'lines', 'project_code', 'responsible'
|
||||
)
|
||||
|
||||
queryset = serializers.ReturnOrderSerializer.annotate_queryset(queryset)
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
# Generated by Django 4.2.16 on 2024-10-31 02:52
|
||||
|
||||
from django.db import migrations
|
||||
import django.db.models.deletion
|
||||
import mptt.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stock', '0113_stockitem_status_custom_key_and_more'),
|
||||
('order', '0101_purchaseorder_status_custom_key_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='purchaseorder',
|
||||
name='destination',
|
||||
field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='purchase_orders', to='stock.stocklocation', verbose_name='Destination', help_text='Destination for received items'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='purchaseorderlineitem',
|
||||
name='destination',
|
||||
field=mptt.fields.TreeForeignKey(blank=True, help_text='Destination for received items', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='po_lines', to='stock.stocklocation', verbose_name='Destination'),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 4.2.16 on 2024-11-06 04:46
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('order', '0102_purchaseorder_destination_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='salesorderallocation',
|
||||
name='shipment',
|
||||
field=models.ForeignKey(blank=True, help_text='Sales order shipment reference', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='allocations', to='order.salesordershipment', verbose_name='Shipment'),
|
||||
),
|
||||
]
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
"""Order model definitions."""
|
||||
|
||||
import logging
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from decimal import Decimal
|
||||
|
||||
|
|
@ -150,9 +149,6 @@ class TotalPriceMixin(models.Model):
|
|||
try:
|
||||
total += line.quantity * convert_money(line.price, target_currency)
|
||||
except MissingRate:
|
||||
# Record the error, try to press on
|
||||
_1, _2, _3 = sys.exc_info()
|
||||
|
||||
log_error('order.calculate_total_price')
|
||||
logger.exception("Missing exchange rate for '%s'", target_currency)
|
||||
|
||||
|
|
@ -540,6 +536,16 @@ class PurchaseOrder(TotalPriceMixin, Order):
|
|||
help_text=_('Date order was completed'),
|
||||
)
|
||||
|
||||
destination = TreeForeignKey(
|
||||
'stock.StockLocation',
|
||||
on_delete=models.SET_NULL,
|
||||
related_name='purchase_orders',
|
||||
blank=True,
|
||||
null=True,
|
||||
verbose_name=_('Destination'),
|
||||
help_text=_('Destination for received items'),
|
||||
)
|
||||
|
||||
@transaction.atomic
|
||||
def add_line_item(
|
||||
self,
|
||||
|
|
@ -1094,6 +1100,11 @@ class SalesOrder(TotalPriceMixin, Order):
|
|||
_('Order cannot be completed as there are incomplete shipments')
|
||||
)
|
||||
|
||||
if self.pending_allocation_count > 0:
|
||||
raise ValidationError(
|
||||
_('Order cannot be completed as there are incomplete allocations')
|
||||
)
|
||||
|
||||
if not allow_incomplete_lines and self.pending_line_count > 0:
|
||||
raise ValidationError(
|
||||
_('Order cannot be completed as there are incomplete line items')
|
||||
|
|
@ -1286,6 +1297,23 @@ class SalesOrder(TotalPriceMixin, Order):
|
|||
"""Return a queryset of the pending shipments for this order."""
|
||||
return self.shipments.filter(shipment_date=None)
|
||||
|
||||
def allocations(self):
|
||||
"""Return a queryset of all allocations for this order."""
|
||||
return SalesOrderAllocation.objects.filter(line__order=self)
|
||||
|
||||
def pending_allocations(self):
|
||||
"""Return a queryset of any pending allocations for this order.
|
||||
|
||||
Allocations are pending if:
|
||||
|
||||
a) They are not associated with a SalesOrderShipment
|
||||
b) The linked SalesOrderShipment has not been shipped
|
||||
"""
|
||||
Q1 = Q(shipment=None)
|
||||
Q2 = Q(shipment__shipment_date=None)
|
||||
|
||||
return self.allocations().filter(Q1 | Q2).distinct()
|
||||
|
||||
@property
|
||||
def shipment_count(self):
|
||||
"""Return the total number of shipments associated with this order."""
|
||||
|
|
@ -1301,6 +1329,11 @@ class SalesOrder(TotalPriceMixin, Order):
|
|||
"""Return the number of pending shipments associated with this order."""
|
||||
return self.pending_shipments().count()
|
||||
|
||||
@property
|
||||
def pending_allocation_count(self):
|
||||
"""Return the number of pending (non-shipped) allocations."""
|
||||
return self.pending_allocations().count()
|
||||
|
||||
|
||||
@receiver(post_save, sender=SalesOrder, dispatch_uid='sales_order_post_save')
|
||||
def after_save_sales_order(sender, instance: SalesOrder, created: bool, **kwargs):
|
||||
|
|
@ -1476,10 +1509,9 @@ class PurchaseOrderLineItem(OrderLineItem):
|
|||
|
||||
def __str__(self):
|
||||
"""Render a string representation of a PurchaseOrderLineItem instance."""
|
||||
return '{n} x {part} from {supplier} (for {po})'.format(
|
||||
return '{n} x {part} - {po}'.format(
|
||||
n=decimal2string(self.quantity),
|
||||
part=self.part.SKU if self.part else 'unknown part',
|
||||
supplier=self.order.supplier.name if self.order.supplier else _('deleted'),
|
||||
po=self.order,
|
||||
)
|
||||
|
||||
|
|
@ -1539,7 +1571,7 @@ class PurchaseOrderLineItem(OrderLineItem):
|
|||
related_name='po_lines',
|
||||
blank=True,
|
||||
null=True,
|
||||
help_text=_('Where does the Purchaser want this item to be stored?'),
|
||||
help_text=_('Destination for received items'),
|
||||
)
|
||||
|
||||
def get_destination(self):
|
||||
|
|
@ -2020,7 +2052,7 @@ class SalesOrderAllocation(models.Model):
|
|||
if self.item.serial and self.quantity != 1:
|
||||
errors['quantity'] = _('Quantity must be 1 for serialized stock item')
|
||||
|
||||
if self.line.order != self.shipment.order:
|
||||
if self.shipment and self.line.order != self.shipment.order:
|
||||
errors['line'] = _('Sales order does not match shipment')
|
||||
errors['shipment'] = _('Shipment does not match sales order')
|
||||
|
||||
|
|
@ -2037,6 +2069,8 @@ class SalesOrderAllocation(models.Model):
|
|||
shipment = models.ForeignKey(
|
||||
SalesOrderShipment,
|
||||
on_delete=models.CASCADE,
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name='allocations',
|
||||
verbose_name=_('Shipment'),
|
||||
help_text=_('Sales order shipment reference'),
|
||||
|
|
|
|||
|
|
@ -318,6 +318,7 @@ class PurchaseOrderSerializer(
|
|||
'supplier_name',
|
||||
'total_price',
|
||||
'order_currency',
|
||||
'destination',
|
||||
])
|
||||
|
||||
read_only_fields = ['issue_date', 'complete_date', 'creation_date']
|
||||
|
|
@ -844,6 +845,20 @@ class PurchaseOrderLineItemReceiveSerializer(serializers.Serializer):
|
|||
except DjangoValidationError as e:
|
||||
raise ValidationError({'serial_numbers': e.messages})
|
||||
|
||||
invalid_serials = []
|
||||
|
||||
# Check the serial numbers are valid
|
||||
for serial in data['serials']:
|
||||
try:
|
||||
base_part.validate_serial_number(serial, raise_error=True)
|
||||
except (ValidationError, DjangoValidationError):
|
||||
invalid_serials.append(serial)
|
||||
|
||||
if len(invalid_serials) > 0:
|
||||
msg = _('The following serial numbers already exist or are invalid')
|
||||
msg += ': ' + ', '.join(invalid_serials)
|
||||
raise ValidationError({'serial_numbers': msg})
|
||||
|
||||
return data
|
||||
|
||||
|
||||
|
|
@ -860,6 +875,7 @@ class PurchaseOrderReceiveSerializer(serializers.Serializer):
|
|||
location = serializers.PrimaryKeyRelatedField(
|
||||
queryset=stock.models.StockLocation.objects.all(),
|
||||
many=False,
|
||||
required=False,
|
||||
allow_null=True,
|
||||
label=_('Location'),
|
||||
help_text=_('Select destination location for received items'),
|
||||
|
|
@ -873,9 +889,10 @@ class PurchaseOrderReceiveSerializer(serializers.Serializer):
|
|||
"""
|
||||
super().validate(data)
|
||||
|
||||
order = self.context['order']
|
||||
items = data.get('items', [])
|
||||
|
||||
location = data.get('location', None)
|
||||
location = data.get('location', order.destination)
|
||||
|
||||
if len(items) == 0:
|
||||
raise ValidationError(_('Line items must be provided'))
|
||||
|
|
@ -919,15 +936,17 @@ class PurchaseOrderReceiveSerializer(serializers.Serializer):
|
|||
order = self.context['order']
|
||||
|
||||
items = data['items']
|
||||
location = data.get('location', None)
|
||||
|
||||
# Location can be provided, or default to the order destination
|
||||
location = data.get('location', order.destination)
|
||||
|
||||
# Now we can actually receive the items into stock
|
||||
with transaction.atomic():
|
||||
for item in items:
|
||||
# Select location (in descending order of priority)
|
||||
loc = (
|
||||
location
|
||||
or item.get('location', None)
|
||||
item.get('location', None)
|
||||
or location
|
||||
or item['line_item'].get_destination()
|
||||
)
|
||||
|
||||
|
|
@ -971,6 +990,8 @@ class SalesOrderSerializer(
|
|||
'shipment_date',
|
||||
'total_price',
|
||||
'order_currency',
|
||||
'shipments_count',
|
||||
'completed_shipments_count',
|
||||
])
|
||||
|
||||
read_only_fields = ['status', 'creation_date', 'shipment_date']
|
||||
|
|
@ -1016,12 +1037,26 @@ class SalesOrderSerializer(
|
|||
)
|
||||
)
|
||||
|
||||
# Annotate shipment details
|
||||
queryset = queryset.annotate(
|
||||
shipments_count=SubqueryCount('shipments'),
|
||||
completed_shipments_count=SubqueryCount(
|
||||
'shipments', filter=Q(shipment_date__isnull=False)
|
||||
),
|
||||
)
|
||||
|
||||
return queryset
|
||||
|
||||
customer_detail = CompanyBriefSerializer(
|
||||
source='customer', many=False, read_only=True
|
||||
)
|
||||
|
||||
shipments_count = serializers.IntegerField(read_only=True, label=_('Shipments'))
|
||||
|
||||
completed_shipments_count = serializers.IntegerField(
|
||||
read_only=True, label=_('Completed Shipments')
|
||||
)
|
||||
|
||||
|
||||
class SalesOrderIssueSerializer(OrderAdjustSerializer):
|
||||
"""Serializer for issuing a SalesOrder."""
|
||||
|
|
@ -1227,6 +1262,15 @@ class SalesOrderShipmentSerializer(NotesFieldMixin, InvenTreeModelSerializer):
|
|||
'notes',
|
||||
]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
"""Initialization routine for the serializer."""
|
||||
order_detail = kwargs.pop('order_detail', True)
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
if not order_detail:
|
||||
self.fields.pop('order_detail', None)
|
||||
|
||||
@staticmethod
|
||||
def annotate_queryset(queryset):
|
||||
"""Annotate the queryset with extra information."""
|
||||
|
|
@ -1257,22 +1301,26 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer):
|
|||
|
||||
fields = [
|
||||
'pk',
|
||||
'line',
|
||||
'customer_detail',
|
||||
'serial',
|
||||
'quantity',
|
||||
'location',
|
||||
'location_detail',
|
||||
'item',
|
||||
'item_detail',
|
||||
'order',
|
||||
'order_detail',
|
||||
'part',
|
||||
'part_detail',
|
||||
'quantity',
|
||||
'shipment',
|
||||
# Annotated read-only fields
|
||||
'line',
|
||||
'part',
|
||||
'order',
|
||||
'serial',
|
||||
'location',
|
||||
# Extra detail fields
|
||||
'item_detail',
|
||||
'part_detail',
|
||||
'order_detail',
|
||||
'customer_detail',
|
||||
'location_detail',
|
||||
'shipment_detail',
|
||||
]
|
||||
|
||||
read_only_fields = ['line', '']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
"""Initialization routine for the serializer."""
|
||||
order_detail = kwargs.pop('order_detail', False)
|
||||
|
|
@ -1322,7 +1370,7 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer):
|
|||
)
|
||||
|
||||
shipment_detail = SalesOrderShipmentSerializer(
|
||||
source='shipment', many=False, read_only=True
|
||||
source='shipment', order_detail=False, many=False, read_only=True
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -1577,8 +1625,8 @@ class SalesOrderSerialAllocationSerializer(serializers.Serializer):
|
|||
shipment = serializers.PrimaryKeyRelatedField(
|
||||
queryset=order.models.SalesOrderShipment.objects.all(),
|
||||
many=False,
|
||||
allow_null=False,
|
||||
required=True,
|
||||
required=False,
|
||||
allow_null=True,
|
||||
label=_('Shipment'),
|
||||
)
|
||||
|
||||
|
|
@ -1590,10 +1638,10 @@ class SalesOrderSerialAllocationSerializer(serializers.Serializer):
|
|||
"""
|
||||
order = self.context['order']
|
||||
|
||||
if shipment.shipment_date is not None:
|
||||
if shipment and shipment.shipment_date is not None:
|
||||
raise ValidationError(_('Shipment has already been shipped'))
|
||||
|
||||
if shipment.order != order:
|
||||
if shipment and shipment.order != order:
|
||||
raise ValidationError(_('Shipment is not associated with this order'))
|
||||
|
||||
return shipment
|
||||
|
|
@ -1701,8 +1749,8 @@ class SalesOrderShipmentAllocationSerializer(serializers.Serializer):
|
|||
shipment = serializers.PrimaryKeyRelatedField(
|
||||
queryset=order.models.SalesOrderShipment.objects.all(),
|
||||
many=False,
|
||||
allow_null=False,
|
||||
required=True,
|
||||
required=False,
|
||||
allow_null=True,
|
||||
label=_('Shipment'),
|
||||
)
|
||||
|
||||
|
|
@ -1737,7 +1785,7 @@ class SalesOrderShipmentAllocationSerializer(serializers.Serializer):
|
|||
data = self.validated_data
|
||||
|
||||
items = data['items']
|
||||
shipment = data['shipment']
|
||||
shipment = data.get('shipment')
|
||||
|
||||
with transaction.atomic():
|
||||
for entry in items:
|
||||
|
|
|
|||
|
|
@ -882,7 +882,6 @@ class PurchaseOrderReceiveTest(OrderTest):
|
|||
data = self.post(self.url, {}, expected_code=400).data
|
||||
|
||||
self.assertIn('This field is required', str(data['items']))
|
||||
self.assertIn('This field is required', str(data['location']))
|
||||
|
||||
# No new stock items have been created
|
||||
self.assertEqual(self.n, StockItem.objects.count())
|
||||
|
|
@ -1060,9 +1059,9 @@ class PurchaseOrderReceiveTest(OrderTest):
|
|||
self.assertEqual(stock_1.count(), 1)
|
||||
self.assertEqual(stock_2.count(), 1)
|
||||
|
||||
# Same location for each received item, as overall 'location' field is provided
|
||||
# Check received locations
|
||||
self.assertEqual(stock_1.last().location.pk, 1)
|
||||
self.assertEqual(stock_2.last().location.pk, 1)
|
||||
self.assertEqual(stock_2.last().location.pk, 2)
|
||||
|
||||
# Barcodes should have been assigned to the stock items
|
||||
self.assertTrue(
|
||||
|
|
@ -1878,7 +1877,6 @@ class SalesOrderAllocateTest(OrderTest):
|
|||
response = self.post(self.url, {}, expected_code=400)
|
||||
|
||||
self.assertIn('This field is required', str(response.data['items']))
|
||||
self.assertIn('This field is required', str(response.data['shipment']))
|
||||
|
||||
# Test with a single line items
|
||||
line = self.order.lines.first()
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class OrderTest(TestCase):
|
|||
self.assertEqual(order.reference, f'PO-{pk:04d}')
|
||||
|
||||
line = PurchaseOrderLineItem.objects.get(pk=1)
|
||||
self.assertEqual(str(line), '100 x ACME0001 from ACME (for PO-0001 - ACME)')
|
||||
self.assertEqual(str(line), '100 x ACME0001 - PO-0001 - ACME')
|
||||
|
||||
def test_rebuild_reference(self):
|
||||
"""Test that the reference_int field is correctly updated when the model is saved."""
|
||||
|
|
|
|||
|
|
@ -1886,6 +1886,7 @@ class BomList(BomMixin, DataExportViewMixin, ListCreateDestroyAPIView):
|
|||
'inherited',
|
||||
'optional',
|
||||
'consumable',
|
||||
'reference',
|
||||
'validated',
|
||||
'pricing_min',
|
||||
'pricing_max',
|
||||
|
|
|
|||
|
|
@ -1708,6 +1708,10 @@ class BomItemSerializer(
|
|||
'sub_part__stock_items__sales_order_allocations',
|
||||
)
|
||||
|
||||
queryset = queryset.select_related(
|
||||
'part__pricing_data', 'sub_part__pricing_data'
|
||||
)
|
||||
|
||||
queryset = queryset.prefetch_related(
|
||||
'substitutes', 'substitutes__part__stock_items'
|
||||
)
|
||||
|
|
|
|||
|
|
@ -500,6 +500,15 @@ class BarcodePOReceive(BarcodeView):
|
|||
purchase_order = kwargs.get('purchase_order')
|
||||
location = kwargs.get('location')
|
||||
|
||||
# Extract location from PurchaseOrder, if available
|
||||
if not location and purchase_order:
|
||||
try:
|
||||
po = order.models.PurchaseOrder.objects.get(pk=purchase_order)
|
||||
if po.destination:
|
||||
location = po.destination.pk
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
plugins = registry.with_mixin('barcode')
|
||||
|
||||
# Look for a barcode plugin which knows how to deal with this barcode
|
||||
|
|
|
|||
|
|
@ -105,3 +105,32 @@ class SettingsMixin:
|
|||
return PluginSetting.check_all_settings(
|
||||
settings_definition=self.settings, plugin=self.plugin_config()
|
||||
)
|
||||
|
||||
def get_settings_dict(self) -> dict:
|
||||
"""Return a dictionary of all settings for this plugin.
|
||||
|
||||
- For each setting, return <key>: <value> pair.
|
||||
- If the setting is not defined, return the default value (if defined).
|
||||
|
||||
Returns:
|
||||
dict: Dictionary of all settings for this plugin
|
||||
"""
|
||||
from plugin.models import PluginSetting
|
||||
|
||||
keys = self.settings.keys()
|
||||
|
||||
settings = PluginSetting.objects.filter(
|
||||
plugin=self.plugin_config(), key__in=keys
|
||||
)
|
||||
|
||||
settings_dict = {}
|
||||
|
||||
for setting in settings:
|
||||
settings_dict[setting.key] = setting.value
|
||||
|
||||
# Add any missing settings
|
||||
for key in keys:
|
||||
if key not in settings_dict:
|
||||
settings_dict[key] = self.settings[key].get('default')
|
||||
|
||||
return settings_dict
|
||||
|
|
|
|||
|
|
@ -13,47 +13,6 @@ from InvenTree.exceptions import log_error
|
|||
from plugin import registry
|
||||
|
||||
|
||||
class PluginPanelList(APIView):
|
||||
"""API endpoint for listing all available plugin panels."""
|
||||
|
||||
permission_classes = [IsAuthenticated]
|
||||
serializer_class = UIPluginSerializers.PluginPanelSerializer
|
||||
|
||||
@extend_schema(
|
||||
responses={200: UIPluginSerializers.PluginPanelSerializer(many=True)}
|
||||
)
|
||||
def get(self, request):
|
||||
"""Show available plugin panels."""
|
||||
target_model = request.query_params.get('target_model', None)
|
||||
target_id = request.query_params.get('target_id', None)
|
||||
|
||||
panels = []
|
||||
|
||||
if get_global_setting('ENABLE_PLUGINS_INTERFACE'):
|
||||
# Extract all plugins from the registry which provide custom panels
|
||||
for _plugin in registry.with_mixin('ui', active=True):
|
||||
try:
|
||||
# Allow plugins to fill this data out
|
||||
plugin_panels = _plugin.get_ui_panels(
|
||||
target_model, target_id, request
|
||||
)
|
||||
|
||||
if plugin_panels and type(plugin_panels) is list:
|
||||
for panel in plugin_panels:
|
||||
panel['plugin'] = _plugin.slug
|
||||
|
||||
# TODO: Validate each panel before inserting
|
||||
panels.append(panel)
|
||||
except Exception:
|
||||
# Custom panels could not load
|
||||
# Log the error and continue
|
||||
log_error(f'{_plugin.slug}.get_ui_panels')
|
||||
|
||||
return Response(
|
||||
UIPluginSerializers.PluginPanelSerializer(panels, many=True).data
|
||||
)
|
||||
|
||||
|
||||
class PluginUIFeatureList(APIView):
|
||||
"""API endpoint for listing all available plugin ui features."""
|
||||
|
||||
|
|
@ -71,24 +30,49 @@ class PluginUIFeatureList(APIView):
|
|||
# Extract all plugins from the registry which provide custom ui features
|
||||
for _plugin in registry.with_mixin('ui', active=True):
|
||||
# Allow plugins to fill this data out
|
||||
plugin_features = _plugin.get_ui_features(
|
||||
feature, request.query_params, request
|
||||
)
|
||||
|
||||
try:
|
||||
plugin_features = _plugin.get_ui_features(
|
||||
feature, request.query_params, request
|
||||
)
|
||||
except Exception:
|
||||
# Custom features could not load for this plugin
|
||||
# Log the error and continue
|
||||
log_error(f'{_plugin.slug}.get_ui_features')
|
||||
continue
|
||||
|
||||
if plugin_features and type(plugin_features) is list:
|
||||
for _feature in plugin_features:
|
||||
features.append(_feature)
|
||||
try:
|
||||
# Ensure that the required fields are present
|
||||
_feature['plugin_name'] = _plugin.slug
|
||||
_feature['feature_type'] = str(feature)
|
||||
|
||||
return Response(
|
||||
UIPluginSerializers.PluginUIFeatureSerializer(features, many=True).data
|
||||
)
|
||||
# Ensure base fields are strings
|
||||
for field in ['key', 'title', 'description', 'source']:
|
||||
if field in _feature:
|
||||
_feature[field] = str(_feature[field])
|
||||
|
||||
# Add the feature to the list (serialize)
|
||||
features.append(
|
||||
UIPluginSerializers.PluginUIFeatureSerializer(
|
||||
_feature, many=False
|
||||
).data
|
||||
)
|
||||
|
||||
except Exception:
|
||||
# Custom features could not load
|
||||
# Log the error and continue
|
||||
log_error(f'{_plugin.slug}.get_ui_features')
|
||||
continue
|
||||
|
||||
return Response(features)
|
||||
|
||||
|
||||
ui_plugins_api_urls = [
|
||||
path('panels/', PluginPanelList.as_view(), name='api-plugin-panel-list'),
|
||||
path(
|
||||
'features/<str:feature>/',
|
||||
PluginUIFeatureList.as_view(),
|
||||
name='api-plugin-ui-feature-list',
|
||||
),
|
||||
)
|
||||
]
|
||||
|
|
|
|||
|
|
@ -11,43 +11,59 @@ from rest_framework.request import Request
|
|||
logger = logging.getLogger('inventree')
|
||||
|
||||
|
||||
class CustomPanel(TypedDict):
|
||||
"""Type definition for a custom panel.
|
||||
|
||||
Attributes:
|
||||
name: The name of the panel (required, used as a DOM identifier).
|
||||
label: The label of the panel (required, human readable).
|
||||
icon: The icon of the panel (optional, must be a valid icon identifier).
|
||||
content: The content of the panel (optional, raw HTML).
|
||||
context: Optional context data (dict / JSON) which will be passed to the front-end rendering function
|
||||
source: The source of the panel (optional, path to a JavaScript file).
|
||||
"""
|
||||
|
||||
name: str
|
||||
label: str
|
||||
icon: str
|
||||
content: str
|
||||
context: dict
|
||||
source: str
|
||||
|
||||
|
||||
FeatureType = Literal['template_editor', 'template_preview']
|
||||
# List of supported feature types
|
||||
FeatureType = Literal[
|
||||
'dashboard', # Custom dashboard items
|
||||
'panel', # Custom panels
|
||||
'template_editor', # Custom template editor
|
||||
'template_preview', # Custom template preview
|
||||
]
|
||||
|
||||
|
||||
class UIFeature(TypedDict):
|
||||
"""Base type definition for a ui feature.
|
||||
|
||||
Attributes:
|
||||
key: The key of the feature (required, must be a unique identifier)
|
||||
title: The title of the feature (required, human readable)
|
||||
description: The long-form description of the feature (optional, human readable)
|
||||
icon: The icon of the feature (optional, must be a valid icon identifier)
|
||||
feature_type: The feature type (required, see documentation for all available types)
|
||||
options: Feature options (required, see documentation for all available options for each type)
|
||||
source: The source of the feature (required, path to a JavaScript file).
|
||||
context: Additional context data to be passed to the rendering function (optional, dict)
|
||||
source: The source of the feature (required, path to a JavaScript file, with optional function name).
|
||||
"""
|
||||
|
||||
key: str
|
||||
title: str
|
||||
description: str
|
||||
icon: str
|
||||
feature_type: FeatureType
|
||||
options: dict
|
||||
context: dict
|
||||
source: str
|
||||
|
||||
|
||||
class CustomPanelOptions(TypedDict):
|
||||
"""Options type definition for a custom panel.
|
||||
|
||||
Attributes:
|
||||
icon: The icon of the panel (optional, must be a valid icon identifier).
|
||||
"""
|
||||
|
||||
|
||||
class CustomDashboardItemOptions(TypedDict):
|
||||
"""Options type definition for a custom dashboard item.
|
||||
|
||||
Attributes:
|
||||
width: The minimum width of the dashboard item (integer, defaults to 2)
|
||||
height: The minimum height of the dashboard item (integer, defaults to 2)
|
||||
"""
|
||||
|
||||
width: int
|
||||
height: int
|
||||
|
||||
|
||||
class UserInterfaceMixin:
|
||||
"""Plugin mixin class which handles injection of custom elements into the front-end interface.
|
||||
|
||||
|
|
@ -65,48 +81,85 @@ class UserInterfaceMixin:
|
|||
super().__init__()
|
||||
self.add_mixin('ui', True, __class__) # type: ignore
|
||||
|
||||
def get_ui_panels(
|
||||
self, instance_type: str, instance_id: int, request: Request, **kwargs
|
||||
) -> list[CustomPanel]:
|
||||
"""Return a list of custom panels to be injected into the UI.
|
||||
|
||||
Args:
|
||||
instance_type: The type of object being viewed (e.g. 'part')
|
||||
instance_id: The ID of the object being viewed (e.g. 123)
|
||||
request: HTTPRequest object (including user information)
|
||||
|
||||
Returns:
|
||||
list: A list of custom panels to be injected into the UI
|
||||
|
||||
- The returned list should contain a dict for each custom panel to be injected into the UI:
|
||||
- The following keys can be specified:
|
||||
{
|
||||
'name': 'panel_name', # The name of the panel (required, must be unique)
|
||||
'label': 'Panel Title', # The title of the panel (required, human readable)
|
||||
'icon': 'icon-name', # Icon name (optional, must be a valid icon identifier)
|
||||
'content': '<p>Panel content</p>', # HTML content to be rendered in the panel (optional)
|
||||
'context': {'key': 'value'}, # Context data to be passed to the front-end rendering function (optional)
|
||||
'source': 'static/plugin/panel.js', # Path to a JavaScript file to be loaded (optional)
|
||||
}
|
||||
|
||||
- Either 'source' or 'content' must be provided
|
||||
|
||||
"""
|
||||
# Default implementation returns an empty list
|
||||
return []
|
||||
|
||||
def get_ui_features(
|
||||
self, feature_type: FeatureType, context: dict, request: Request
|
||||
self, feature_type: FeatureType, context: dict, request: Request, **kwargs
|
||||
) -> list[UIFeature]:
|
||||
"""Return a list of custom features to be injected into the UI.
|
||||
|
||||
Arguments:
|
||||
feature_type: The type of feature being requested
|
||||
context: Additional context data provided by the UI
|
||||
context: Additional context data provided by the UI (query parameters)
|
||||
request: HTTPRequest object (including user information)
|
||||
|
||||
Returns:
|
||||
list: A list of custom UIFeature dicts to be injected into the UI
|
||||
|
||||
"""
|
||||
feature_map = {
|
||||
'dashboard': self.get_ui_dashboard_items,
|
||||
'panel': self.get_ui_panels,
|
||||
'template_editor': self.get_ui_template_editors,
|
||||
'template_preview': self.get_ui_template_previews,
|
||||
}
|
||||
|
||||
if feature_type in feature_map:
|
||||
return feature_map[feature_type](request, context, **kwargs)
|
||||
else:
|
||||
logger.warning(f'Invalid feature type: {feature_type}')
|
||||
return []
|
||||
|
||||
def get_ui_panels(
|
||||
self, request: Request, context: dict, **kwargs
|
||||
) -> list[UIFeature]:
|
||||
"""Return a list of custom panels to be injected into the UI.
|
||||
|
||||
Args:
|
||||
request: HTTPRequest object (including user information)
|
||||
|
||||
Returns:
|
||||
list: A list of custom panels to be injected into the UI
|
||||
"""
|
||||
# Default implementation returns an empty list
|
||||
return []
|
||||
|
||||
def get_ui_dashboard_items(
|
||||
self, request: Request, context: dict, **kwargs
|
||||
) -> list[UIFeature]:
|
||||
"""Return a list of custom dashboard items to be injected into the UI.
|
||||
|
||||
Args:
|
||||
request: HTTPRequest object (including user information)
|
||||
|
||||
Returns:
|
||||
list: A list of custom dashboard items to be injected into the UI
|
||||
"""
|
||||
# Default implementation returns an empty list
|
||||
return []
|
||||
|
||||
def get_ui_template_editors(
|
||||
self, request: Request, context: dict, **kwargs
|
||||
) -> list[UIFeature]:
|
||||
"""Return a list of custom template editors to be injected into the UI.
|
||||
|
||||
Args:
|
||||
request: HTTPRequest object (including user information)
|
||||
|
||||
Returns:
|
||||
list: A list of custom template editors to be injected into the UI
|
||||
"""
|
||||
# Default implementation returns an empty list
|
||||
return []
|
||||
|
||||
def get_ui_template_previews(
|
||||
self, request: Request, context: dict, **kwargs
|
||||
) -> list[UIFeature]:
|
||||
"""Return a list of custom template previews to be injected into the UI.
|
||||
|
||||
Args:
|
||||
request: HTTPRequest object (including user information)
|
||||
|
||||
Returns:
|
||||
list: A list of custom template previews to be injected into the UI
|
||||
"""
|
||||
# Default implementation returns an empty list
|
||||
return []
|
||||
|
|
|
|||
|
|
@ -5,68 +5,60 @@ from django.utils.translation import gettext_lazy as _
|
|||
from rest_framework import serializers
|
||||
|
||||
|
||||
class PluginPanelSerializer(serializers.Serializer):
|
||||
"""Serializer for a plugin panel."""
|
||||
|
||||
class Meta:
|
||||
"""Meta for serializer."""
|
||||
|
||||
fields = [
|
||||
'plugin',
|
||||
'name',
|
||||
'label',
|
||||
# Following fields are optional
|
||||
'icon',
|
||||
'content',
|
||||
'context',
|
||||
'source',
|
||||
]
|
||||
|
||||
# Required fields
|
||||
plugin = serializers.CharField(
|
||||
label=_('Plugin Key'), required=True, allow_blank=False
|
||||
)
|
||||
|
||||
name = serializers.CharField(
|
||||
label=_('Panel Name'), required=True, allow_blank=False
|
||||
)
|
||||
|
||||
label = serializers.CharField(
|
||||
label=_('Panel Title'), required=True, allow_blank=False
|
||||
)
|
||||
|
||||
# Optional fields
|
||||
icon = serializers.CharField(
|
||||
label=_('Panel Icon'), required=False, allow_blank=True
|
||||
)
|
||||
|
||||
content = serializers.CharField(
|
||||
label=_('Panel Content (HTML)'), required=False, allow_blank=True
|
||||
)
|
||||
|
||||
context = serializers.JSONField(
|
||||
label=_('Panel Context (JSON)'), required=False, allow_null=True, default=None
|
||||
)
|
||||
|
||||
source = serializers.CharField(
|
||||
label=_('Panel Source (javascript)'), required=False, allow_blank=True
|
||||
)
|
||||
|
||||
|
||||
class PluginUIFeatureSerializer(serializers.Serializer):
|
||||
"""Serializer for a plugin ui feature."""
|
||||
|
||||
class Meta:
|
||||
"""Meta for serializer."""
|
||||
|
||||
fields = ['feature_type', 'options', 'source']
|
||||
fields = [
|
||||
'plugin_name',
|
||||
'feature_type',
|
||||
'key',
|
||||
'title',
|
||||
'description',
|
||||
'icon',
|
||||
'options',
|
||||
'context',
|
||||
'source',
|
||||
]
|
||||
|
||||
# Required fields
|
||||
|
||||
# The name of the plugin that provides this feature
|
||||
plugin_name = serializers.CharField(
|
||||
label=_('Plugin Name'), required=True, allow_blank=False
|
||||
)
|
||||
|
||||
feature_type = serializers.CharField(
|
||||
label=_('Feature Type'), required=True, allow_blank=False
|
||||
)
|
||||
|
||||
options = serializers.DictField(label=_('Feature Options'), required=True)
|
||||
# Item key to be used in the UI - this should be a DOM identifier and is not user facing
|
||||
key = serializers.CharField(
|
||||
label=_('Feature Label'), required=True, allow_blank=False
|
||||
)
|
||||
|
||||
# Title to be used in the UI - this is user facing (and should be human readable)
|
||||
title = serializers.CharField(
|
||||
label=_('Feature Title'), required=False, allow_blank=True
|
||||
)
|
||||
|
||||
# Long-form description of the feature (optional)
|
||||
description = serializers.CharField(
|
||||
label=_('Feature Description'), required=False, allow_blank=True
|
||||
)
|
||||
|
||||
# Optional icon
|
||||
icon = serializers.CharField(
|
||||
label=_('Feature Icon'), required=False, allow_blank=True
|
||||
)
|
||||
|
||||
# Additional options, specific to the particular UI feature
|
||||
options = serializers.DictField(label=_('Feature Options'), default=None)
|
||||
|
||||
# Server side context, supplied to the client side for rendering
|
||||
context = serializers.DictField(label=_('Feature Context'), default=None)
|
||||
|
||||
source = serializers.CharField(
|
||||
label=_('Feature Source (javascript)'), required=True, allow_blank=False
|
||||
|
|
|
|||
|
|
@ -33,7 +33,60 @@ class UserInterfaceMixinTests(InvenTreeAPITestCase):
|
|||
plugins = registry.with_mixin('ui')
|
||||
self.assertGreater(len(plugins), 0)
|
||||
|
||||
def test_panels(self):
|
||||
def test_ui_dashboard_items(self):
|
||||
"""Test that the sample UI plugin provides custom dashboard items."""
|
||||
# Ensure the user has superuser status
|
||||
self.user.is_superuser = True
|
||||
self.user.save()
|
||||
|
||||
url = reverse('api-plugin-ui-feature-list', kwargs={'feature': 'dashboard'})
|
||||
|
||||
response = self.get(url)
|
||||
self.assertEqual(len(response.data), 4)
|
||||
|
||||
for item in response.data:
|
||||
self.assertEqual(item['plugin_name'], 'sampleui')
|
||||
|
||||
self.assertEqual(response.data[0]['key'], 'broken-dashboard-item')
|
||||
self.assertEqual(response.data[0]['title'], 'Broken Dashboard Item')
|
||||
self.assertEqual(response.data[0]['source'], '/this/does/not/exist.js')
|
||||
|
||||
self.assertEqual(response.data[1]['key'], 'sample-dashboard-item')
|
||||
self.assertEqual(response.data[1]['title'], 'Sample Dashboard Item')
|
||||
self.assertEqual(
|
||||
response.data[1]['source'],
|
||||
'/static/plugins/sampleui/sample_dashboard_item.js',
|
||||
)
|
||||
|
||||
self.assertEqual(response.data[2]['key'], 'dynamic-dashboard-item')
|
||||
self.assertEqual(response.data[2]['title'], 'Context Dashboard Item')
|
||||
self.assertEqual(
|
||||
response.data[2]['source'],
|
||||
'/static/plugins/sampleui/sample_dashboard_item.js:renderContextItem',
|
||||
)
|
||||
|
||||
self.assertEqual(response.data[3]['key'], 'admin-dashboard-item')
|
||||
self.assertEqual(response.data[3]['title'], 'Admin Dashboard Item')
|
||||
self.assertEqual(
|
||||
response.data[3]['source'],
|
||||
'/static/plugins/sampleui/admin_dashboard_item.js',
|
||||
)
|
||||
|
||||
# Additional options and context data should be passed through to the client
|
||||
self.assertDictEqual(response.data[3]['options'], {'width': 4, 'height': 2})
|
||||
|
||||
self.assertDictEqual(
|
||||
response.data[3]['context'], {'secret-key': 'this-is-a-secret'}
|
||||
)
|
||||
|
||||
# Remove superuser status - the 'admin-dashboard-item' should disappear
|
||||
self.user.is_superuser = False
|
||||
self.user.save()
|
||||
|
||||
response = self.get(url)
|
||||
self.assertEqual(len(response.data), 3)
|
||||
|
||||
def test_ui_panels(self):
|
||||
"""Test that the sample UI plugin provides custom panels."""
|
||||
from part.models import Part
|
||||
|
||||
|
|
@ -45,7 +98,7 @@ class UserInterfaceMixinTests(InvenTreeAPITestCase):
|
|||
_part.active = True
|
||||
_part.save()
|
||||
|
||||
url = reverse('api-plugin-panel-list')
|
||||
url = reverse('api-plugin-ui-feature-list', kwargs={'feature': 'panel'})
|
||||
|
||||
query_data = {'target_model': 'part', 'target_id': _part.pk}
|
||||
|
||||
|
|
@ -59,7 +112,7 @@ class UserInterfaceMixinTests(InvenTreeAPITestCase):
|
|||
response = self.get(url, data=query_data)
|
||||
|
||||
# There should be 4 active panels for the part by default
|
||||
self.assertEqual(4, len(response.data))
|
||||
self.assertEqual(3, len(response.data))
|
||||
|
||||
_part.active = False
|
||||
_part.save()
|
||||
|
|
@ -74,23 +127,27 @@ class UserInterfaceMixinTests(InvenTreeAPITestCase):
|
|||
|
||||
response = self.get(url, data=query_data)
|
||||
|
||||
# There should still be 3 panels
|
||||
self.assertEqual(3, len(response.data))
|
||||
# There should still be 2 panels
|
||||
self.assertEqual(2, len(response.data))
|
||||
|
||||
# Check for the correct panel names
|
||||
self.assertEqual(response.data[0]['name'], 'sample_panel')
|
||||
self.assertIn('content', response.data[0])
|
||||
self.assertNotIn('source', response.data[0])
|
||||
for panel in response.data:
|
||||
self.assertEqual(panel['plugin_name'], 'sampleui')
|
||||
self.assertEqual(panel['feature_type'], 'panel')
|
||||
|
||||
self.assertEqual(response.data[1]['name'], 'broken_panel')
|
||||
self.assertEqual(response.data[1]['source'], '/this/does/not/exist.js')
|
||||
self.assertNotIn('content', response.data[1])
|
||||
self.assertEqual(response.data[0]['key'], 'broken-panel')
|
||||
self.assertEqual(response.data[0]['title'], 'Broken Panel')
|
||||
self.assertEqual(response.data[0]['source'], '/this/does/not/exist.js')
|
||||
|
||||
self.assertEqual(response.data[2]['name'], 'dynamic_panel')
|
||||
self.assertEqual(response.data[1]['key'], 'dynamic-panel')
|
||||
self.assertEqual(response.data[1]['title'], 'Dynamic Panel')
|
||||
self.assertEqual(
|
||||
response.data[2]['source'], '/static/plugins/sampleui/sample_panel.js'
|
||||
response.data[1]['source'], '/static/plugins/sampleui/sample_panel.js'
|
||||
)
|
||||
self.assertNotIn('content', response.data[2])
|
||||
|
||||
ctx = response.data[1]['context']
|
||||
|
||||
for k in ['version', 'plugin_version', 'random', 'time']:
|
||||
self.assertIn(k, ctx)
|
||||
|
||||
# Next, disable the global setting for UI integration
|
||||
InvenTreeSetting.set_setting(
|
||||
|
|
@ -105,8 +162,8 @@ class UserInterfaceMixinTests(InvenTreeAPITestCase):
|
|||
# Set the setting back to True for subsequent tests
|
||||
InvenTreeSetting.set_setting('ENABLE_PLUGINS_INTERFACE', True, change_user=None)
|
||||
|
||||
def test_ui_features(self):
|
||||
"""Test that the sample UI plugin provides custom features."""
|
||||
def test_ui_template_editors(self):
|
||||
"""Test that the sample UI plugin provides template editor features."""
|
||||
template_editor_url = reverse(
|
||||
'api-plugin-ui-feature-list', kwargs={'feature': 'template_editor'}
|
||||
)
|
||||
|
|
@ -120,30 +177,39 @@ class UserInterfaceMixinTests(InvenTreeAPITestCase):
|
|||
'template_model': 'part',
|
||||
}
|
||||
|
||||
# Request custom template editor information
|
||||
# Request custom label template editor information
|
||||
response = self.get(template_editor_url, data=query_data_label)
|
||||
self.assertEqual(1, len(response.data))
|
||||
|
||||
data = response.data[0]
|
||||
|
||||
for k, v in {
|
||||
'plugin_name': 'sampleui',
|
||||
'key': 'sample-template-editor',
|
||||
'title': 'Sample Template Editor',
|
||||
'source': '/static/plugins/sampleui/sample_template.js:getTemplateEditor',
|
||||
}.items():
|
||||
self.assertEqual(data[k], v)
|
||||
|
||||
# Request custom report template editor information
|
||||
response = self.get(template_editor_url, data=query_data_report)
|
||||
self.assertEqual(0, len(response.data))
|
||||
|
||||
# Request custom report template preview information
|
||||
response = self.get(template_preview_url, data=query_data_report)
|
||||
self.assertEqual(1, len(response.data))
|
||||
|
||||
# Check for the correct feature details here
|
||||
self.assertEqual(response.data[0]['feature_type'], 'template_preview')
|
||||
self.assertDictEqual(
|
||||
response.data[0]['options'],
|
||||
{
|
||||
'key': 'sample-template-preview',
|
||||
'title': 'Sample Template Preview',
|
||||
'icon': 'category',
|
||||
},
|
||||
)
|
||||
self.assertEqual(
|
||||
response.data[0]['source'],
|
||||
'/static/plugin/sample_template.js:getTemplatePreview',
|
||||
)
|
||||
data = response.data[0]
|
||||
|
||||
for k, v in {
|
||||
'plugin_name': 'sampleui',
|
||||
'feature_type': 'template_preview',
|
||||
'key': 'sample-template-preview',
|
||||
'title': 'Sample Template Preview',
|
||||
'context': None,
|
||||
'source': '/static/plugins/sampleui/sample_preview.js:getTemplatePreview',
|
||||
}.items():
|
||||
self.assertEqual(data[k], v)
|
||||
|
||||
# Next, disable the global setting for UI integration
|
||||
InvenTreeSetting.set_setting(
|
||||
|
|
|
|||
|
|
@ -572,16 +572,13 @@ class PluginsRegistry:
|
|||
try:
|
||||
self._init_plugin(plg, plugin_configs)
|
||||
break
|
||||
except IntegrationPluginError:
|
||||
# Error has been handled downstream
|
||||
pass
|
||||
except Exception as error:
|
||||
# Handle the error, log it and try again
|
||||
handle_error(
|
||||
error, log_name='init', do_raise=settings.PLUGIN_TESTING
|
||||
)
|
||||
|
||||
if attempts == 0:
|
||||
handle_error(
|
||||
error, log_name='init', do_raise=settings.PLUGIN_TESTING
|
||||
)
|
||||
|
||||
logger.exception(
|
||||
'[PLUGIN] Encountered an error with %s:\n%s',
|
||||
error.path,
|
||||
|
|
|
|||
|
|
@ -1,30 +0,0 @@
|
|||
{% load i18n %}
|
||||
|
||||
<h4>Custom Plugin Panel</h4>
|
||||
|
||||
<p>
|
||||
This content has been rendered by a custom plugin, and will be displayed for any "part" instance
|
||||
(as long as the plugin is enabled).
|
||||
This content has been rendered on the server, using the django templating system.
|
||||
</p>
|
||||
|
||||
<h5>Part Details</h5>
|
||||
|
||||
<table class='table table-striped table-condensed'>
|
||||
<tr>
|
||||
<th>Part Name</th>
|
||||
<td>{{ part.name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Part Description</th>
|
||||
<td>{{ part.description }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Part Category</th>
|
||||
<td>{{ part.category.pathstring }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Part IPN</th>
|
||||
<td>{% if part.IPN %}{{ part.IPN }}{% else %}<i>No IPN specified</i>{% endif %}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -8,7 +8,6 @@ from django.utils.translation import gettext_lazy as _
|
|||
from InvenTree.version import INVENTREE_SW_VERSION
|
||||
from part.models import Part
|
||||
from plugin import InvenTreePlugin
|
||||
from plugin.helpers import render_template, render_text
|
||||
from plugin.mixins import SettingsMixin, UserInterfaceMixin
|
||||
|
||||
|
||||
|
|
@ -19,7 +18,7 @@ class SampleUserInterfacePlugin(SettingsMixin, UserInterfaceMixin, InvenTreePlug
|
|||
SLUG = 'sampleui'
|
||||
TITLE = 'Sample User Interface Plugin'
|
||||
DESCRIPTION = 'A sample plugin which demonstrates user interface integrations'
|
||||
VERSION = '1.1'
|
||||
VERSION = '2.0'
|
||||
|
||||
ADMIN_SOURCE = 'ui_settings.js'
|
||||
|
||||
|
|
@ -50,39 +49,22 @@ class SampleUserInterfacePlugin(SettingsMixin, UserInterfaceMixin, InvenTreePlug
|
|||
},
|
||||
}
|
||||
|
||||
def get_ui_panels(self, instance_type: str, instance_id: int, request, **kwargs):
|
||||
def get_ui_panels(self, request, context, **kwargs):
|
||||
"""Return a list of custom panels to be injected into the UI."""
|
||||
panels = []
|
||||
context = context or {}
|
||||
|
||||
# First, add a custom panel which will appear on every type of page
|
||||
# This panel will contain a simple message
|
||||
|
||||
content = render_text(
|
||||
"""
|
||||
This is a <i>sample panel</i> which appears on every page.
|
||||
It renders a simple string of <b>HTML</b> content.
|
||||
|
||||
<br>
|
||||
<h5>Instance Details:</h5>
|
||||
<ul>
|
||||
<li>Instance Type: {{ instance_type }}</li>
|
||||
<li>Instance ID: {{ instance_id }}</li>
|
||||
</ul>
|
||||
""",
|
||||
context={'instance_type': instance_type, 'instance_id': instance_id},
|
||||
)
|
||||
|
||||
panels.append({
|
||||
'name': 'sample_panel',
|
||||
'label': 'Sample Panel',
|
||||
'content': content,
|
||||
})
|
||||
target_model = context.get('target_model', None)
|
||||
target_id = context.get('target_id', None)
|
||||
|
||||
# A broken panel which tries to load a non-existent JS file
|
||||
if instance_id is not None and self.get_setting('ENABLE_BROKEN_PANElS'):
|
||||
if target_id is not None and self.get_setting('ENABLE_BROKEN_PANElS'):
|
||||
panels.append({
|
||||
'name': 'broken_panel',
|
||||
'label': 'Broken Panel',
|
||||
'key': 'broken-panel',
|
||||
'title': 'Broken Panel',
|
||||
'source': '/this/does/not/exist.js',
|
||||
})
|
||||
|
||||
|
|
@ -90,85 +72,131 @@ class SampleUserInterfacePlugin(SettingsMixin, UserInterfaceMixin, InvenTreePlug
|
|||
# Note that we additionally provide some "context" data to the front-end render function
|
||||
if self.get_setting('ENABLE_DYNAMIC_PANEL'):
|
||||
panels.append({
|
||||
'name': 'dynamic_panel',
|
||||
'label': 'Dynamic Part Panel',
|
||||
'key': 'dynamic-panel',
|
||||
'title': 'Dynamic Panel',
|
||||
'source': self.plugin_static_file('sample_panel.js'),
|
||||
'icon': 'part',
|
||||
'context': {
|
||||
'version': INVENTREE_SW_VERSION,
|
||||
'plugin_version': self.VERSION,
|
||||
'random': random.randint(1, 100),
|
||||
'time': time.time(),
|
||||
},
|
||||
'icon': 'part',
|
||||
})
|
||||
|
||||
# Next, add a custom panel which will appear on the 'part' page
|
||||
# Note that this content is rendered from a template file,
|
||||
# using the django templating system
|
||||
if self.get_setting('ENABLE_PART_PANELS') and instance_type == 'part':
|
||||
if self.get_setting('ENABLE_PART_PANELS') and target_model == 'part':
|
||||
try:
|
||||
part = Part.objects.get(pk=instance_id)
|
||||
part = Part.objects.get(pk=target_id)
|
||||
except (Part.DoesNotExist, ValueError):
|
||||
part = None
|
||||
|
||||
# Note: This panel will *only* be available if the part is active
|
||||
if part and part.active:
|
||||
content = render_template(
|
||||
self, 'uidemo/custom_part_panel.html', context={'part': part}
|
||||
)
|
||||
|
||||
panels.append({
|
||||
'name': 'part_panel',
|
||||
'label': 'Part Panel',
|
||||
'content': content,
|
||||
})
|
||||
panels.append({
|
||||
'key': 'part-panel',
|
||||
'title': _('Part Panel'),
|
||||
'source': self.plugin_static_file('sample_panel.js:renderPartPanel'),
|
||||
'icon': 'part',
|
||||
'context': {'part_name': part.name if part else ''},
|
||||
})
|
||||
|
||||
# Next, add a custom panel which will appear on the 'purchaseorder' page
|
||||
if (
|
||||
self.get_setting('ENABLE_PURCHASE_ORDER_PANELS')
|
||||
and instance_type == 'purchaseorder'
|
||||
if target_model == 'purchaseorder' and self.get_setting(
|
||||
'ENABLE_PURCHASE_ORDER_PANELS'
|
||||
):
|
||||
panels.append({
|
||||
'name': 'purchase_order_panel',
|
||||
'label': 'Purchase Order Panel',
|
||||
'content': 'This is a custom panel which appears on the <b>Purchase Order</b> view page.',
|
||||
'key': 'purchase_order_panel',
|
||||
'title': 'Purchase Order Panel',
|
||||
'source': self.plugin_static_file('sample_panel.js:renderPoPanel'),
|
||||
})
|
||||
|
||||
# Admin panel - only visible to admin users
|
||||
if request.user.is_superuser:
|
||||
panels.append({
|
||||
'key': 'admin-panel',
|
||||
'title': 'Admin Panel',
|
||||
'source': self.plugin_static_file(
|
||||
'sample_panel.js:renderAdminOnlyPanel'
|
||||
),
|
||||
})
|
||||
|
||||
return panels
|
||||
|
||||
def get_ui_features(self, feature_type, context, request):
|
||||
"""Return a list of custom features to be injected into the UI."""
|
||||
if (
|
||||
feature_type == 'template_editor'
|
||||
and context.get('template_type') == 'labeltemplate'
|
||||
):
|
||||
return [
|
||||
{
|
||||
'feature_type': 'template_editor',
|
||||
'options': {
|
||||
'key': 'sample-template-editor',
|
||||
'title': 'Sample Template Editor',
|
||||
'icon': 'keywords',
|
||||
},
|
||||
'source': '/static/plugin/sample_template.js:getTemplateEditor',
|
||||
}
|
||||
]
|
||||
def get_ui_dashboard_items(self, request, context, **kwargs):
|
||||
"""Return a list of custom dashboard items."""
|
||||
items = [
|
||||
{
|
||||
'key': 'broken-dashboard-item',
|
||||
'title': _('Broken Dashboard Item'),
|
||||
'description': _(
|
||||
'This is a broken dashboard item - it will not render!'
|
||||
),
|
||||
'source': '/this/does/not/exist.js',
|
||||
},
|
||||
{
|
||||
'key': 'sample-dashboard-item',
|
||||
'title': _('Sample Dashboard Item'),
|
||||
'description': _(
|
||||
'This is a sample dashboard item. It renders a simple string of HTML content.'
|
||||
),
|
||||
'source': self.plugin_static_file('sample_dashboard_item.js'),
|
||||
},
|
||||
{
|
||||
'key': 'dynamic-dashboard-item',
|
||||
'title': _('Context Dashboard Item'),
|
||||
'description': 'A dashboard item which passes context data from the server',
|
||||
'source': self.plugin_static_file(
|
||||
'sample_dashboard_item.js:renderContextItem'
|
||||
),
|
||||
'context': {'foo': 'bar', 'hello': 'world'},
|
||||
'options': {'width': 3, 'height': 2},
|
||||
},
|
||||
]
|
||||
|
||||
if feature_type == 'template_preview':
|
||||
# Admin item - only visible to users with superuser access
|
||||
if request.user.is_superuser:
|
||||
items.append({
|
||||
'key': 'admin-dashboard-item',
|
||||
'title': _('Admin Dashboard Item'),
|
||||
'description': _('This is an admin-only dashboard item.'),
|
||||
'source': self.plugin_static_file('admin_dashboard_item.js'),
|
||||
'options': {'width': 4, 'height': 2},
|
||||
'context': {'secret-key': 'this-is-a-secret'},
|
||||
})
|
||||
|
||||
return items
|
||||
|
||||
def get_ui_template_editors(self, request, context, **kwargs):
|
||||
"""Return a list of custom template editors."""
|
||||
# If the context is a label template, return a custom template editor
|
||||
if context.get('template_type') == 'labeltemplate':
|
||||
return [
|
||||
{
|
||||
'feature_type': 'template_preview',
|
||||
'options': {
|
||||
'key': 'sample-template-preview',
|
||||
'title': 'Sample Template Preview',
|
||||
'icon': 'category',
|
||||
},
|
||||
'source': '/static/plugin/sample_template.js:getTemplatePreview',
|
||||
'key': 'sample-template-editor',
|
||||
'title': 'Sample Template Editor',
|
||||
'icon': 'keywords',
|
||||
'source': self.plugin_static_file(
|
||||
'sample_template.js:getTemplateEditor'
|
||||
),
|
||||
}
|
||||
]
|
||||
|
||||
return []
|
||||
|
||||
def get_ui_template_previews(self, request, context, **kwargs):
|
||||
"""Return a list of custom template previews."""
|
||||
return [
|
||||
{
|
||||
'key': 'sample-template-preview',
|
||||
'title': 'Sample Template Preview',
|
||||
'icon': 'category',
|
||||
'source': self.plugin_static_file(
|
||||
'sample_preview.js:getTemplatePreview'
|
||||
),
|
||||
}
|
||||
]
|
||||
|
||||
def get_admin_context(self) -> dict:
|
||||
"""Return custom context data which can be rendered in the admin panel."""
|
||||
return {'apple': 'banana', 'foo': 'bar', 'hello': 'world'}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
/**
|
||||
* A sample dashboard item plugin for InvenTree.
|
||||
*
|
||||
* - This is a *very basic* example.
|
||||
* - In practice, you would want to use React / Mantine / etc to render more complex UI elements.
|
||||
*/
|
||||
|
||||
export function renderDashboardItem(target, data) {
|
||||
|
||||
if (!target) {
|
||||
console.error("No target provided to renderDashboardItem");
|
||||
return;
|
||||
}
|
||||
|
||||
target.innerHTML = `
|
||||
<h4>Admin Item</h4>
|
||||
<hr>
|
||||
<p>Hello there, admin user!</p>
|
||||
`;
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
/**
|
||||
* A sample dashboard item plugin for InvenTree.
|
||||
*
|
||||
* - This is a *very basic* example.
|
||||
* - In practice, you would want to use React / Mantine / etc to render more complex UI elements.
|
||||
*/
|
||||
|
||||
export function renderDashboardItem(target, data) {
|
||||
|
||||
if (!target) {
|
||||
console.error("No target provided to renderDashboardItem");
|
||||
return;
|
||||
}
|
||||
|
||||
target.innerHTML = `
|
||||
<h4>Sample Dashboard Item</h4>
|
||||
<hr>
|
||||
<p>Hello world! This is a sample dashboard item loaded by the plugin system.</p>
|
||||
`;
|
||||
}
|
||||
|
||||
|
||||
export function renderContextItem(target, data) {
|
||||
|
||||
if (!target) {
|
||||
console.error("No target provided to renderContextItem");
|
||||
return;
|
||||
}
|
||||
|
||||
let context = data?.context ?? {};
|
||||
|
||||
let ctxString = '';
|
||||
|
||||
for (let key in context) {
|
||||
ctxString += `<tr><td>${key}</td><td>${context[key]}</td></tr>`;
|
||||
}
|
||||
|
||||
target.innerHTML = `
|
||||
<h4>Sample Context Item</h4>
|
||||
<hr>
|
||||
<p>Hello world! This is a sample context item loaded by the plugin system.</p>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr><th>Item</th><th>Value</th></tr>
|
||||
${ctxString}
|
||||
</tbody>
|
||||
</table>
|
||||
`;
|
||||
}
|
||||
|
|
@ -43,6 +43,55 @@ export function renderPanel(target, data) {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Render a panel on a Part detail page
|
||||
*/
|
||||
export function renderPartPanel(target, data) {
|
||||
|
||||
if (!target) {
|
||||
console.error("No target provided to renderPartPanel");
|
||||
return;
|
||||
}
|
||||
|
||||
target.innerHTML = `
|
||||
<h4>Part Detail Panel</h4>
|
||||
<hr>
|
||||
<p>This is a custom panel for a Part detail page</p>
|
||||
`;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Render a panel on a PurchaseOrder detail page
|
||||
*/
|
||||
export function renderPoPanel(target, data) {
|
||||
if (!target) {
|
||||
console.error("No target provided to renderPoPanel");
|
||||
return;
|
||||
}
|
||||
|
||||
target.innerHTML = `
|
||||
<h4>Order Reference: ${data.instance?.reference}</h4>
|
||||
<hr>
|
||||
<p>This is a custom panel for a PurchaseOrder detail page</p>
|
||||
`;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Render a panel that is only visible to admin users
|
||||
*/
|
||||
export function renderAdminOnlyPanel(target, data) {
|
||||
if (!target) {
|
||||
console.error("No target provided to renderAdminOnlyPanel");
|
||||
return;
|
||||
}
|
||||
|
||||
target.innerHTML = `Hello Admin user! This panel is only visible to admin users.`;
|
||||
}
|
||||
|
||||
|
||||
// Dynamically hide the panel based on the provided context
|
||||
export function isPanelHidden(context) {
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
export function getTemplatePreview({ featureContext, pluginContext }) {
|
||||
const { ref } = featureContext;
|
||||
console.log("Template preview feature was called with", featureContext, pluginContext);
|
||||
|
||||
featureContext.registerHandlers({
|
||||
updatePreview: (...args) => {
|
||||
console.log("updatePreview", args);
|
||||
}
|
||||
});
|
||||
|
||||
ref.innerHTML = "<h1>Hello world</h1>";
|
||||
}
|
||||
|
|
@ -18,16 +18,3 @@ export function getTemplateEditor({ featureContext, pluginContext }) {
|
|||
ref.innerHTML = "";
|
||||
ref.appendChild(t);
|
||||
}
|
||||
|
||||
export function getTemplatePreview({ featureContext, pluginContext }) {
|
||||
const { ref } = featureContext;
|
||||
console.log("Template preview feature was called with", featureContext, pluginContext);
|
||||
|
||||
featureContext.registerHandlers({
|
||||
updatePreview: (...args) => {
|
||||
console.log("updatePreview", args);
|
||||
}
|
||||
});
|
||||
|
||||
ref.innerHTML = "<h1>Hello world</h1>";
|
||||
}
|
||||
|
|
@ -35,7 +35,7 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase):
|
|||
'packagename': 'invalid_package_name-asdads-asfd-asdf-asdf-asdf',
|
||||
},
|
||||
expected_code=400,
|
||||
max_query_time=30,
|
||||
max_query_time=60,
|
||||
)
|
||||
|
||||
# valid - Pypi
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue