mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-02-20 16:52:41 +01:00
Compare commits
36 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6be786d5d | ||
|
|
578a030175 | ||
|
|
f858e68f12 | ||
|
|
bdd88700d4 | ||
|
|
87cf75f67d | ||
|
|
c3cc7cb0d6 | ||
|
|
e1600cdec9 | ||
|
|
431cf23600 | ||
|
|
08ce1795fc | ||
|
|
e369ce6db9 | ||
|
|
af4ea17faa | ||
|
|
bb13ebc0ec | ||
|
|
3b42d7a2c8 | ||
|
|
e98d988c45 | ||
|
|
cc70e77dee | ||
|
|
7a86109d66 | ||
|
|
5238be1460 | ||
|
|
6edc8056ec | ||
|
|
b19cc13897 | ||
|
|
50f478f7ef | ||
|
|
80482f7294 | ||
|
|
dc864fad04 | ||
|
|
6d495b38b4 | ||
|
|
1c838d1e42 | ||
|
|
652c7abbce | ||
|
|
d925fd8913 | ||
|
|
9a8e34cbe3 | ||
|
|
34ae83cc8c | ||
|
|
e26e6da15d | ||
|
|
d45cd23c0f | ||
|
|
b60a1070e9 | ||
|
|
7f04827a0b | ||
|
|
da11c9b793 | ||
|
|
d9ef9cd7b7 | ||
|
|
8bcebf57c4 | ||
|
|
cf791cff1d |
@@ -40,7 +40,7 @@ if [ -d /var/www/html/var/db ]; then
|
||||
fi
|
||||
|
||||
# Start PHP-FPM (the PHP_VERSION is replaced by the configured version in the Dockerfile)
|
||||
service phpPHP_VERSION-fpm start
|
||||
php-fpmPHP_VERSION -F &
|
||||
|
||||
|
||||
# Run migrations if automigration is enabled via env variable DB_AUTOMIGRATE
|
||||
@@ -90,4 +90,4 @@ if [ "${1#-}" != "$1" ]; then
|
||||
fi
|
||||
|
||||
# Pass to the original entrypoint
|
||||
exec "$@"
|
||||
exec "$@"
|
||||
|
||||
@@ -24,34 +24,6 @@
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||
|
||||
# Pass the configuration from the docker env to the PHP environment (here you should list all .env options)
|
||||
PassEnv APP_ENV APP_DEBUG APP_SECRET REDIRECT_TO_HTTPS DISABLE_YEAR2038_BUG_CHECK
|
||||
PassEnv TRUSTED_PROXIES TRUSTED_HOSTS LOCK_DSN
|
||||
PassEnv DATABASE_URL ENFORCE_CHANGE_COMMENTS_FOR DATABASE_MYSQL_USE_SSL_CA DATABASE_MYSQL_SSL_VERIFY_CERT
|
||||
PassEnv DEFAULT_LANG DEFAULT_TIMEZONE BASE_CURRENCY INSTANCE_NAME ALLOW_ATTACHMENT_DOWNLOADS USE_GRAVATAR MAX_ATTACHMENT_FILE_SIZE DEFAULT_URI CHECK_FOR_UPDATES ATTACHMENT_DOWNLOAD_BY_DEFAULT
|
||||
PassEnv MAILER_DSN ALLOW_EMAIL_PW_RESET EMAIL_SENDER_EMAIL EMAIL_SENDER_NAME
|
||||
PassEnv HISTORY_SAVE_CHANGED_FIELDS HISTORY_SAVE_CHANGED_DATA HISTORY_SAVE_REMOVED_DATA HISTORY_SAVE_NEW_DATA
|
||||
PassEnv ERROR_PAGE_ADMIN_EMAIL ERROR_PAGE_SHOW_HELP
|
||||
PassEnv DEMO_MODE NO_URL_REWRITE_AVAILABLE FIXER_API_KEY BANNER
|
||||
# In old version the SAML sp private key env, was wrongly named SAMLP_SP_PRIVATE_KEY, keep it for backward compatibility
|
||||
PassEnv SAML_ENABLED SAML_BEHIND_PROXY SAML_ROLE_MAPPING SAML_UPDATE_GROUP_ON_LOGIN SAML_IDP_ENTITY_ID SAML_IDP_SINGLE_SIGN_ON_SERVICE SAML_IDP_SINGLE_LOGOUT_SERVICE SAML_IDP_X509_CERT SAML_SP_ENTITY_ID SAML_SP_X509_CERT SAML_SP_PRIVATE_KEY SAMLP_SP_PRIVATE_KEY
|
||||
PassEnv TABLE_DEFAULT_PAGE_SIZE TABLE_PARTS_DEFAULT_COLUMNS
|
||||
|
||||
PassEnv PROVIDER_DIGIKEY_CLIENT_ID PROVIDER_DIGIKEY_SECRET PROVIDER_DIGIKEY_CURRENCY PROVIDER_DIGIKEY_LANGUAGE PROVIDER_DIGIKEY_COUNTRY
|
||||
PassEnv PROVIDER_ELEMENT14_KEY PROVIDER_ELEMENT14_STORE_ID
|
||||
PassEnv PROVIDER_TME_KEY PROVIDER_TME_SECRET PROVIDER_TME_CURRENCY PROVIDER_TME_LANGUAGE PROVIDER_TME_COUNTRY PROVIDER_TME_GET_GROSS_PRICES
|
||||
PassEnv PROVIDER_OCTOPART_CLIENT_ID PROVIDER_OCTOPART_SECRET PROVIDER_OCTOPART_CURRENCY PROVIDER_OCTOPART_COUNTRY PROVIDER_OCTOPART_SEARCH_LIMIT PROVIDER_OCTOPART_ONLY_AUTHORIZED_SELLERS
|
||||
PassEnv PROVIDER_MOUSER_KEY PROVIDER_MOUSER_SEARCH_OPTION PROVIDER_MOUSER_SEARCH_LIMIT PROVIDER_MOUSER_SEARCH_WITH_SIGNUP_LANGUAGE
|
||||
PassEnv PROVIDER_LCSC_ENABLED PROVIDER_LCSC_CURRENCY
|
||||
PassEnv PROVIDER_OEMSECRETS_KEY PROVIDER_OEMSECRETS_COUNTRY_CODE PROVIDER_OEMSECRETS_CURRENCY PROVIDER_OEMSECRETS_ZERO_PRICE PROVIDER_OEMSECRETS_SET_PARAM PROVIDER_OEMSECRETS_SORT_CRITERIA
|
||||
PassEnv PROVIDER_REICHELT_ENABLED PROVIDER_REICHELT_CURRENCY PROVIDER_REICHELT_COUNTRY PROVIDER_REICHELT_LANGUAGE PROVIDER_REICHELT_INCLUDE_VAT
|
||||
PassEnv PROVIDER_POLLIN_ENABLED
|
||||
PassEnv EDA_KICAD_CATEGORY_DEPTH
|
||||
PassEnv SHOW_PART_IMAGE_OVERLAY
|
||||
|
||||
# Proxy configuration env
|
||||
PassEnv NO_PROXY HTTPS_PROXY HTTP_PROXY http_proxy https_proxy ALL_PROXY all_proxy
|
||||
|
||||
# For most configuration files from conf-available/, which are
|
||||
# enabled or disabled at a global level, it is possible to
|
||||
# include a line for only one particular virtual host. For example the
|
||||
|
||||
18
.env
18
.env
@@ -31,13 +31,6 @@ DATABASE_EMULATE_NATURAL_SORT=0
|
||||
# General settings
|
||||
###################################################################################
|
||||
|
||||
# The language to use serverwide as default (en, de, ru, etc.)
|
||||
#DEFAULT_LANG="en"
|
||||
# The default timezone to use serverwide (e.g. Europe/Berlin)
|
||||
#DEFAULT_TIMEZONE="Europe/Berlin"
|
||||
# The currency that is used inside the DB (and is assumed when no currency is set). This can not be changed later, so be sure to set it the currency used in your country
|
||||
#BASE_CURRENCY="EUR"
|
||||
|
||||
# The public reachable URL of this Part-DB installation. This is used for generating links in SAML and email templates
|
||||
# This must end with a slash!
|
||||
DEFAULT_URI="https://partdb.changeme.invalid/"
|
||||
@@ -68,15 +61,6 @@ ERROR_PAGE_ADMIN_EMAIL=''
|
||||
ERROR_PAGE_SHOW_HELP=1
|
||||
|
||||
|
||||
##################################################################################
|
||||
# EDA integration related settings
|
||||
##################################################################################
|
||||
|
||||
# This value determines the depth of the category tree, that is visible inside KiCad
|
||||
# 0 means that only the top level categories are visible. Set to a value > 0 to show more levels.
|
||||
# Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad
|
||||
#EDA_KICAD_CATEGORY_DEPTH=0
|
||||
|
||||
###################################################################################
|
||||
# SAML Single sign on-settings
|
||||
###################################################################################
|
||||
@@ -149,5 +133,5 @@ CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
|
||||
|
||||
###> symfony/framework-bundle ###
|
||||
APP_ENV=prod
|
||||
APP_SECRET=
|
||||
APP_SECRET=a03498528f5a5fc089273ec9ae5b2849
|
||||
###< symfony/framework-bundle ###
|
||||
|
||||
5
.github/workflows/assets_artifact_build.yml
vendored
5
.github/workflows/assets_artifact_build.yml
vendored
@@ -1,5 +1,8 @@
|
||||
name: Build assets artifact
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
@@ -19,7 +22,7 @@ jobs:
|
||||
APP_ENV: prod
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
|
||||
7
.github/workflows/docker_build.yml
vendored
7
.github/workflows/docker_build.yml
vendored
@@ -1,5 +1,8 @@
|
||||
name: Docker Image Build
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
#schedule:
|
||||
# - cron: '0 10 * * *' # everyday at 10am
|
||||
@@ -17,7 +20,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
-
|
||||
name: Docker meta
|
||||
id: docker_meta
|
||||
@@ -73,4 +76,4 @@ jobs:
|
||||
tags: ${{ steps.docker_meta.outputs.tags }}
|
||||
labels: ${{ steps.docker_meta.outputs.labels }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
7
.github/workflows/docker_frankenphp.yml
vendored
7
.github/workflows/docker_frankenphp.yml
vendored
@@ -1,5 +1,8 @@
|
||||
name: Docker Image Build (FrankenPHP)
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
#schedule:
|
||||
# - cron: '0 10 * * *' # everyday at 10am
|
||||
@@ -17,7 +20,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
-
|
||||
name: Docker meta
|
||||
id: docker_meta
|
||||
@@ -74,4 +77,4 @@ jobs:
|
||||
tags: ${{ steps.docker_meta.outputs.tags }}
|
||||
labels: ${{ steps.docker_meta.outputs.labels }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
15
.github/workflows/static_analysis.yml
vendored
15
.github/workflows/static_analysis.yml
vendored
@@ -1,5 +1,8 @@
|
||||
name: Static analysis
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
@@ -16,7 +19,7 @@ jobs:
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
@@ -30,20 +33,20 @@ jobs:
|
||||
id: composer-cache
|
||||
run: |
|
||||
echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
|
||||
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-composer-
|
||||
${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --prefer-dist --no-progress
|
||||
|
||||
- name: Lint config files
|
||||
run: ./bin/console lint:yaml config --parse-tags
|
||||
|
||||
|
||||
- name: Lint twig templates
|
||||
run: ./bin/console lint:twig templates --env=prod
|
||||
|
||||
@@ -53,13 +56,13 @@ jobs:
|
||||
|
||||
- name: Check dependencies for security
|
||||
uses: symfonycorp/security-checker-action@v5
|
||||
|
||||
|
||||
- name: Check doctrine mapping
|
||||
run: ./bin/console doctrine:schema:validate --skip-sync -vvv --no-interaction
|
||||
|
||||
# Use the -d option to raise the max nesting level
|
||||
- name: Generate dev container
|
||||
run: php -d xdebug.max_nesting_level=1000 ./bin/console cache:clear --env dev
|
||||
|
||||
|
||||
- name: Run PHPstan
|
||||
run: composer phpstan
|
||||
|
||||
5
.github/workflows/tests.yml
vendored
5
.github/workflows/tests.yml
vendored
@@ -1,5 +1,8 @@
|
||||
name: PHPUnit Tests
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
@@ -43,7 +46,7 @@ jobs:
|
||||
if: matrix.db-type == 'postgres'
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
|
||||
@@ -119,12 +119,12 @@ realpath_cache_size=4096K
|
||||
realpath_cache_ttl=600
|
||||
EOF
|
||||
|
||||
# Increase upload limit and enable preloading
|
||||
# Increase upload limit and enable preloading (disabled for now, as it does not seem to work properly, and require prod env anyway)
|
||||
COPY <<EOF /etc/php/${PHP_VERSION}/fpm/conf.d/partdb.ini
|
||||
upload_max_filesize=256M
|
||||
post_max_size=300M
|
||||
opcache.preload_user=www-data
|
||||
opcache.preload=/var/www/html/config/preload.php
|
||||
;opcache.preload_user=www-data
|
||||
;opcache.preload=/var/www/html/config/preload.php
|
||||
log_limit=8096
|
||||
EOF
|
||||
|
||||
|
||||
@@ -1,14 +1,5 @@
|
||||
{
|
||||
"controllers": {
|
||||
"@symfony/ux-toggle-password": {
|
||||
"toggle-password": {
|
||||
"enabled": true,
|
||||
"fetch": "eager",
|
||||
"autoimport": {
|
||||
"@symfony/ux-toggle-password/dist/style.min.css": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@symfony/ux-turbo": {
|
||||
"turbo-core": {
|
||||
"enabled": true,
|
||||
|
||||
86
assets/controllers/toggle_password_controller.js
Normal file
86
assets/controllers/toggle_password_controller.js
Normal file
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||
*
|
||||
* Copyright (C) 2019 - 2025 Jan Böhmer (https://github.com/jbtronics)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Controller } from '@hotwired/stimulus';
|
||||
import '../css/components/toggle_password.css';
|
||||
|
||||
export default class extends Controller {
|
||||
static values = {
|
||||
visibleLabel: { type: String, default: 'Show' },
|
||||
visibleIcon: { type: String, default: 'Default' },
|
||||
hiddenLabel: { type: String, default: 'Hide' },
|
||||
hiddenIcon: { type: String, default: 'Default' },
|
||||
buttonClasses: Array,
|
||||
};
|
||||
|
||||
isDisplayed = false;
|
||||
visibleIcon = `<svg xmlns="http://www.w3.org/2000/svg" class="toggle-password-icon" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path d="M10 12a2 2 0 100-4 2 2 0 000 4z" />
|
||||
<path fill-rule="evenodd" d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z" clip-rule="evenodd" />
|
||||
</svg>`;
|
||||
hiddenIcon = `<svg xmlns="http://www.w3.org/2000/svg" class="toggle-password-icon" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path fill-rule="evenodd" d="M3.707 2.293a1 1 0 00-1.414 1.414l14 14a1 1 0 001.414-1.414l-1.473-1.473A10.014 10.014 0 0019.542 10C18.268 5.943 14.478 3 10 3a9.958 9.958 0 00-4.512 1.074l-1.78-1.781zm4.261 4.26l1.514 1.515a2.003 2.003 0 012.45 2.45l1.514 1.514a4 4 0 00-5.478-5.478z" clip-rule="evenodd" />
|
||||
<path d="M12.454 16.697L9.75 13.992a4 4 0 01-3.742-3.741L2.335 6.578A9.98 9.98 0 00.458 10c1.274 4.057 5.065 7 9.542 7 .847 0 1.669-.105 2.454-.303z" />
|
||||
</svg>`;
|
||||
|
||||
connect() {
|
||||
if (this.visibleIconValue !== 'Default') {
|
||||
this.visibleIcon = this.visibleIconValue;
|
||||
}
|
||||
|
||||
if (this.hiddenIconValue !== 'Default') {
|
||||
this.hiddenIcon = this.hiddenIconValue;
|
||||
}
|
||||
|
||||
const button = this.createButton();
|
||||
|
||||
this.element.insertAdjacentElement('afterend', button);
|
||||
this.dispatchEvent('connect', { element: this.element, button });
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {HTMLButtonElement}
|
||||
*/
|
||||
createButton() {
|
||||
const button = document.createElement('button');
|
||||
button.type = 'button';
|
||||
button.classList.add(...this.buttonClassesValue);
|
||||
button.setAttribute('tabindex', '-1');
|
||||
button.addEventListener('click', this.toggle.bind(this));
|
||||
button.innerHTML = `${this.visibleIcon} ${this.visibleLabelValue}`;
|
||||
return button;
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle input type between "text" or "password" and update label accordingly
|
||||
*/
|
||||
toggle(event) {
|
||||
this.isDisplayed = !this.isDisplayed;
|
||||
const toggleButtonElement = event.currentTarget;
|
||||
toggleButtonElement.innerHTML = this.isDisplayed
|
||||
? `${this.hiddenIcon} ${this.hiddenLabelValue}`
|
||||
: `${this.visibleIcon} ${this.visibleLabelValue}`;
|
||||
this.element.setAttribute('type', this.isDisplayed ? 'text' : 'password');
|
||||
this.dispatchEvent(this.isDisplayed ? 'show' : 'hide', { element: this.element, button: toggleButtonElement });
|
||||
}
|
||||
|
||||
dispatchEvent(name, payload) {
|
||||
this.dispatch(name, { detail: payload, prefix: 'toggle-password' });
|
||||
}
|
||||
}
|
||||
41
assets/css/components/toggle_password.css
Normal file
41
assets/css/components/toggle_password.css
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||
*
|
||||
* Copyright (C) 2019 - 2025 Jan Böhmer (https://github.com/jbtronics)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
.toggle-password-container {
|
||||
position: relative;
|
||||
}
|
||||
.toggle-password-icon {
|
||||
height: 1rem;
|
||||
width: 1rem;
|
||||
}
|
||||
.toggle-password-button {
|
||||
align-items: center;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
column-gap: 0.25rem;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-size: 0.875rem;
|
||||
justify-items: center;
|
||||
height: 1rem;
|
||||
line-height: 1.25rem;
|
||||
position: absolute;
|
||||
right: 0.5rem;
|
||||
top: -1.25rem;
|
||||
}
|
||||
@@ -75,11 +75,10 @@
|
||||
request._dt = config.name;
|
||||
|
||||
//Try to resolve the original column index when the column was reordered (using the ColReorder plugin)
|
||||
//Only do this when _ColReorder_iOrigCol is available
|
||||
if (settings.aoColumns && settings.aoColumns.length && settings.aoColumns[0]._ColReorder_iOrigCol !== undefined) {
|
||||
if (dt.colReorder && dt.colReorder.transpose) {
|
||||
if (request.order && request.order.length) {
|
||||
request.order.forEach(function (order) {
|
||||
order.column = settings.aoColumns[order.column]._ColReorder_iOrigCol;
|
||||
order.column = dt.colReorder.transpose(order.column, "toOriginal");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,7 +80,6 @@
|
||||
"symfony/string": "7.3.*",
|
||||
"symfony/translation": "7.3.*",
|
||||
"symfony/twig-bundle": "7.3.*",
|
||||
"symfony/ux-toggle-password": "^2.29",
|
||||
"symfony/ux-translator": "^2.10",
|
||||
"symfony/ux-turbo": "^2.0",
|
||||
"symfony/validator": "7.3.*",
|
||||
|
||||
98
composer.lock
generated
98
composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "3b97b6338827ba56e0404860f3e98359",
|
||||
"content-hash": "09b78f345ea8115b5b29ea3e67dcb579",
|
||||
"packages": [
|
||||
{
|
||||
"name": "amphp/amp",
|
||||
@@ -8036,16 +8036,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpdoc-parser",
|
||||
"version": "2.2.0",
|
||||
"version": "2.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||
"reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8"
|
||||
"reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b9e61a61e39e02dd90944e9115241c7f7e76bfd8",
|
||||
"reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495",
|
||||
"reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -8077,9 +8077,9 @@
|
||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.2.0"
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0"
|
||||
},
|
||||
"time": "2025-07-13T07:04:09+00:00"
|
||||
"time": "2025-08-30T15:50:23+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/cache",
|
||||
@@ -15206,90 +15206,6 @@
|
||||
],
|
||||
"time": "2025-06-27T19:55:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/ux-toggle-password",
|
||||
"version": "v2.30.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/ux-toggle-password.git",
|
||||
"reference": "414b1ea51b93c4c6c6cc3a485adbfc8764ea6dc8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/ux-toggle-password/zipball/414b1ea51b93c4c6c6cc3a485adbfc8764ea6dc8",
|
||||
"reference": "414b1ea51b93c4c6c6cc3a485adbfc8764ea6dc8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1",
|
||||
"symfony/config": "^5.4|^6.0|^7.0|^8.0",
|
||||
"symfony/dependency-injection": "^5.4|^6.0|^7.0|^8.0",
|
||||
"symfony/form": "^5.4|^6.0|^7.0|^8.0",
|
||||
"symfony/http-kernel": "^5.4|^6.0|^7.0|^8.0",
|
||||
"symfony/options-resolver": "^5.4|^6.0|^7.0|^8.0",
|
||||
"symfony/translation": "^5.4|^6.0|^7.0|^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/framework-bundle": "^5.4|^6.0|^7.0|^8.0",
|
||||
"symfony/phpunit-bridge": "^5.4|^6.0|^7.0|^8.0",
|
||||
"symfony/twig-bundle": "^5.4|^6.0|^7.0|^8.0",
|
||||
"symfony/var-dumper": "^5.4|^6.0|^7.0|^8.0",
|
||||
"twig/twig": "^2.14.7|^3.0.4"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"url": "https://github.com/symfony/ux",
|
||||
"name": "symfony/ux"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\UX\\TogglePassword\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Félix Eymonot",
|
||||
"email": "felix.eymonot@alximy.io"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Toggle visibility of password inputs for Symfony Forms",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"symfony-ux"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/ux-toggle-password/tree/v2.30.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/nicolas-grekas",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2025-08-27T15:25:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/ux-translator",
|
||||
"version": "v2.30.0",
|
||||
|
||||
@@ -33,5 +33,4 @@ return [
|
||||
Jbtronics\SettingsBundle\JbtronicsSettingsBundle::class => ['all' => true],
|
||||
Jbtronics\TranslationEditorBundle\JbtronicsTranslationEditorBundle::class => ['dev' => true],
|
||||
ApiPlatform\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true],
|
||||
Symfony\UX\TogglePassword\TogglePasswordBundle::class => ['all' => true],
|
||||
];
|
||||
|
||||
@@ -18,7 +18,7 @@ datatables:
|
||||
>
|
||||
<'row' <'col mt-2 input-group flex-nowrap' B l > <'col-auto mt-2' < p >>>"
|
||||
pagingType: 'simple_numbers'
|
||||
searching: true
|
||||
searching: false
|
||||
stateSave: true
|
||||
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@ when@docker:
|
||||
excluded_http_codes: [404, 405]
|
||||
buffer_size: 50 # How many messages should be saved? Prevent memory leaks
|
||||
include_stacktraces: true
|
||||
channels: ["!deprecation"]
|
||||
nested:
|
||||
type: stream
|
||||
path: "php://stderr"
|
||||
|
||||
@@ -142,28 +142,12 @@ services:
|
||||
# This feature is currently experimental, so use it at your own risk!
|
||||
# - DB_AUTOMIGRATE=true
|
||||
|
||||
# You can configure Part-DB using environment variables
|
||||
# Below you can find the most essential ones predefined
|
||||
# You can configure Part-DB using the webUI or environment variables
|
||||
# However you can add add any other environment configuration you want here
|
||||
# See .env file for all available options or https://docs.part-db.de/configuration.html
|
||||
|
||||
# The language to use serverwide as default (en, de, ru, etc.)
|
||||
- DEFAULT_LANG=en
|
||||
# The default timezone to use serverwide (e.g. Europe/Berlin)
|
||||
- DEFAULT_TIMEZONE=Europe/Berlin
|
||||
# The currency that is used inside the DB (and is assumed when no currency is set). This can not be changed later, so be sure to set it the currency used in your country
|
||||
- BASE_CURRENCY=EUR
|
||||
# The name of this installation. This will be shown as title in the browser and in the header of the website
|
||||
- INSTANCE_NAME=Part-DB
|
||||
|
||||
# Allow users to download attachments to the server by providing an URL
|
||||
# This could be a potential security issue, as the user can retrieve any file the server has access to (via internet)
|
||||
- ALLOW_ATTACHMENT_DOWNLOADS=0
|
||||
# Use gravatars for user avatars, when user has no own avatar defined
|
||||
- USE_GRAVATAR=0
|
||||
|
||||
# Override value if you want to show to show a given text on homepage.
|
||||
# When this is empty the content of config/banner.md is used as banner
|
||||
# When this is outcommented the webUI can be used to configure the banner
|
||||
#- BANNER=This is a test banner<br>with a line break
|
||||
|
||||
database:
|
||||
|
||||
@@ -3,6 +3,7 @@ layout: default
|
||||
title: Upgrade from Part-DB 1.x to 2.x
|
||||
nav_order: 1
|
||||
has_children: false
|
||||
parent: Upgrade
|
||||
---
|
||||
|
||||
# Upgrade from Part-DB 1.x to 2.x
|
||||
|
||||
@@ -3,6 +3,7 @@ layout: default
|
||||
title: Upgrade from legacy Part-DB version (<1.0)
|
||||
nav_order: 100
|
||||
redirect_from: /upgrade_legacy
|
||||
parent: Upgrade
|
||||
---
|
||||
|
||||
# Upgrade from legacy Part-DB version
|
||||
|
||||
@@ -20,7 +20,7 @@ Part-DB. Data can also be exported from Part-DB into various formats.
|
||||
> individually in the permissions settings.
|
||||
|
||||
If you want to import data from PartKeepr you might want to look into the [PartKeepr migration guide]({% link
|
||||
upgrade_legacy.md %}).
|
||||
upgrade/upgrade_legacy.md %}).
|
||||
|
||||
### Import parts
|
||||
|
||||
@@ -158,4 +158,4 @@ information, this can lead to very large export files.
|
||||
You can export parts in all part tables. Select the parts you want via the checkbox in the table line and select the
|
||||
export format and level in the appearing menu.
|
||||
|
||||
See the section about exporting data structures for more information about the export formats and levels.
|
||||
See the section about exporting data structures for more information about the export formats and levels.
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
"@hotwired/turbo": "^8.0.1",
|
||||
"@popperjs/core": "^2.10.2",
|
||||
"@symfony/stimulus-bridge": "^4.0.0",
|
||||
"@symfony/ux-toggle-password": "file:vendor/symfony/ux-toggle-password/assets",
|
||||
"@symfony/ux-translator": "file:vendor/symfony/ux-translator/assets",
|
||||
"@symfony/ux-turbo": "file:vendor/symfony/ux-turbo/assets",
|
||||
"@symfony/webpack-encore": "^5.0.0",
|
||||
|
||||
@@ -39,7 +39,7 @@ declare(strict_types=1);
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace App\Form;
|
||||
namespace App\Form\Extension;
|
||||
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
@@ -1,4 +1,22 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||
*
|
||||
* Copyright (C) 2019 - 2025 Jan Böhmer (https://github.com/jbtronics)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
@@ -20,7 +38,7 @@ declare(strict_types=1);
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
namespace App\Form;
|
||||
namespace App\Form\Extension;
|
||||
|
||||
use Symfony\Component\Form\AbstractTypeExtension;
|
||||
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
||||
@@ -21,7 +21,7 @@
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace App\Form;
|
||||
namespace App\Form\Extension;
|
||||
|
||||
use Symfony\Component\Form\AbstractTypeExtension;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
@@ -57,4 +57,4 @@ class SelectTypeOrderExtension extends AbstractTypeExtension
|
||||
$view->vars['attr']['data-ordered-value'] = json_encode($form->getViewData(), JSON_THROW_ON_ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
122
src/Form/Extension/TogglePasswordTypeExtension.php
Normal file
122
src/Form/Extension/TogglePasswordTypeExtension.php
Normal file
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||
*
|
||||
* Copyright (C) 2019 - 2025 Jan Böhmer (https://github.com/jbtronics)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Form\Extension;
|
||||
|
||||
use Symfony\Component\Form\AbstractTypeExtension;
|
||||
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
||||
use Symfony\Component\Form\FormInterface;
|
||||
use Symfony\Component\Form\FormView;
|
||||
use Symfony\Component\OptionsResolver\Options;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Translation\TranslatableMessage;
|
||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
|
||||
final class TogglePasswordTypeExtension extends AbstractTypeExtension
|
||||
{
|
||||
public function __construct(private readonly ?TranslatorInterface $translator)
|
||||
{
|
||||
}
|
||||
|
||||
public static function getExtendedTypes(): iterable
|
||||
{
|
||||
return [PasswordType::class];
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
{
|
||||
$resolver->setDefaults([
|
||||
'toggle' => false,
|
||||
'hidden_label' => 'Hide',
|
||||
'visible_label' => 'Show',
|
||||
'hidden_icon' => 'Default',
|
||||
'visible_icon' => 'Default',
|
||||
'button_classes' => ['toggle-password-button'],
|
||||
'toggle_container_classes' => ['toggle-password-container'],
|
||||
'toggle_translation_domain' => null,
|
||||
'use_toggle_form_theme' => true,
|
||||
]);
|
||||
|
||||
$resolver->setNormalizer(
|
||||
'toggle_translation_domain',
|
||||
static fn (Options $options, $labelTranslationDomain) => $labelTranslationDomain ?? $options['translation_domain'],
|
||||
);
|
||||
|
||||
$resolver->setAllowedTypes('toggle', ['bool']);
|
||||
$resolver->setAllowedTypes('hidden_label', ['string', TranslatableMessage::class, 'null']);
|
||||
$resolver->setAllowedTypes('visible_label', ['string', TranslatableMessage::class, 'null']);
|
||||
$resolver->setAllowedTypes('hidden_icon', ['string', 'null']);
|
||||
$resolver->setAllowedTypes('visible_icon', ['string', 'null']);
|
||||
$resolver->setAllowedTypes('button_classes', ['string[]']);
|
||||
$resolver->setAllowedTypes('toggle_container_classes', ['string[]']);
|
||||
$resolver->setAllowedTypes('toggle_translation_domain', ['string', 'bool', 'null']);
|
||||
$resolver->setAllowedTypes('use_toggle_form_theme', ['bool']);
|
||||
}
|
||||
|
||||
public function buildView(FormView $view, FormInterface $form, array $options): void
|
||||
{
|
||||
$view->vars['toggle'] = $options['toggle'];
|
||||
|
||||
if (!$options['toggle']) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($options['use_toggle_form_theme']) {
|
||||
array_splice($view->vars['block_prefixes'], -1, 0, 'toggle_password');
|
||||
}
|
||||
|
||||
$controllerName = 'toggle-password';
|
||||
$controllerValues = [];
|
||||
$view->vars['attr']['data-controller'] = trim(\sprintf('%s %s', $view->vars['attr']['data-controller'] ?? '', $controllerName));
|
||||
|
||||
if (false !== $options['toggle_translation_domain']) {
|
||||
$controllerValues['hidden-label'] = $this->translateLabel($options['hidden_label'], $options['toggle_translation_domain']);
|
||||
$controllerValues['visible-label'] = $this->translateLabel($options['visible_label'], $options['toggle_translation_domain']);
|
||||
} else {
|
||||
$controllerValues['hidden-label'] = $options['hidden_label'];
|
||||
$controllerValues['visible-label'] = $options['visible_label'];
|
||||
}
|
||||
|
||||
$controllerValues['hidden-icon'] = $options['hidden_icon'];
|
||||
$controllerValues['visible-icon'] = $options['visible_icon'];
|
||||
$controllerValues['button-classes'] = json_encode($options['button_classes'], \JSON_THROW_ON_ERROR);
|
||||
|
||||
foreach ($controllerValues as $name => $value) {
|
||||
$view->vars['attr'][\sprintf('data-%s-%s-value', $controllerName, $name)] = $value;
|
||||
}
|
||||
|
||||
$view->vars['toggle_container_classes'] = $options['toggle_container_classes'];
|
||||
}
|
||||
|
||||
private function translateLabel(string|TranslatableMessage|null $label, ?string $translationDomain): ?string
|
||||
{
|
||||
if (null === $this->translator || null === $label) {
|
||||
return $label;
|
||||
}
|
||||
|
||||
if ($label instanceof TranslatableMessage) {
|
||||
return $label->trans($this->translator);
|
||||
}
|
||||
|
||||
return $this->translator->trans($label, domain: $translationDomain);
|
||||
}
|
||||
}
|
||||
@@ -729,9 +729,6 @@
|
||||
},
|
||||
"files": []
|
||||
},
|
||||
"symfony/ux-toggle-password": {
|
||||
"version": "v2.29.2"
|
||||
},
|
||||
"symfony/ux-translator": {
|
||||
"version": "2.9",
|
||||
"recipe": {
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
{% extends 'bootstrap_5_horizontal_layout.html.twig' %}
|
||||
|
||||
{%- block toggle_password_widget -%}
|
||||
<div class="{{ toggle_container_classes|join(' ') }}">{{ block('password_widget') }}</div>
|
||||
{%- endblock toggle_password_widget -%}
|
||||
|
||||
{# Make form rows smaller #}
|
||||
{% block form_row -%}
|
||||
{%- set row_attr = row_attr|merge({"class": "mb-2"}) -%}
|
||||
@@ -139,4 +143,4 @@
|
||||
{% else %}
|
||||
{{- parent() -}}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -12311,6 +12311,529 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
|
||||
<target>Profil gespeichert!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="XUlcyOb" name="settings.ips.element14">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.element14</source>
|
||||
<target>Element 14 / Farnell</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1N9Wp0_" name="settings.ips.element14.apiKey">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.element14.apiKey</source>
|
||||
<target>API Key</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="p7LGAIX" name="settings.ips.element14.apiKey.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.element14.apiKey.help</source>
|
||||
<target>Sie können sich unter <a href="https://partner.element14.com/">https://partner.element14.com/</a> für einen API-Schlüssel registrieren.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ZdUHpZc" name="settings.ips.element14.storeId">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.element14.storeId</source>
|
||||
<target>Store Domain</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="XXGUxF6" name="settings.ips.element14.storeId.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.element14.storeId.help</source>
|
||||
<target>Die Domain des Shops, aus dem die Daten abgerufen werden sollen. Diese bestimmt die Sprache und Währung der Ergebnisse. Eine Liste der gültigen Domains finden Sie <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">hier</a>.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="WKWZIm2" name="settings.ips.tme">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme</source>
|
||||
<target>TME</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="KgK78ks" name="settings.ips.tme.token">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.token</source>
|
||||
<target>API Token</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="_pYLrPT" name="settings.ips.tme.token.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.token.help</source>
|
||||
<target>Sie können einen API-Token und einen geheimen Schlüssel unter <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a> erhalten.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="yswx4bq" name="settings.ips.tme.secret">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.secret</source>
|
||||
<target>API Secret</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="edYZA5y" name="settings.ips.tme.currency">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.currency</source>
|
||||
<target>Währung</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="EsVqpUJ" name="settings.ips.tme.language">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.language</source>
|
||||
<target>Sprache</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="qFwUGJJ" name="settings.ips.tme.country">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.country</source>
|
||||
<target>Land</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Mf2WKob" name="settings.ips.tme.grossPrices">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.grossPrices</source>
|
||||
<target>Bruttopreise (inklusive Steuern) abrufen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="A.x1dyH" name="settings.ips.mouser">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser</source>
|
||||
<target>Mouser</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="5ZxvqyY" name="settings.ips.mouser.apiKey">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.apiKey</source>
|
||||
<target>API Key</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="gu.JlpT" name="settings.ips.mouser.apiKey.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.apiKey.help</source>
|
||||
<target>Sie können sich unter <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a> für einen API-Schlüssel registrieren.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Q66CNjw" name="settings.ips.mouser.searchLimit">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchLimit</source>
|
||||
<target>Suchlimit</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="aj5nhIi" name="settings.ips.mouser.searchLimit.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchLimit.help</source>
|
||||
<target>Die maximale Anzahl an Ergebnissen für eine einzelne Suche. Kann nicht höher als 50 sein.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="q8.Wpbu" name="settings.ips.mouser.searchOptions">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions</source>
|
||||
<target>Suchfilter</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7ERXoOf" name="settings.ips.mouser.searchOptions.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions.help</source>
|
||||
<target>Erlaubt es nur Teile mit einer bestimmten Verfügbarkeit und/oder Konformität anzuzeigen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="2_fx.rT" name="settings.ips.mouser.searchOptions.none">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions.none</source>
|
||||
<target>Keine Filterung</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id=".PbDhl9" name="settings.ips.mouser.searchOptions.rohs">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions.rohs</source>
|
||||
<target>Nur RoHS konforme Bauteile</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="4SPypVz" name="settings.ips.mouser.searchOptions.inStock">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions.inStock</source>
|
||||
<target>Nur sofort verfügbare Bauteile</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="xU8_Qw." name="settings.ips.mouser.searchOptions.rohsAndInStock">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions.rohsAndInStock</source>
|
||||
<target>Sofort verfügbar & RoHS konform</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="fQYt0Om" name="settings.ips.lcsc">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.lcsc</source>
|
||||
<target>LCSC</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="iD6HBym" name="settings.ips.lcsc.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.lcsc.help</source>
|
||||
<target>Achtung: LCSC stellt keine offizielle API zur Verfügung. Dieser Anbieter nutzt die Webshop-API. LCSC hat die Nutzung dieser API nicht vorgesehen, und sie kann jederzeit ausfallen. Die Nutzung erfolgt daher auf eigene Gefahr.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="v7inGbo" name="settings.ips.lcsc.enabled">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.lcsc.enabled</source>
|
||||
<target>Aktivieren</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="3KcMouQ" name="settings.ips.lcsc.currency">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.lcsc.currency</source>
|
||||
<target>Währung</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="kKv0J3." name="settings.system.attachments">
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments</source>
|
||||
<target>Anhänge & Dateien</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="dsRff8T" name="settings.system.attachments.maxFileSize">
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments.maxFileSize</source>
|
||||
<target>Maximale Dateigröße</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="uI1XsbJ" name="settings.system.attachments.maxFileSize.help">
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments.maxFileSize.help</source>
|
||||
<target>Die maximale Größe der Dateien, die hochgeladen werden können. Bitte beachten Sie, dass dies auch durch die PHP-Konfiguration begrenzt ist.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="sIt9Ovp" name="settings.system.attachments.allowDownloads">
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments.allowDownloads</source>
|
||||
<target>Herunterladen externer Dateien zulassen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="T.PBu5P" name="settings.system.attachments.allowDownloads.help">
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments.allowDownloads.help</source>
|
||||
<target>Mit dieser Option können Benutzer externe Dateien in die Part-DB herunterladen, indem sie eine URL angeben. <b>Achtung: Dies kann ein Sicherheitsrisiko darstellen, da Benutzer dadurch möglicherweise über die Part-DB auf Intranet-Ressourcen zugreifen können!</b></target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id=".OyihML" name="settings.system.attachments.downloadByDefault">
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments.downloadByDefault</source>
|
||||
<target>Standardmäßig die URL für neue Anhänge herunterladen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="UuDCaUI" name="settings.system.customization">
|
||||
<segment state="translated">
|
||||
<source>settings.system.customization</source>
|
||||
<target>Anpassungen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="VYMqQr5" name="settings.system.customization.instanceName">
|
||||
<segment state="translated">
|
||||
<source>settings.system.customization.instanceName</source>
|
||||
<target>Instanzname</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0YFxSHZ" name="settings.system.customization.instanceName.help">
|
||||
<segment state="translated">
|
||||
<source>settings.system.customization.instanceName.help</source>
|
||||
<target>Name dieser Part-DB-Installation. Der Wert wird in der Navigationsleiste und in Titeln angezeigt.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="28n6rA7" name="settings.system.customization.banner">
|
||||
<segment state="translated">
|
||||
<source>settings.system.customization.banner</source>
|
||||
<target>Startseiten Banner</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="cdwJbbA" name="settings.system.history">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history</source>
|
||||
<target>Ereignislog</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="6TrsK5U" name="settings.system.history.saveChangedFields">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.saveChangedFields</source>
|
||||
<target>Speichern, welche Felder eines Elements in Protokolleinträgen geändert wurden.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="IVP9YL8" name="settings.system.history.saveOldData">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.saveOldData</source>
|
||||
<target>Alten Daten in Protokolleinträgen bei Elementänderungen speichern</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="clqgFOW" name="settings.system.history.saveNewData">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.saveNewData</source>
|
||||
<target>Neue Daten in Logeinträgen bei Elementänderung/-erstellung speichern</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="MITi2KP" name="settings.system.history.saveRemovedData">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.saveRemovedData</source>
|
||||
<target>Gelöschte Daten in Logeintrag beim Löschen von Elementen speichern</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="pinyqu2" name="settings.system.customization.theme">
|
||||
<segment state="translated">
|
||||
<source>settings.system.customization.theme</source>
|
||||
<target>Globales Thema</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Aky9nXE" name="settings.system.history.enforceComments">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments</source>
|
||||
<target>Kommentare für Aktionen erzwingen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="axivgKB" name="settings.system.history.enforceComments.description">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.description</source>
|
||||
<target>Mit dieser Option können Sie festlegen, für welche Aktionen Benutzer einen Grund angeben müssen, der protokolliert wird.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="eqQKTzQ" name="settings.system.history.enforceComments.type.part_edit">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.part_edit</source>
|
||||
<target>Bauteil bearbeiten</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Ip_kAO3" name="settings.system.history.enforceComments.type.part_create">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.part_create</source>
|
||||
<target>Bauteil erstellen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="qEa.03L" name="settings.system.history.enforceComments.type.part_delete">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.part_delete</source>
|
||||
<target>Bauteil löschen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="zjITvo2" name="settings.system.history.enforceComments.type.part_stock_operation">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.part_stock_operation</source>
|
||||
<target>Bauteilebestand ändern</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="hPbibkF" name="settings.system.history.enforceComments.type.datastructure_edit">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.datastructure_edit</source>
|
||||
<target>Datenstruktur bearbeiten</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7mB_fP3" name="settings.system.history.enforceComments.type.datastructure_create">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.datastructure_create</source>
|
||||
<target>Datenstruktur erstellen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="nt8eToz" name="settings.system.history.enforceComments.type.datastructure_delete">
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.datastructure_delete</source>
|
||||
<target>Datenstruktur löschen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="zQ8vq5N" name="settings.system.privacy.useGravatar">
|
||||
<segment state="translated">
|
||||
<source>settings.system.privacy.useGravatar</source>
|
||||
<target>Verwende Gravatar Avatare</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8IszKgp" name="settings.system.privacy.useGravatar.description">
|
||||
<segment state="translated">
|
||||
<source>settings.system.privacy.useGravatar.description</source>
|
||||
<target>Wenn ein Benutzer kein Avatar-Bild angegeben hat, verwenden Sie das Avatar von Gravatar basierend auf der E-Mail-Adresse des Benutzers. Dies führt dazu, dass der Browser Bilder von einem Drittanbieter lädt!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="rxHBzbv" name="settings.system.privacy.checkForUpdates">
|
||||
<segment state="translated">
|
||||
<source>settings.system.privacy.checkForUpdates</source>
|
||||
<target>Auf verfügbare Aktualisierungen von Part-DB prüfen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="LrAcb0O" name="settings.system.privacy.checkForUpdates.description">
|
||||
<segment state="translated">
|
||||
<source>settings.system.privacy.checkForUpdates.description</source>
|
||||
<target>Part-DB überprüft regelmäßig, ob auf GitHub eine neue Version verfügbar ist. Deaktivieren Sie diese Option hier, wenn Sie dies nicht wünschen oder wenn Ihr Server keine Verbindung zum Internet herstellen kann.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="nMhHcYc" name="settings.system.localization.locale">
|
||||
<segment state="translated">
|
||||
<source>settings.system.localization.locale</source>
|
||||
<target>Standardsprache</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="vWBNX1b" name="settings.system.localization">
|
||||
<segment state="translated">
|
||||
<source>settings.system.localization</source>
|
||||
<target>Lokalisierung</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7_M.HcK" name="settings.system.localization.timezone">
|
||||
<segment state="translated">
|
||||
<source>settings.system.localization.timezone</source>
|
||||
<target>Standardzeitzone</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="CCMOzX7" name="settings.system.localization.base_currency">
|
||||
<segment state="translated">
|
||||
<source>settings.system.localization.base_currency</source>
|
||||
<target>Basiswährung</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0GRlEe5" name="settings.system.localization.base_currency_description">
|
||||
<segment state="translated">
|
||||
<source>settings.system.localization.base_currency_description</source>
|
||||
<target>Die Währung, in der Preisinformationen und Wechselkurse gespeichert werden. Diese Währung wird angenommen, wenn für eine Preisinformation keine Währung festgelegt ist.
|
||||
<b>Bitte beachten Sie, dass die Währungen bei einer Änderung dieses Wertes nicht umgerechnet werden. Wenn Sie also die Basiswährung ändern, nachdem Sie bereits Preisinformationen hinzugefügt haben, führt dies zu falschen Preisen!</b></target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="cvpTUeY" name="settings.system.privacy">
|
||||
<segment state="translated">
|
||||
<source>settings.system.privacy</source>
|
||||
<target>Datenschutz</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="TVAVZUl" name="settings.title">
|
||||
<segment state="translated">
|
||||
<source>settings.title</source>
|
||||
<target>Servereinstellungen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="xtw_ol7" name="settings.misc.kicad_eda">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.kicad_eda</source>
|
||||
<target>KiCAD Integration</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8u9_KDD" name="settings.misc.kicad_eda.category_depth">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.kicad_eda.category_depth</source>
|
||||
<target>Kategorientiefe</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="w07P3Dt" name="settings.misc.kicad_eda.category_depth.help">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.kicad_eda.category_depth.help</source>
|
||||
<target>Dieser Wert bestimmt die Tiefe des Kategoriebaums, der in KiCad sichtbar ist. 0 bedeutet, dass nur die Kategorien der obersten Ebene sichtbar sind. Setzen Sie den Wert auf > 0, um weitere Ebenen anzuzeigen. Setzen Sie den Wert auf -1, um alle Teile der Part-DB innerhalb einer einzigen Kategorie in KiCad anzuzeigen.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="VwvmcWE" name="settings.behavior.sidebar">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar</source>
|
||||
<target>Seitenleiste</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="FIneGzR" name="settings.behavior.sidebar.items">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.items</source>
|
||||
<target>Seitenleisteneinträge</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="jc0JTvL" name="settings.behavior.sidebar.items.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.items.help</source>
|
||||
<target>Die Menüs, die standardmäßig in der Seitenleiste angezeigt werden. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="gVSWDkE" name="settings.behavior.sidebar.rootNodeEnabled">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.rootNodeEnabled</source>
|
||||
<target>Stammknoten anzeigen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="uk0yKdg" name="settings.behavior.sidebar.rootNodeEnabled.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.rootNodeEnabled.help</source>
|
||||
<target>Ist diese Funktion aktiviert, werden alle Kategorien der obersten Ebene, Footprints usw. unter einem einzigen Stammknoten zusammengefasst. Ist sie deaktiviert, werden die Kategorien der obersten Ebene direkt im Menü angezeigt.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="brCNh0M" name="settings.behavior.sidebar.rootNodeExpanded">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.rootNodeExpanded</source>
|
||||
<target>Stammknoten standardmäßig ausgeklappt</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="NkW8ELV" name="settings.behavior.table">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table</source>
|
||||
<target>Tabellen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1Zrv2eZ" name="settings.behavior.table.default_page_size">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.default_page_size</source>
|
||||
<target>Standardmäßige Seitengröße</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="lbx.zdp" name="settings.behavior.table.default_page_size.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.default_page_size.help</source>
|
||||
<target>Wie viele Einträge standardmäßig auf ganzseitigen Tabellen gezeigt werden. Setzen Sie den Wert auf -1, um standardmäßig alle Elemente ohne Seitenunterteilung anzuzeigen.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="G1N8QW3" name="settings.behavior.table.parts_default_columns">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.parts_default_columns</source>
|
||||
<target>Standardmäßige Spalten für Bauteiletabellen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="SUD8H3b" name="settings.behavior.table.parts_default_columns.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.parts_default_columns.help</source>
|
||||
<target>Die Spalten, die standardmäßig in Bauteiltabellen angezeigt werden sollen. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="hazr_g5" name="settings.ips.oemsecrets">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets</source>
|
||||
<target>OEMSecrets</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ljRPsNX" name="settings.ips.oemsecrets.keepZeroPrices">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.keepZeroPrices</source>
|
||||
<target>Händler mit Nullpreisen anzeigen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="c7YTKEY" name="settings.ips.oemsecrets.keepZeroPrices.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.keepZeroPrices.help</source>
|
||||
<target>Wenn dies nicht gesetzt ist, werden Händler, deren Preise 0 betragen, als ungültig verworfen.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ym9EcxF" name="settings.ips.oemsecrets.parseParams">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.parseParams</source>
|
||||
<target>Parameter aus Beschreibung extrahieren</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="U4aFfJ3" name="settings.ips.oemsecrets.parseParams.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.parseParams.help</source>
|
||||
<target>Wenn diese Option aktiviert ist, versucht der Anbieter, die unstrukturierten Beschreibungen von OEMSecrets in strukturierte Parameter umzuwandeln. Jeder Parameter in der Beschreibung sollte die Form „...;name1:value1;name2:value2“ haben.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="YMpgQPU" name="settings.ips.oemsecrets.sortMode">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.sortMode</source>
|
||||
<target>Sortierung der Ergebnisse</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="3VDLyjD" name="settings.ips.oemsecrets.sortMode.N">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.sortMode.N</source>
|
||||
<target>Keine</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Oz.6cJY" name="settings.ips.oemsecrets.sortMode.C">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.sortMode.C</source>
|
||||
<target>Vollständigkeit (Priorisierung von Elementen mit detaillierten Informationen)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="KLJYfJ0" name="settings.ips.oemsecrets.sortMode.M">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.sortMode.M</source>
|
||||
<target>Vollständigkeit & Herstellername</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8C9ijHM" name="entity.export.flash.error.no_entities">
|
||||
<segment state="translated">
|
||||
<source>entity.export.flash.error.no_entities</source>
|
||||
@@ -12365,5 +12888,167 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
|
||||
<target>Dieses Bauteil enthält mehr als einen Bestand. Ändere den Lagerort bei Hand, um auszuwählen, welcher Bestand geändert werden soll.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="qn25jL." name="settings.ips.reichelt">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.reichelt</source>
|
||||
<target>Reichelt</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="yYazL3j" name="settings.ips.reichelt.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.reichelt.help</source>
|
||||
<target>Reichelt.com bietet keine offizielle API an, daher extrahiert dieser Informationsanbieter die Informationen per Webscraping aus der Website. Dies kann jederzeit unterbrochen werden, die Nutzung erfolgt auf eigene Gefahr.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="2EVJVc6" name="settings.ips.reichelt.include_vat">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.reichelt.include_vat</source>
|
||||
<target>Preise inkl. Mehrwertsteuer anzeigen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Ocp5ktF" name="settings.ips.pollin">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.pollin</source>
|
||||
<target>Pollin</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Xlj6kj2" name="settings.ips.pollin.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.pollin.help</source>
|
||||
<target>Pollin.de bietet keine offizielle API an, daher extrahiert dieser Informationsanbieter die Daten per Webscraping aus der Website. Dies kann jederzeit aufhören zu funktionieren, die Nutzung erfolgt auf eigene Gefahr.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="TEm7uIg" name="settings.behavior.sidebar.rootNodeRedirectsToNewEntity">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.rootNodeRedirectsToNewEntity</source>
|
||||
<target>Wurzelknoten leitet zur Erstellung eines neuen Elements weiter</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="j7HiQ80" name="settings.ips.digikey">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.digikey</source>
|
||||
<target>Digikey</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="_ViyVdh" name="settings.ips.digikey.client_id">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.digikey.client_id</source>
|
||||
<target>Client ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="eB9dDyp" name="settings.ips.digikey.secret">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.digikey.secret</source>
|
||||
<target>Secret</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="5xjmMzf" name="settings.ips.octopart">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.octopart</source>
|
||||
<target>Octopart / Nexar</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="vGv90iO" name="settings.ips.octopart.searchLimit">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.octopart.searchLimit</source>
|
||||
<target>Anzahl an Ergebnissen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="au4Yeps" name="settings.ips.octopart.searchLimit.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.octopart.searchLimit.help</source>
|
||||
<target>Die Anzahl der Ergebnisse, die Sie bei der Suche von Octopart erhalten möchten (bitte beachten Sie, dass dies auf Ihre API-Limits angerechnet wird)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Tiqmk.8" name="settings.ips.octopart.onlyAuthorizedSellers">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.octopart.onlyAuthorizedSellers</source>
|
||||
<target>Nur autorisierte Verkäufer</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ECQkeJy" name="settings.ips.octopart.onlyAuthorizedSellers.help">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.octopart.onlyAuthorizedSellers.help</source>
|
||||
<target>Anwählen, um nicht-autorisierte Angebote in den Ergebnissen anzuzeigen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="iRDDtdU" name="settings.misc.exchange_rate">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.exchange_rate</source>
|
||||
<target>Wechselkurse</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0REngfi" name="settings.misc.exchange_rate.fixer_api_key">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.exchange_rate.fixer_api_key</source>
|
||||
<target>Fixer.io API Key</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="COLhoWD" name="settings.misc.exchange_rate.fixer_api_key.help">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.exchange_rate.fixer_api_key.help</source>
|
||||
<target>Wenn Sie Wechselkurse zwischen Nicht-Euro-Währungen benötigen, können Sie hier einen API-Schlüssel von fixer.io eingeben.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Ffr5xYM" name="settings.behavior.part_info">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.part_info</source>
|
||||
<target>Bauteileinfoseite</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="weH3j.a" name="settings.behavior.part_info.show_part_image_overlay">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.part_info.show_part_image_overlay</source>
|
||||
<target>Bildoverlay anzeigen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="SCUs3WS" name="settings.behavior.part_info.show_part_image_overlay.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.part_info.show_part_image_overlay.help</source>
|
||||
<target>Zeigen Sie die Bildoverlay mit den Details zum Anhang an, wenn Sie mit der Maus über die Teilebildgalerie fahren.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ALfPkeR" name="perm.config.change_system_settings">
|
||||
<segment state="translated">
|
||||
<source>perm.config.change_system_settings</source>
|
||||
<target>Systemeinstellungen bearbeiten</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="TlHeIjk" name="tree.tools.system.settings">
|
||||
<segment state="translated">
|
||||
<source>tree.tools.system.settings</source>
|
||||
<target>Systemeinstellungen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="3YsJ4i6" name="settings.tooltip.overrideable_by_env">
|
||||
<segment state="translated">
|
||||
<source>settings.tooltip.overrideable_by_env</source>
|
||||
<target>Der Wert dieses Parameters kann durch Setzen der Umgebungsvariable „%env%“ überschrieben werden.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="boWkQh7" name="settings.flash.saved">
|
||||
<segment state="translated">
|
||||
<source>settings.flash.saved</source>
|
||||
<target>Einstellungen erfolgreich gespeichert.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="tEYWrWD" name="settings.flash.invalid">
|
||||
<segment state="translated">
|
||||
<source>settings.flash.invalid</source>
|
||||
<target>Die Einstellungen sind ungültig. Bitte überprüfen Sie Ihre Eingabe!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="yRXWSRN" name="info_providers.settings.title">
|
||||
<segment state="translated">
|
||||
<source>info_providers.settings.title</source>
|
||||
<target>Informationsquelle-Einstellungen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="VgSodKY" name="form.apikey.redacted">
|
||||
<segment state="translated">
|
||||
<source>form.apikey.redacted</source>
|
||||
<target>Aus Sicherheitsgründen ausgeblendet</target>
|
||||
</segment>
|
||||
</unit>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -7164,8 +7164,8 @@ Exampletown</target>
|
||||
Element 2
|
||||
Element 3
|
||||
|
||||
Element 1 -> Element 1.1
|
||||
Element 1 -> Element 1.2]]></target>
|
||||
Element 1 -> Element 1.1
|
||||
Element 1 -> Element 1.2]]></target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="TWSqPFi" name="entity.mass_creation.btn">
|
||||
@@ -12319,526 +12319,526 @@ Please note, that you can not impersonate a disabled user. If you try you will g
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="XUlcyOb" name="settings.ips.element14">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.element14</source>
|
||||
<target>Element 14 / Farnell</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1N9Wp0_" name="settings.ips.element14.apiKey">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.element14.apiKey</source>
|
||||
<target>API Key</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="p7LGAIX" name="settings.ips.element14.apiKey.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.element14.apiKey.help</source>
|
||||
<target><![CDATA[You can register for an API key on <a href="https://partner.element14.com/">https://partner.element14.com/</a>.]]></target>
|
||||
<target>You can register for an API key on <a href="https://partner.element14.com/">https://partner.element14.com/</a>.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ZdUHpZc" name="settings.ips.element14.storeId">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.element14.storeId</source>
|
||||
<target>Store Domain</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="XXGUxF6" name="settings.ips.element14.storeId.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.element14.storeId.help</source>
|
||||
<target><![CDATA[The store domain to retrieve the data from. This decides the language and currency of results. See <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">here</a> for a list of valid domains.]]></target>
|
||||
<target>The store domain to retrieve the data from. This decides the language and currency of results. See <a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">here</a> for a list of valid domains.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="WKWZIm2" name="settings.ips.tme">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme</source>
|
||||
<target>TME</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="KgK78ks" name="settings.ips.tme.token">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.token</source>
|
||||
<target>API Token</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="_pYLrPT" name="settings.ips.tme.token.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.token.help</source>
|
||||
<target><![CDATA[You can get an API token and secret on <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>.]]></target>
|
||||
<target>You can get an API token and secret on <a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="yswx4bq" name="settings.ips.tme.secret">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.secret</source>
|
||||
<target>API Secret</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="edYZA5y" name="settings.ips.tme.currency">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.currency</source>
|
||||
<target>Currency</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="EsVqpUJ" name="settings.ips.tme.language">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.language</source>
|
||||
<target>Language</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="qFwUGJJ" name="settings.ips.tme.country">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.country</source>
|
||||
<target>Country</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Mf2WKob" name="settings.ips.tme.grossPrices">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.tme.grossPrices</source>
|
||||
<target>Get gross prices (including tax)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="A.x1dyH" name="settings.ips.mouser">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser</source>
|
||||
<target>Mouser</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="5ZxvqyY" name="settings.ips.mouser.apiKey">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.apiKey</source>
|
||||
<target>API key</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="gu.JlpT" name="settings.ips.mouser.apiKey.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.apiKey.help</source>
|
||||
<target><![CDATA[You can register for an API key on <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>.]]></target>
|
||||
<target>You can register for an API key on <a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Q66CNjw" name="settings.ips.mouser.searchLimit">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchLimit</source>
|
||||
<target>Search limit</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="aj5nhIi" name="settings.ips.mouser.searchLimit.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchLimit.help</source>
|
||||
<target>The maximum amount of results for a single search. Can not be higher than 50.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="q8.Wpbu" name="settings.ips.mouser.searchOptions">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions</source>
|
||||
<target>Search filters</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7ERXoOf" name="settings.ips.mouser.searchOptions.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions.help</source>
|
||||
<target>This allows you to only show parts with a certain availability and/or compliance.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="2_fx.rT" name="settings.ips.mouser.searchOptions.none">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions.none</source>
|
||||
<target>No filter</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id=".PbDhl9" name="settings.ips.mouser.searchOptions.rohs">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions.rohs</source>
|
||||
<target>Only RoHS compliant parts</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="4SPypVz" name="settings.ips.mouser.searchOptions.inStock">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions.inStock</source>
|
||||
<target>Only in stock parts</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="xU8_Qw." name="settings.ips.mouser.searchOptions.rohsAndInStock">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.mouser.searchOptions.rohsAndInStock</source>
|
||||
<target>Only in stock, RoHS compliant parts</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="fQYt0Om" name="settings.ips.lcsc">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.lcsc</source>
|
||||
<target>LCSC</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="iD6HBym" name="settings.ips.lcsc.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.lcsc.help</source>
|
||||
<target>Warning: LCSC does not provide an official API. This provider utilizes the webshop API. LCSC did not intend the use of this API, and it could break any time, so use it on your own risk.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="v7inGbo" name="settings.ips.lcsc.enabled">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.lcsc.enabled</source>
|
||||
<target>Enable</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="3KcMouQ" name="settings.ips.lcsc.currency">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.lcsc.currency</source>
|
||||
<target>Currency</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="kKv0J3." name="settings.system.attachments">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments</source>
|
||||
<target><![CDATA[Attachments & Files]]></target>
|
||||
<target>Attachments & Files</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="dsRff8T" name="settings.system.attachments.maxFileSize">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments.maxFileSize</source>
|
||||
<target>Maximum file size</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="uI1XsbJ" name="settings.system.attachments.maxFileSize.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments.maxFileSize.help</source>
|
||||
<target>The maximum size of files that can be uploaded. Please note that this is also limited by PHP configuration.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="sIt9Ovp" name="settings.system.attachments.allowDownloads">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments.allowDownloads</source>
|
||||
<target>Allow downloading of external files</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="T.PBu5P" name="settings.system.attachments.allowDownloads.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments.allowDownloads.help</source>
|
||||
<target><![CDATA[With this option users can download external files into Part-DB by providing an URL. <b>Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!</b>]]></target>
|
||||
<target>With this option users can download external files into Part-DB by providing an URL. <b>Attention: This can be a security issue, as it might allow users to access intranet ressources via Part-DB!</b></target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id=".OyihML" name="settings.system.attachments.downloadByDefault">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.attachments.downloadByDefault</source>
|
||||
<target>Download new attachment URLs by default</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="UuDCaUI" name="settings.system.customization">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.customization</source>
|
||||
<target>Customization</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="VYMqQr5" name="settings.system.customization.instanceName">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.customization.instanceName</source>
|
||||
<target>Instance name</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0YFxSHZ" name="settings.system.customization.instanceName.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.customization.instanceName.help</source>
|
||||
<target>Name of this Part-DB installation. The value is shown in nav bar and titles.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="28n6rA7" name="settings.system.customization.banner">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.customization.banner</source>
|
||||
<target>Homepage banner</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="cdwJbbA" name="settings.system.history">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history</source>
|
||||
<target>History log</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="6TrsK5U" name="settings.system.history.saveChangedFields">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.saveChangedFields</source>
|
||||
<target>Save which fields of an element were changed in log entries</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="IVP9YL8" name="settings.system.history.saveOldData">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.saveOldData</source>
|
||||
<target>Save the old data in log entries on element changes</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="clqgFOW" name="settings.system.history.saveNewData">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.saveNewData</source>
|
||||
<target>Save the new data in log entries on element change/creation</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="MITi2KP" name="settings.system.history.saveRemovedData">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.saveRemovedData</source>
|
||||
<target>Save removed data in log entries on element deletion</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="pinyqu2" name="settings.system.customization.theme">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.customization.theme</source>
|
||||
<target>Global theme</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Aky9nXE" name="settings.system.history.enforceComments">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments</source>
|
||||
<target>Enforce comments for action types</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="axivgKB" name="settings.system.history.enforceComments.description">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.description</source>
|
||||
<target>With this option, you can specify for which actions, users are enforced to give a reason, which will be logged in history.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="eqQKTzQ" name="settings.system.history.enforceComments.type.part_edit">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.part_edit</source>
|
||||
<target>Part edit</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Ip_kAO3" name="settings.system.history.enforceComments.type.part_create">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.part_create</source>
|
||||
<target>Part creation</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="qEa.03L" name="settings.system.history.enforceComments.type.part_delete">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.part_delete</source>
|
||||
<target>Part deletion</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="zjITvo2" name="settings.system.history.enforceComments.type.part_stock_operation">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.part_stock_operation</source>
|
||||
<target>Part stock operation</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="hPbibkF" name="settings.system.history.enforceComments.type.datastructure_edit">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.datastructure_edit</source>
|
||||
<target>Data structure edit</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7mB_fP3" name="settings.system.history.enforceComments.type.datastructure_create">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.datastructure_create</source>
|
||||
<target>Data structure creation</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="nt8eToz" name="settings.system.history.enforceComments.type.datastructure_delete">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.history.enforceComments.type.datastructure_delete</source>
|
||||
<target>Data structure deletion</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="zQ8vq5N" name="settings.system.privacy.useGravatar">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.privacy.useGravatar</source>
|
||||
<target>Use Gravatar avatars</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8IszKgp" name="settings.system.privacy.useGravatar.description">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.privacy.useGravatar.description</source>
|
||||
<target>If a user does not have an avatar image specified, use the avatar from Gravatar based on the user email. This causes the browser to load pictures from a third-party!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="rxHBzbv" name="settings.system.privacy.checkForUpdates">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.privacy.checkForUpdates</source>
|
||||
<target>Check for Part-DB updates</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="LrAcb0O" name="settings.system.privacy.checkForUpdates.description">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.privacy.checkForUpdates.description</source>
|
||||
<target>Part-DB regularly checks if a new version is available on GitHub. Disable this here, if you do not want this or if your server can not connect to the internet.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="nMhHcYc" name="settings.system.localization.locale">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.localization.locale</source>
|
||||
<target>Default language / locale</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="vWBNX1b" name="settings.system.localization">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.localization</source>
|
||||
<target>Localization</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7_M.HcK" name="settings.system.localization.timezone">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.localization.timezone</source>
|
||||
<target>Default timezone</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="CCMOzX7" name="settings.system.localization.base_currency">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.localization.base_currency</source>
|
||||
<target>Base currency</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0GRlEe5" name="settings.system.localization.base_currency_description">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.localization.base_currency_description</source>
|
||||
<target><![CDATA[The currency that is used to store price information and exchange rates in. This currency is assumed, when no currency is set for a price information.
|
||||
<b>Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!</b>]]></target>
|
||||
<target>The currency that is used to store price information and exchange rates in. This currency is assumed, when no currency is set for a price information.
|
||||
<b>Please note that the currencies are not converted, when changing this value. So changing the default currency after you already added price information, will result in wrong prices!</b></target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="cvpTUeY" name="settings.system.privacy">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.system.privacy</source>
|
||||
<target>Privacy</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="TVAVZUl" name="settings.title">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.title</source>
|
||||
<target>Server settings</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="xtw_ol7" name="settings.misc.kicad_eda">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.misc.kicad_eda</source>
|
||||
<target>KiCAD integration</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8u9_KDD" name="settings.misc.kicad_eda.category_depth">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.misc.kicad_eda.category_depth</source>
|
||||
<target>Category depth</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="w07P3Dt" name="settings.misc.kicad_eda.category_depth.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.misc.kicad_eda.category_depth.help</source>
|
||||
<target><![CDATA[This value determines the depth of the category tree, that is visible inside KiCad. 0 means that only the top level categories are visible. Set to a value > 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad.]]></target>
|
||||
<target>This value determines the depth of the category tree, that is visible inside KiCad. 0 means that only the top level categories are visible. Set to a value > 0 to show more levels. Set to -1, to show all parts of Part-DB inside a sigle cnategory in KiCad.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="VwvmcWE" name="settings.behavior.sidebar">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar</source>
|
||||
<target>Sidebar</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="FIneGzR" name="settings.behavior.sidebar.items">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.items</source>
|
||||
<target>Sidebar items</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="jc0JTvL" name="settings.behavior.sidebar.items.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.items.help</source>
|
||||
<target><![CDATA[The menus which appear at the sidebar by default. Order of items can be changed via drag & drop.]]></target>
|
||||
<target>The menus which appear at the sidebar by default. Order of items can be changed via drag & drop.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="gVSWDkE" name="settings.behavior.sidebar.rootNodeEnabled">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.rootNodeEnabled</source>
|
||||
<target>Use root node</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="uk0yKdg" name="settings.behavior.sidebar.rootNodeEnabled.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.rootNodeEnabled.help</source>
|
||||
<target>If this is enabled, all top-level categories, footprints, etc. will be put under a single root node. If disabled, the top-level categories will be put directly into the menu.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="brCNh0M" name="settings.behavior.sidebar.rootNodeExpanded">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.rootNodeExpanded</source>
|
||||
<target>Expand root node by default</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="NkW8ELV" name="settings.behavior.table">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table</source>
|
||||
<target>Tables</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1Zrv2eZ" name="settings.behavior.table.default_page_size">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.default_page_size</source>
|
||||
<target>Default page size</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="lbx.zdp" name="settings.behavior.table.default_page_size.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.default_page_size.help</source>
|
||||
<target>The default page size on full page tables. Set to -1 to show all items by default without pagination.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="G1N8QW3" name="settings.behavior.table.parts_default_columns">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.parts_default_columns</source>
|
||||
<target>Default columns for part tables</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="SUD8H3b" name="settings.behavior.table.parts_default_columns.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.parts_default_columns.help</source>
|
||||
<target><![CDATA[The columns to show by default in part tables. Order of items can be changed via drag & drop.]]></target>
|
||||
<target>The columns to show by default in part tables. Order of items can be changed via drag & drop.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="hazr_g5" name="settings.ips.oemsecrets">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets</source>
|
||||
<target>OEMSecrets</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ljRPsNX" name="settings.ips.oemsecrets.keepZeroPrices">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.keepZeroPrices</source>
|
||||
<target>Keep distributors with zero prices</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="c7YTKEY" name="settings.ips.oemsecrets.keepZeroPrices.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.keepZeroPrices.help</source>
|
||||
<target>If this is not set, distributors where the prices are 0 will be discarded as invalid</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ym9EcxF" name="settings.ips.oemsecrets.parseParams">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.parseParams</source>
|
||||
<target>Extract parameters from description</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="U4aFfJ3" name="settings.ips.oemsecrets.parseParams.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.parseParams.help</source>
|
||||
<target>If enabled, the provider tries to convert the unstructured descriptions of OEMSecrets into structured parameters. Each parameter in the description should have the form "...;name1:value1;name2:value2"</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="YMpgQPU" name="settings.ips.oemsecrets.sortMode">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.sortMode</source>
|
||||
<target>Result sort mode</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="3VDLyjD" name="settings.ips.oemsecrets.sortMode.N">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.sortMode.N</source>
|
||||
<target>None</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Oz.6cJY" name="settings.ips.oemsecrets.sortMode.C">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.sortMode.C</source>
|
||||
<target>Completeness (prioritize items with detailed information)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="KLJYfJ0" name="settings.ips.oemsecrets.sortMode.M">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets.sortMode.M</source>
|
||||
<target><![CDATA[Completeness & Manufacturer name]]></target>
|
||||
<target>Completeness & Manufacturer name</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8C9ijHM" name="entity.export.flash.error.no_entities">
|
||||
@@ -12886,7 +12886,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
|
||||
<unit id="4wpp6h." name="part_list.action.action.change_location">
|
||||
<segment state="translated">
|
||||
<source>part_list.action.action.change_location</source>
|
||||
<target>Change location (only for parts with single stock)</target>
|
||||
<target>Change location (only for parts with single lot)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="9_9I.m4" name="parts.table.action_handler.error.part_lots_multiple">
|
||||
@@ -12896,163 +12896,163 @@ Please note, that you can not impersonate a disabled user. If you try you will g
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="qn25jL." name="settings.ips.reichelt">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.reichelt</source>
|
||||
<target>Reichelt</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="yYazL3j" name="settings.ips.reichelt.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.reichelt.help</source>
|
||||
<target>Reichelt.com offers no official API, so this info provider webscrapes the website to extract info. It could break at any time, use it at your own risk.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="2EVJVc6" name="settings.ips.reichelt.include_vat">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.reichelt.include_vat</source>
|
||||
<target>Include VAT in prices</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Ocp5ktF" name="settings.ips.pollin">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.pollin</source>
|
||||
<target>Pollin</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Xlj6kj2" name="settings.ips.pollin.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.pollin.help</source>
|
||||
<target>Pollin.de offers no official API, so this info provider webscrapes the website to extract info. It could break at any time, use it at your own risk.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="TEm7uIg" name="settings.behavior.sidebar.rootNodeRedirectsToNewEntity">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.sidebar.rootNodeRedirectsToNewEntity</source>
|
||||
<target>Root nodes redirect to new entity pages</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="j7HiQ80" name="settings.ips.digikey">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.digikey</source>
|
||||
<target>Digikey</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="_ViyVdh" name="settings.ips.digikey.client_id">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.digikey.client_id</source>
|
||||
<target>Client ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="eB9dDyp" name="settings.ips.digikey.secret">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.digikey.secret</source>
|
||||
<target>Secret</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="5xjmMzf" name="settings.ips.octopart">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.octopart</source>
|
||||
<target>Octopart / Nexar</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="vGv90iO" name="settings.ips.octopart.searchLimit">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.octopart.searchLimit</source>
|
||||
<target>Number of results</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="au4Yeps" name="settings.ips.octopart.searchLimit.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.octopart.searchLimit.help</source>
|
||||
<target>The number of results to get from Octopart while searching (please note that this counts towards your API limits)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Tiqmk.8" name="settings.ips.octopart.onlyAuthorizedSellers">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.octopart.onlyAuthorizedSellers</source>
|
||||
<target>Only authorized sellers</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ECQkeJy" name="settings.ips.octopart.onlyAuthorizedSellers.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.ips.octopart.onlyAuthorizedSellers.help</source>
|
||||
<target>Set to false to include non-authorized offers in the results</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="iRDDtdU" name="settings.misc.exchange_rate">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.misc.exchange_rate</source>
|
||||
<target>Money exchange rates</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0REngfi" name="settings.misc.exchange_rate.fixer_api_key">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.misc.exchange_rate.fixer_api_key</source>
|
||||
<target>Fixer.io API Key</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="COLhoWD" name="settings.misc.exchange_rate.fixer_api_key.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.misc.exchange_rate.fixer_api_key.help</source>
|
||||
<target>If you need exchange rates between non-euro currencies, you can input an API key from fixer.io here.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Ffr5xYM" name="settings.behavior.part_info">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.part_info</source>
|
||||
<target>Part info page</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="weH3j.a" name="settings.behavior.part_info.show_part_image_overlay">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.part_info.show_part_image_overlay</source>
|
||||
<target>Show image overlay</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="SCUs3WS" name="settings.behavior.part_info.show_part_image_overlay.help">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.part_info.show_part_image_overlay.help</source>
|
||||
<target>Show the image overlay with attachment details on hovering over the part image gallery.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ALfPkeR" name="perm.config.change_system_settings">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>perm.config.change_system_settings</source>
|
||||
<target>Change system settings</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="TlHeIjk" name="tree.tools.system.settings">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>tree.tools.system.settings</source>
|
||||
<target>System settings</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="3YsJ4i6" name="settings.tooltip.overrideable_by_env">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.tooltip.overrideable_by_env</source>
|
||||
<target>The value of this parameter can be overridden by setting the environment variable "%env%".</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="boWkQh7" name="settings.flash.saved">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.flash.saved</source>
|
||||
<target>Settings saved successfully.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="tEYWrWD" name="settings.flash.invalid">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>settings.flash.invalid</source>
|
||||
<target>Settings are invalid. Please check your input!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="yRXWSRN" name="info_providers.settings.title">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>info_providers.settings.title</source>
|
||||
<target>Info provider settings</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="VgSodKY" name="form.apikey.redacted">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>form.apikey.redacted</source>
|
||||
<target>Redacted for security reasons</target>
|
||||
</segment>
|
||||
|
||||
@@ -12344,5 +12344,29 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S
|
||||
<target>Ver versión externa</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="X9HUFrv" name="part.table.actions.error">
|
||||
<segment state="translated">
|
||||
<source>part.table.actions.error</source>
|
||||
<target>Han ocurrido %count% errores mientras se ejecutaba la acción:</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id=".ppbsNn" name="part.table.actions.error_detail">
|
||||
<segment state="translated">
|
||||
<source>part.table.actions.error_detail</source>
|
||||
<target>%part_name% (ID: %part_id%): %message%</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="4wpp6h." name="part_list.action.action.change_location">
|
||||
<segment state="translated">
|
||||
<source>part_list.action.action.change_location</source>
|
||||
<target>Cambiar de ubicación (solo para componentes con un único lote)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="9_9I.m4" name="parts.table.action_handler.error.part_lots_multiple">
|
||||
<segment state="translated">
|
||||
<source>parts.table.action_handler.error.part_lots_multiple</source>
|
||||
<target>Este componente contiene más de un stock. Cambie la ubicación manualmente para seleccionar el stock deseado.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -1,17 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="en" trgLang="cs">
|
||||
<file id="security.en">
|
||||
<unit id="aazoCks" name="user.login_error.user_disabled">
|
||||
<unit id="GrLNa9P" name="user.login_error.user_disabled">
|
||||
<segment state="translated">
|
||||
<source>user.login_error.user_disabled</source>
|
||||
<target>Váš účet je deaktivován! Pokud si myslíte, že je to špatně, kontaktujte správce.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Dpb9AmY" name="saml.error.cannot_login_local_user_per_saml">
|
||||
<unit id="IFQ5XrG" name="saml.error.cannot_login_local_user_per_saml">
|
||||
<segment state="translated">
|
||||
<source>saml.error.cannot_login_local_user_per_saml</source>
|
||||
<target>Přes SSO se nelze přihlásit jako místní uživatel! Místo toho použijte heslo místního uživatele.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="wOYPZmb" name="saml.error.cannot_login_saml_user_locally">
|
||||
<segment state="translated">
|
||||
<source>saml.error.cannot_login_saml_user_locally</source>
|
||||
<target>Pro přihlášení jako uživatel SAML nelze použít místní ověření! Místo toho použijte přihlášení SSO.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="en" trgLang="cs">
|
||||
<file id="validators.en">
|
||||
<unit id="xevSdCK" name="part.master_attachment.must_be_picture">
|
||||
<unit id="cRbk.cm" name="part.master_attachment.must_be_picture">
|
||||
<notes>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\Attachments\AttachmentContainingDBElement.php:0</note>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\Attachments\AttachmentType.php:0</note>
|
||||
@@ -42,7 +42,7 @@
|
||||
<target>Příloha náhledu musí být platný obrázek!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="VJHTkxx" name="structural.entity.unique_name">
|
||||
<unit id="v8HkcJB" name="structural.entity.unique_name">
|
||||
<notes>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\Attachments\AttachmentType.php:0</note>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\Base\AbstractCompany.php:0</note>
|
||||
@@ -87,7 +87,7 @@
|
||||
<target>Prvek s tímto názvem již na této úrovni existuje!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="3ODUtpU" name="parameters.validator.min_lesser_typical">
|
||||
<unit id="dW7b2B_" name="parameters.validator.min_lesser_typical">
|
||||
<notes>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\Parameters\AbstractParameter.php:0</note>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0</note>
|
||||
@@ -107,7 +107,7 @@
|
||||
<target>Hodnota musí být menší nebo rovna typické hodnotě ({{ compared_value }}).</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="jDBA_WW" name="parameters.validator.min_lesser_max">
|
||||
<unit id="Yfp2uC5" name="parameters.validator.min_lesser_max">
|
||||
<notes>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\Parameters\AbstractParameter.php:0</note>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0</note>
|
||||
@@ -127,7 +127,7 @@
|
||||
<target>Hodnota musí být menší než maximální hodnota ({{ compared_value }}).</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ygK_e_X" name="parameters.validator.max_greater_typical">
|
||||
<unit id="P6b.8Ou" name="parameters.validator.max_greater_typical">
|
||||
<notes>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\Parameters\AbstractParameter.php:0</note>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\Parameters\AttachmentTypeParameter.php:0</note>
|
||||
@@ -147,7 +147,7 @@
|
||||
<target>Hodnota musí být větší nebo rovna typické hodnotě ({{ compared_value }}).</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="isXL.ie" name="validator.user.username_already_used">
|
||||
<unit id="P41193Y" name="validator.user.username_already_used">
|
||||
<notes>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\UserSystem\User.php:0</note>
|
||||
<note priority="1">Part-DB1\src\Entity\UserSystem\User.php:0</note>
|
||||
@@ -157,7 +157,7 @@
|
||||
<target>Uživatel s tímto jménem již existuje</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="NcM463r" name="user.invalid_username">
|
||||
<unit id="EKPQiyf" name="user.invalid_username">
|
||||
<notes>
|
||||
<note category="file-source" priority="1">Part-DB1\src\Entity\UserSystem\User.php:0</note>
|
||||
<note priority="1">Part-DB1\src\Entity\UserSystem\User.php:0</note>
|
||||
@@ -167,185 +167,203 @@
|
||||
<target>Uživatelské jméno musí obsahovat pouze písmena, číslice, podtržítka, tečky, plusy nebo mínusy!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="lZvhKYu" name="validator.noneofitschild.self">
|
||||
<unit id="_v.DMg." name="validator.noneofitschild.self">
|
||||
<notes>
|
||||
<note category="state" priority="1">obsolete</note>
|
||||
</notes>
|
||||
<segment state="translated">
|
||||
<source>validator.noneofitschild.self</source>
|
||||
<target>Prvek nemůže být svým vlastním rodičem!</target>
|
||||
<target>Prvek nemůže být svým vlastním rodičem.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="pr07aV4" name="validator.noneofitschild.children">
|
||||
<unit id="W90LyFQ" name="validator.noneofitschild.children">
|
||||
<notes>
|
||||
<note category="state" priority="1">obsolete</note>
|
||||
</notes>
|
||||
<segment state="translated">
|
||||
<source>validator.noneofitschild.children</source>
|
||||
<target>Podřízený prvek nemůže být nadřazeným prvkem!</target>
|
||||
<target>Rodič nemůže být jedním ze svých potomků.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ayNr6QK" name="validator.select_valid_category">
|
||||
<unit id="GAUS.LK" name="validator.select_valid_category">
|
||||
<segment state="translated">
|
||||
<source>validator.select_valid_category</source>
|
||||
<target>Vyberte prosím platnou kategorii!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="6vIlN5q" name="validator.part_lot.only_existing">
|
||||
<unit id="h6qELde" name="validator.part_lot.only_existing">
|
||||
<segment state="translated">
|
||||
<source>validator.part_lot.only_existing</source>
|
||||
<target>Do tohoto umístění nelze přidávat nové díly, protože je označeno jako "Pouze existující".</target>
|
||||
<target>Úložiště bylo označeno jako "pouze existující", takže do něj nelze přidat novou část.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="3xoKOIS" name="validator.part_lot.location_full.no_increase">
|
||||
<unit id="Prriyy0" name="validator.part_lot.location_full.no_increase">
|
||||
<segment state="translated">
|
||||
<source>validator.part_lot.location_full.no_increase</source>
|
||||
<target>Místo je obsazeno. Množství nelze navýšit (nová hodnota musí být menší než {{ old_amount }}).</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="R6Ov4Yt" name="validator.part_lot.location_full">
|
||||
<unit id="eeEjB4s" name="validator.part_lot.location_full">
|
||||
<segment state="translated">
|
||||
<source>validator.part_lot.location_full</source>
|
||||
<target>Místo je obsazeno. Nelze do něj přidávat nové díly.</target>
|
||||
<target>Úložiště bylo označeno jako plné, takže do něj nelze přidat nový díl.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="BNQk2e7" name="validator.part_lot.single_part">
|
||||
<unit id="2yWi8eP" name="validator.part_lot.single_part">
|
||||
<segment state="translated">
|
||||
<source>validator.part_lot.single_part</source>
|
||||
<target>Toto umístění může obsahovat pouze jeden díl, takže do něj nelze přídávat další!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="4gPskOG" name="validator.attachment.must_not_be_null">
|
||||
<unit id="A.TFhbb" name="validator.attachment.must_not_be_null">
|
||||
<segment state="translated">
|
||||
<source>validator.attachment.must_not_be_null</source>
|
||||
<target>Musíte vybrat typ přílohy!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="cDDVrWT" name="validator.orderdetail.supplier_must_not_be_null">
|
||||
<unit id=".lqKoij" name="validator.orderdetail.supplier_must_not_be_null">
|
||||
<segment state="translated">
|
||||
<source>validator.orderdetail.supplier_must_not_be_null</source>
|
||||
<target>Musíte si vybrat dodavatele!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="k5DDdB4" name="validator.measurement_unit.use_si_prefix_needs_unit">
|
||||
<unit id="bcNZzK." name="validator.measurement_unit.use_si_prefix_needs_unit">
|
||||
<segment state="translated">
|
||||
<source>validator.measurement_unit.use_si_prefix_needs_unit</source>
|
||||
<target>Chcete-li povolit předpony SI, musíte nastavit symbol jednotky!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="DuzIOCr" name="part.ipn.must_be_unique">
|
||||
<unit id="gZ5FFL1" name="part.ipn.must_be_unique">
|
||||
<segment state="translated">
|
||||
<source>part.ipn.must_be_unique</source>
|
||||
<target>Interní číslo dílu musí být jedinečné. {{ value }} se již používá!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Z4Kuuo2" name="validator.project.bom_entry.name_or_part_needed">
|
||||
<unit id="P31Yg.d" name="validator.project.bom_entry.name_or_part_needed">
|
||||
<segment state="translated">
|
||||
<source>validator.project.bom_entry.name_or_part_needed</source>
|
||||
<target>Musíte vybrat díl pro položku BOM dílu nebo nastavit název pro položku BOM bez dílu.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="WF_v4ih" name="project.bom_entry.name_already_in_bom">
|
||||
<unit id="5CEup_N" name="project.bom_entry.name_already_in_bom">
|
||||
<segment state="translated">
|
||||
<source>project.bom_entry.name_already_in_bom</source>
|
||||
<target>Již existuje položka BOM s tímto názvem!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="5v4p85H" name="project.bom_entry.part_already_in_bom">
|
||||
<unit id="jB3B50E" name="project.bom_entry.part_already_in_bom">
|
||||
<segment state="translated">
|
||||
<source>project.bom_entry.part_already_in_bom</source>
|
||||
<target>Tento díl již existuje v tomto BOM!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="3lM32Tw" name="project.bom_entry.mountnames_quantity_mismatch">
|
||||
<unit id="NdkzP1n" name="project.bom_entry.mountnames_quantity_mismatch">
|
||||
<segment state="translated">
|
||||
<source>project.bom_entry.mountnames_quantity_mismatch</source>
|
||||
<target>Počet názvů sestav musí odpovídat počtu komponent v BOM!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="x47D5WT" name="project.bom_entry.can_not_add_own_builds_part">
|
||||
<unit id="8teRCgR" name="project.bom_entry.can_not_add_own_builds_part">
|
||||
<segment state="translated">
|
||||
<source>project.bom_entry.can_not_add_own_builds_part</source>
|
||||
<target>Seznam BOM projektu nelze přidat do BOM.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="2x2XDI_" name="project.bom_has_to_include_all_subelement_parts">
|
||||
<unit id="asBxPxe" name="project.bom_has_to_include_all_subelement_parts">
|
||||
<segment state="translated">
|
||||
<source>project.bom_has_to_include_all_subelement_parts</source>
|
||||
<target>BOM projektu musí obsahovat všechny výrobní díly dílčích projektů. Díl %part_name% projektu %project_name% chybí!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="U9b1EzD" name="project.bom_entry.price_not_allowed_on_parts">
|
||||
<unit id="uxaE9Ct" name="project.bom_entry.price_not_allowed_on_parts">
|
||||
<segment state="translated">
|
||||
<source>project.bom_entry.price_not_allowed_on_parts</source>
|
||||
<target>U položek komponent BOM nelze nastavit cenu. Zadejte cenu samotného dílu.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ID056SR" name="validator.project_build.lot_bigger_than_needed">
|
||||
<unit id="xZ68Nzl" name="validator.project_build.lot_bigger_than_needed">
|
||||
<segment state="translated">
|
||||
<source>validator.project_build.lot_bigger_than_needed</source>
|
||||
<target>Zvolili jste větší množství pro vychystávání, než je nutné. Odstraňte přebytečné množství</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="6hV5UqD" name="validator.project_build.lot_smaller_than_needed">
|
||||
<unit id="68_.V_X" name="validator.project_build.lot_smaller_than_needed">
|
||||
<segment state="translated">
|
||||
<source>validator.project_build.lot_smaller_than_needed</source>
|
||||
<target>Zvolili jste menší množství k odebrání, než je potřeba pro sestavení! Přidejte další množství.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="G9ZKt.4" name="part.name.must_match_category_regex">
|
||||
<unit id="yZGS8uZ" name="part.name.must_match_category_regex">
|
||||
<segment state="translated">
|
||||
<source>part.name.must_match_category_regex</source>
|
||||
<target>Název komponenty neodpovídá regulárnímu výrazu zadanému pro kategorii: %regex%</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="m8kMFhf" name="validator.attachment.name_not_blank">
|
||||
<unit id="Q8wP5Jd" name="validator.attachment.name_not_blank">
|
||||
<segment state="translated">
|
||||
<source>validator.attachment.name_not_blank</source>
|
||||
<target>Vyberte hodnotu nebo nahrajte soubor, aby se jeho název automaticky použil jako název této přílohy.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="nwGaNBW" name="validator.part_lot.owner_must_match_storage_location_owner">
|
||||
<unit id="DH0IkNR" name="validator.part_lot.owner_must_match_storage_location_owner">
|
||||
<segment state="translated">
|
||||
<source>validator.part_lot.owner_must_match_storage_location_owner</source>
|
||||
<target>Vlastník inventáře této komponenty a vybrané umístění se musí shodovat (%owner_name%)!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="HXSz3nQ" name="validator.part_lot.owner_must_not_be_anonymous">
|
||||
<unit id="TzySicw" name="validator.part_lot.owner_must_not_be_anonymous">
|
||||
<segment state="translated">
|
||||
<source>validator.part_lot.owner_must_not_be_anonymous</source>
|
||||
<target>Vlastníkem nemůže být anonymní uživatel!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="N8aA0Uh" name="validator.part_association.must_set_an_value_if_type_is_other">
|
||||
<unit id="GthNWUb" name="validator.part_association.must_set_an_value_if_type_is_other">
|
||||
<segment state="translated">
|
||||
<source>validator.part_association.must_set_an_value_if_type_is_other</source>
|
||||
<target>Pokud nastavíte typ na "jiný", musíte pro něj nastavit popisnou hodnotu!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="9VYNZ4v" name="validator.part_association.part_cannot_be_associated_with_itself">
|
||||
<unit id="Be4Im81" name="validator.part_association.part_cannot_be_associated_with_itself">
|
||||
<segment state="translated">
|
||||
<source>validator.part_association.part_cannot_be_associated_with_itself</source>
|
||||
<target>Díl nemůže být spojen sám se sebou!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="csc1PNn" name="validator.part_association.already_exists">
|
||||
<unit id="q5Ej6Xm" name="validator.part_association.already_exists">
|
||||
<segment state="translated">
|
||||
<source>validator.part_association.already_exists</source>
|
||||
<target>Asociace s tímto dílem již existuje!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="sfW4NYE" name="validator.part_lot.vendor_barcode_must_be_unique">
|
||||
<unit id="HbI5bga" name="validator.part_lot.vendor_barcode_must_be_unique">
|
||||
<segment state="translated">
|
||||
<source>validator.part_lot.vendor_barcode_must_be_unique</source>
|
||||
<target>Tato hodnota čárového kódu dodavatele již byla použita v jiném inventáře. Čárový kód musí být jedinečný!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="o1qmPUm" name="validator.year_2038_bug_on_32bit">
|
||||
<unit id="ufQJh7E" name="validator.year_2038_bug_on_32bit">
|
||||
<segment state="translated">
|
||||
<source>validator.year_2038_bug_on_32bit</source>
|
||||
<target>Kvůli technickým omezením není možné na 32bitových systémech vybrat datumpo 19.1.2038!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="89nojXY" name="validator.fileSize.invalidFormat">
|
||||
<segment state="translated">
|
||||
<source>validator.fileSize.invalidFormat</source>
|
||||
<target>Neplatný formát velikosti souboru. Použijte celé číslo a jako příponu K, M, G pro kilobajty, megabajty nebo gigabajty.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="iXcU7ce" name="validator.invalid_range">
|
||||
<segment state="translated">
|
||||
<source>validator.invalid_range</source>
|
||||
<target>Zadaný rozsah není platný!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="m4gp2P_" name="validator.google_code.wrong_code">
|
||||
<segment state="translated">
|
||||
<source>validator.google_code.wrong_code</source>
|
||||
<target>Neplatný kód. Zkontrolujte, zda je vaše ověřovací aplikace správně nastavena a zda je čas správně nastaven jak na serveru, tak na ověřovacím zařízení.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -347,7 +347,13 @@
|
||||
<target>Aufgrund technischer Beschränkungen ist es nicht möglich, ein Datum nach dem 19.01.2038 auf 32-Bit Systemen auszuwählen!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ZFxQ0BZ" name="validator.invalid_range">
|
||||
<unit id="89nojXY" name="validator.fileSize.invalidFormat">
|
||||
<segment state="translated">
|
||||
<source>validator.fileSize.invalidFormat</source>
|
||||
<target>Ungültige Angabe für die Dateigröße. Verwenden Sie eine ganze Zahl mit K, M, G als Suffix für Kilo, Mega oder Gigabytes.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="iXcU7ce" name="validator.invalid_range">
|
||||
<segment state="translated">
|
||||
<source>validator.invalid_range</source>
|
||||
<target>Der gegebene Bereich ist nicht gültig!</target>
|
||||
|
||||
@@ -348,13 +348,13 @@
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="89nojXY" name="validator.fileSize.invalidFormat">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>validator.fileSize.invalidFormat</source>
|
||||
<target>Invalid file size format. Use an integer number plus K, M, G as suffix for Kilo, Mega or Gigabytes.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="iXcU7ce" name="validator.invalid_range">
|
||||
<segment>
|
||||
<segment state="translated">
|
||||
<source>validator.invalid_range</source>
|
||||
<target>The given range is not valid!</target>
|
||||
</segment>
|
||||
|
||||
Reference in New Issue
Block a user