diff --git a/.github/workflows/assets_artifact_build.yml b/.github/workflows/assets_artifact_build.yml index a74ae7cc..5da304ec 100644 --- a/.github/workflows/assets_artifact_build.yml +++ b/.github/workflows/assets_artifact_build.yml @@ -27,7 +27,7 @@ jobs: APP_ENV: prod steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml index 210dbc18..d1f53c38 100644 --- a/.github/workflows/docker_build.yml +++ b/.github/workflows/docker_build.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Docker meta id: docker_meta diff --git a/.github/workflows/docker_frankenphp.yml b/.github/workflows/docker_frankenphp.yml index 36ec322d..fc69b29b 100644 --- a/.github/workflows/docker_frankenphp.yml +++ b/.github/workflows/docker_frankenphp.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Docker meta id: docker_meta diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml index f47ce87b..cbc42d27 100644 --- a/.github/workflows/static_analysis.yml +++ b/.github/workflows/static_analysis.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 27dfe173..66086104 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -46,7 +46,7 @@ jobs: if: matrix.db-type == 'postgres' - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/VERSION b/VERSION index ccc99d02..94f15e9c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.12.3 +2.13.1 diff --git a/composer.lock b/composer.lock index ca50c2c6..dc8dc699 100644 --- a/composer.lock +++ b/composer.lock @@ -615,16 +615,16 @@ }, { "name": "amphp/pipeline", - "version": "v1.2.4", + "version": "v1.2.5", "source": { "type": "git", "url": "https://github.com/amphp/pipeline.git", - "reference": "a044733e080940d1483f56caff0c412ad6982776" + "reference": "92f121dde31cd1d89d5d0f9eba64ac40271b236e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/pipeline/zipball/a044733e080940d1483f56caff0c412ad6982776", - "reference": "a044733e080940d1483f56caff0c412ad6982776", + "url": "https://api.github.com/repos/amphp/pipeline/zipball/92f121dde31cd1d89d5d0f9eba64ac40271b236e", + "reference": "92f121dde31cd1d89d5d0f9eba64ac40271b236e", "shasum": "" }, "require": { @@ -670,7 +670,7 @@ ], "support": { "issues": "https://github.com/amphp/pipeline/issues", - "source": "https://github.com/amphp/pipeline/tree/v1.2.4" + "source": "https://github.com/amphp/pipeline/tree/v1.2.5" }, "funding": [ { @@ -678,7 +678,7 @@ "type": "github" } ], - "time": "2026-05-06T05:37:57+00:00" + "time": "2026-06-27T14:17:20+00:00" }, { "name": "amphp/process", @@ -976,7 +976,7 @@ }, { "name": "api-platform/doctrine-common", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", @@ -1060,13 +1060,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.3.14" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.3.15" }, "time": "2026-06-16T14:59:18+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", @@ -1149,13 +1149,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.3.14" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.3.15" }, "time": "2026-06-16T13:14:05+00:00" }, { "name": "api-platform/documentation", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", @@ -1212,13 +1212,13 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.3.14" + "source": "https://github.com/api-platform/documentation/tree/v4.4.0-alpha.1" }, "time": "2026-04-30T12:21:24+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", @@ -1292,22 +1292,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.3.14" + "source": "https://github.com/api-platform/http-cache/tree/v4.4.0-alpha.1" }, "time": "2026-06-09T14:20:49+00:00" }, { "name": "api-platform/hydra", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", - "reference": "c9c53cfc9cdf9a2b8499d49dc70cf3ea9dbf8463" + "reference": "2570883edf78970ad845f6eb7d69ae7894e6c480" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/hydra/zipball/c9c53cfc9cdf9a2b8499d49dc70cf3ea9dbf8463", - "reference": "c9c53cfc9cdf9a2b8499d49dc70cf3ea9dbf8463", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/2570883edf78970ad845f6eb7d69ae7894e6c480", + "reference": "2570883edf78970ad845f6eb7d69ae7894e6c480", "shasum": "" }, "require": { @@ -1379,13 +1379,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.3.14" + "source": "https://github.com/api-platform/hydra/tree/v4.3.15" }, - "time": "2026-06-13T05:11:46+00:00" + "time": "2026-06-22T16:14:53+00:00" }, { "name": "api-platform/json-api", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", @@ -1461,13 +1461,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.3.14" + "source": "https://github.com/api-platform/json-api/tree/v4.3.15" }, "time": "2026-06-17T18:14:46+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", @@ -1542,13 +1542,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.3.14" + "source": "https://github.com/api-platform/json-schema/tree/v4.4.0-alpha.1" }, "time": "2026-06-13T05:06:55+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", @@ -1622,13 +1622,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.3.14" + "source": "https://github.com/api-platform/jsonld/tree/v4.3.15" }, "time": "2026-06-13T05:11:46+00:00" }, { "name": "api-platform/metadata", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", @@ -1720,13 +1720,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.3.14" + "source": "https://github.com/api-platform/metadata/tree/v4.3.15" }, "time": "2026-06-13T05:03:21+00:00" }, { "name": "api-platform/openapi", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", @@ -1811,22 +1811,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.3.14" + "source": "https://github.com/api-platform/openapi/tree/v4.3.15" }, "time": "2026-06-16T10:01:53+00:00" }, { "name": "api-platform/serializer", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", - "reference": "8a6e6a719a401be470b958ba1ae63f4eb0b22992" + "reference": "4c8f7507a13f8a9c0cace60efc245fece2259233" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/serializer/zipball/8a6e6a719a401be470b958ba1ae63f4eb0b22992", - "reference": "8a6e6a719a401be470b958ba1ae63f4eb0b22992", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/4c8f7507a13f8a9c0cace60efc245fece2259233", + "reference": "4c8f7507a13f8a9c0cace60efc245fece2259233", "shasum": "" }, "require": { @@ -1905,13 +1905,13 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.3.14" + "source": "https://github.com/api-platform/serializer/tree/v4.3.15" }, - "time": "2026-06-19T08:12:49+00:00" + "time": "2026-06-26T09:59:36+00:00" }, { "name": "api-platform/state", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", @@ -2002,13 +2002,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.3.14" + "source": "https://github.com/api-platform/state/tree/v4.3.15" }, "time": "2026-06-13T05:11:46+00:00" }, { "name": "api-platform/symfony", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", @@ -2131,13 +2131,13 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.3.14" + "source": "https://github.com/api-platform/symfony/tree/v4.3.15" }, "time": "2026-06-17T18:14:46+00:00" }, { "name": "api-platform/validator", - "version": "v4.3.14", + "version": "v4.3.15", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", @@ -2207,7 +2207,7 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.3.14" + "source": "https://github.com/api-platform/validator/tree/v4.3.15" }, "time": "2026-05-07T11:45:31+00:00" }, @@ -4635,26 +4635,26 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.12.1", + "version": "7.12.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "d34627490fbc03bf5c5d7cfed81f2faa19519425" + "reference": "9aa17bcdd777ee31df9fc83c337ca4ca2340def3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d34627490fbc03bf5c5d7cfed81f2faa19519425", - "reference": "d34627490fbc03bf5c5d7cfed81f2faa19519425", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9aa17bcdd777ee31df9fc83c337ca4ca2340def3", + "reference": "9aa17bcdd777ee31df9fc83c337ca4ca2340def3", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^2.5", - "guzzlehttp/psr7": "^2.12.1", + "guzzlehttp/psr7": "^2.12.3", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.5 || ^3.0", - "symfony/polyfill-php80": "^1.24" + "symfony/polyfill-php80": "^1.25" }, "provide": { "psr/http-client-implementation": "1.0" @@ -4743,7 +4743,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.12.1" + "source": "https://github.com/guzzle/guzzle/tree/7.12.3" }, "funding": [ { @@ -4759,7 +4759,7 @@ "type": "tidelift" } ], - "time": "2026-06-18T14:12:49+00:00" + "time": "2026-06-23T15:29:02+00:00" }, { "name": "guzzlehttp/promises", @@ -4847,16 +4847,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.12.1", + "version": "2.12.3", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "172ef2f4e9824c1e058b7f30be8ae25a02c0f2b7" + "reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/172ef2f4e9824c1e058b7f30be8ae25a02c0f2b7", - "reference": "172ef2f4e9824c1e058b7f30be8ae25a02c0f2b7", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/7ec62dc3f44aa218487dbed81a9bf9bc647be55d", + "reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d", "shasum": "" }, "require": { @@ -4865,7 +4865,7 @@ "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0", "symfony/deprecation-contracts": "^2.5 || ^3.0", - "symfony/polyfill-php80": "^1.24" + "symfony/polyfill-php80": "^1.25" }, "provide": { "psr/http-factory-implementation": "1.0", @@ -4946,7 +4946,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.12.1" + "source": "https://github.com/guzzle/psr7/tree/2.12.3" }, "funding": [ { @@ -4962,7 +4962,7 @@ "type": "tidelift" } ], - "time": "2026-06-18T09:49:37+00:00" + "time": "2026-06-23T15:21:08+00:00" }, { "name": "hshn/base64-encoded-file", @@ -5362,16 +5362,16 @@ }, { "name": "jfcherng/php-diff", - "version": "6.16.2", + "version": "6.16.3", "source": { "type": "git", "url": "https://github.com/jfcherng/php-diff.git", - "reference": "7f46bcfc582e81769237d0b3f6b8a548efe8799d" + "reference": "6d7332b6080cdd50011a364b58f24c8d0cdeb5da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jfcherng/php-diff/zipball/7f46bcfc582e81769237d0b3f6b8a548efe8799d", - "reference": "7f46bcfc582e81769237d0b3f6b8a548efe8799d", + "url": "https://api.github.com/repos/jfcherng/php-diff/zipball/6d7332b6080cdd50011a364b58f24c8d0cdeb5da", + "reference": "6d7332b6080cdd50011a364b58f24c8d0cdeb5da", "shasum": "" }, "require": { @@ -5416,7 +5416,7 @@ ], "support": { "issues": "https://github.com/jfcherng/php-diff/issues", - "source": "https://github.com/jfcherng/php-diff/tree/6.16.2" + "source": "https://github.com/jfcherng/php-diff/tree/6.16.3" }, "funding": [ { @@ -5424,7 +5424,7 @@ "type": "custom" } ], - "time": "2024-03-10T17:40:29+00:00" + "time": "2026-06-22T13:08:56+00:00" }, { "name": "jfcherng/php-mb-string", @@ -7006,16 +7006,16 @@ }, { "name": "masterminds/html5", - "version": "2.10.0", + "version": "2.10.1", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "fcf91eb64359852f00d921887b219479b4f21251" + "reference": "fd5018f6815fff903946d0564977b44ce8010e29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251", - "reference": "fcf91eb64359852f00d921887b219479b4f21251", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fd5018f6815fff903946d0564977b44ce8010e29", + "reference": "fd5018f6815fff903946d0564977b44ce8010e29", "shasum": "" }, "require": { @@ -7023,7 +7023,7 @@ "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9 || ^10" }, "type": "library", "extra": { @@ -7067,9 +7067,9 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.10.0" + "source": "https://github.com/Masterminds/html5-php/tree/2.10.1" }, - "time": "2025-07-25T09:04:22+00:00" + "time": "2026-06-23T18:43:15+00:00" }, { "name": "mf2/mf2", @@ -11467,16 +11467,16 @@ }, { "name": "symfony/cache", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "4c09e18a92cce126cc0d1155825279fca8cd0673" + "reference": "9adfcb2a7fc3924473b09f5a0b058dcc2cc7be9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/4c09e18a92cce126cc0d1155825279fca8cd0673", - "reference": "4c09e18a92cce126cc0d1155825279fca8cd0673", + "url": "https://api.github.com/repos/symfony/cache/zipball/9adfcb2a7fc3924473b09f5a0b058dcc2cc7be9a", + "reference": "9adfcb2a7fc3924473b09f5a0b058dcc2cc7be9a", "shasum": "" }, "require": { @@ -11547,7 +11547,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.4.13" + "source": "https://github.com/symfony/cache/tree/v7.4.14" }, "funding": [ { @@ -11567,20 +11567,20 @@ "type": "tidelift" } ], - "time": "2026-05-24T08:43:14+00:00" + "time": "2026-06-17T14:44:48+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.7.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "225e8a254166bd3442e370c6f50145465db63831" + "reference": "9789738bc19af1106dc54d6afba9a0b467516cf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/225e8a254166bd3442e370c6f50145465db63831", - "reference": "225e8a254166bd3442e370c6f50145465db63831", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/9789738bc19af1106dc54d6afba9a0b467516cf2", + "reference": "9789738bc19af1106dc54d6afba9a0b467516cf2", "shasum": "" }, "require": { @@ -11627,7 +11627,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.7.1" }, "funding": [ { @@ -11647,7 +11647,7 @@ "type": "tidelift" } ], - "time": "2026-05-05T15:33:14+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { "name": "symfony/clock", @@ -11729,16 +11729,16 @@ }, { "name": "symfony/config", - "version": "v7.4.10", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57" + "reference": "7b665e443381ea7c4db03eb03b4bf79ea2b020eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", - "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", + "url": "https://api.github.com/repos/symfony/config/zipball/7b665e443381ea7c4db03eb03b4bf79ea2b020eb", + "reference": "7b665e443381ea7c4db03eb03b4bf79ea2b020eb", "shasum": "" }, "require": { @@ -11784,7 +11784,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.4.10" + "source": "https://github.com/symfony/config/tree/v7.4.14" }, "funding": [ { @@ -11804,20 +11804,20 @@ "type": "tidelift" } ], - "time": "2026-05-03T14:20:49+00:00" + "time": "2026-06-09T07:51:57+00:00" }, { "name": "symfony/console", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217" + "reference": "92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/85095d2573eaefaf35e40b9513a9bf09f72cd217", - "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217", + "url": "https://api.github.com/repos/symfony/console/zipball/92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87", + "reference": "92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87", "shasum": "" }, "require": { @@ -11882,7 +11882,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.13" + "source": "https://github.com/symfony/console/tree/v7.4.14" }, "funding": [ { @@ -11902,7 +11902,7 @@ "type": "tidelift" } ], - "time": "2026-05-24T08:56:14+00:00" + "time": "2026-06-16T11:50:14+00:00" }, { "name": "symfony/css-selector", @@ -11975,16 +11975,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f299e20ce983be6c0744952533c6dfeaaa1448e2" + "reference": "2c8c64a33e2e6911579e1ff79a8e06c27d48d402" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f299e20ce983be6c0744952533c6dfeaaa1448e2", - "reference": "f299e20ce983be6c0744952533c6dfeaaa1448e2", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/2c8c64a33e2e6911579e1ff79a8e06c27d48d402", + "reference": "2c8c64a33e2e6911579e1ff79a8e06c27d48d402", "shasum": "" }, "require": { @@ -12035,7 +12035,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.4.13" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.14" }, "funding": [ { @@ -12055,20 +12055,20 @@ "type": "tidelift" } ], - "time": "2026-05-20T14:07:29+00:00" + "time": "2026-06-24T07:41:05+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.7.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b" + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/50f59d1f3ca46d41ac911f97a78626b6756af35b", - "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/f3202fa1b5097b0af062dc978b32ecf63404e31d", + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d", "shasum": "" }, "require": { @@ -12106,7 +12106,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.1" }, "funding": [ { @@ -12126,20 +12126,20 @@ "type": "tidelift" } ], - "time": "2026-04-13T15:52:40+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v7.4.9", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "7a87c85853f3069e3657a823c62b02952de46b0a" + "reference": "f65262a834d1117617d6e072cb180a0b79428789" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7a87c85853f3069e3657a823c62b02952de46b0a", - "reference": "7a87c85853f3069e3657a823c62b02952de46b0a", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/f65262a834d1117617d6e072cb180a0b79428789", + "reference": "f65262a834d1117617d6e072cb180a0b79428789", "shasum": "" }, "require": { @@ -12219,7 +12219,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.9" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.14" }, "funding": [ { @@ -12239,7 +12239,7 @@ "type": "tidelift" } ], - "time": "2026-04-29T14:19:39+00:00" + "time": "2026-06-11T07:31:44+00:00" }, { "name": "symfony/dom-crawler", @@ -12315,16 +12315,16 @@ }, { "name": "symfony/dotenv", - "version": "v7.4.11", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "82e9b1355c68ef7b96397dbd34cc75a92eebae7c" + "reference": "9b9c7a00e565238857eea0040dc9745e3576402e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/82e9b1355c68ef7b96397dbd34cc75a92eebae7c", - "reference": "82e9b1355c68ef7b96397dbd34cc75a92eebae7c", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/9b9c7a00e565238857eea0040dc9745e3576402e", + "reference": "9b9c7a00e565238857eea0040dc9745e3576402e", "shasum": "" }, "require": { @@ -12369,7 +12369,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v7.4.11" + "source": "https://github.com/symfony/dotenv/tree/v7.4.14" }, "funding": [ { @@ -12389,20 +12389,20 @@ "type": "tidelift" } ], - "time": "2026-05-11T13:02:51+00:00" + "time": "2026-06-05T06:22:21+00:00" }, { "name": "symfony/error-handler", - "version": "v7.4.8", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa" + "reference": "4e1a093b481f323e6e326451f9760c3868430673" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", - "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/4e1a093b481f323e6e326451f9760c3868430673", + "reference": "4e1a093b481f323e6e326451f9760c3868430673", "shasum": "" }, "require": { @@ -12451,7 +12451,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.4.8" + "source": "https://github.com/symfony/error-handler/tree/v7.4.14" }, "funding": [ { @@ -12471,20 +12471,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-06-05T06:22:21+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.4.9", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "e4a2e29753c7801f7a8340e066cfa788f3bc8101" + "reference": "51fe3d170227be8d1772214b82ae506e15ed78ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e4a2e29753c7801f7a8340e066cfa788f3bc8101", - "reference": "e4a2e29753c7801f7a8340e066cfa788f3bc8101", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/51fe3d170227be8d1772214b82ae506e15ed78ff", + "reference": "51fe3d170227be8d1772214b82ae506e15ed78ff", "shasum": "" }, "require": { @@ -12536,7 +12536,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.9" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.14" }, "funding": [ { @@ -12556,20 +12556,20 @@ "type": "tidelift" } ], - "time": "2026-04-18T13:18:21+00:00" + "time": "2026-06-06T11:10:32+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.7.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "ccba7060602b7fed0b03c85bf025257f76d9ef32" + "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/ccba7060602b7fed0b03c85bf025257f76d9ef32", - "reference": "ccba7060602b7fed0b03c85bf025257f76d9ef32", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c7de7a00ffb67842132da02ea92988a39ccd9f4e", + "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e", "shasum": "" }, "require": { @@ -12616,7 +12616,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.7.1" }, "funding": [ { @@ -12636,20 +12636,20 @@ "type": "tidelift" } ], - "time": "2026-01-05T13:30:16+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { "name": "symfony/expression-language", - "version": "v7.4.8", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "87ff95687748f4af65e4d5a6e917d448ec52aa83" + "reference": "bd5763f92959201816ecc31defdf352d2ea473be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/87ff95687748f4af65e4d5a6e917d448ec52aa83", - "reference": "87ff95687748f4af65e4d5a6e917d448ec52aa83", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/bd5763f92959201816ecc31defdf352d2ea473be", + "reference": "bd5763f92959201816ecc31defdf352d2ea473be", "shasum": "" }, "require": { @@ -12684,7 +12684,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.4.8" + "source": "https://github.com/symfony/expression-language/tree/v7.4.14" }, "funding": [ { @@ -12704,7 +12704,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-06-08T20:24:16+00:00" }, { "name": "symfony/filesystem", @@ -12778,16 +12778,16 @@ }, { "name": "symfony/finder", - "version": "v7.4.8", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "e0be088d22278583a82da281886e8c3592fbf149" + "reference": "13b38720174286f55d1761152b575a8d1436fc25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/e0be088d22278583a82da281886e8c3592fbf149", - "reference": "e0be088d22278583a82da281886e8c3592fbf149", + "url": "https://api.github.com/repos/symfony/finder/zipball/13b38720174286f55d1761152b575a8d1436fc25", + "reference": "13b38720174286f55d1761152b575a8d1436fc25", "shasum": "" }, "require": { @@ -12822,7 +12822,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.8" + "source": "https://github.com/symfony/finder/tree/v7.4.14" }, "funding": [ { @@ -12842,7 +12842,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-06-27T08:31:18+00:00" }, { "name": "symfony/flex", @@ -12919,16 +12919,16 @@ }, { "name": "symfony/form", - "version": "v7.4.9", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "b6c107af659106abec1771d9d7d22da528644d3a" + "reference": "355e9567b60254deef62392829a1784e66322041" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/b6c107af659106abec1771d9d7d22da528644d3a", - "reference": "b6c107af659106abec1771d9d7d22da528644d3a", + "url": "https://api.github.com/repos/symfony/form/zipball/355e9567b60254deef62392829a1784e66322041", + "reference": "355e9567b60254deef62392829a1784e66322041", "shasum": "" }, "require": { @@ -12998,7 +12998,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.4.9" + "source": "https://github.com/symfony/form/tree/v7.4.14" }, "funding": [ { @@ -13018,20 +13018,20 @@ "type": "tidelift" } ], - "time": "2026-04-29T14:39:19+00:00" + "time": "2026-06-16T15:54:05+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "8be39c7bf9e6f58fe49c07927572a9df7c961c95" + "reference": "4d11fd50d0a3d2c43b400154ad7ec35b84ea3e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/8be39c7bf9e6f58fe49c07927572a9df7c961c95", - "reference": "8be39c7bf9e6f58fe49c07927572a9df7c961c95", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/4d11fd50d0a3d2c43b400154ad7ec35b84ea3e5b", + "reference": "4d11fd50d0a3d2c43b400154ad7ec35b84ea3e5b", "shasum": "" }, "require": { @@ -13081,7 +13081,7 @@ "symfony/twig-bundle": "<6.4", "symfony/validator": "<6.4", "symfony/web-profiler-bundle": "<6.4", - "symfony/webhook": "<7.2", + "symfony/webhook": "<7.4", "symfony/workflow": "<7.4" }, "require-dev": { @@ -13125,7 +13125,7 @@ "symfony/uid": "^6.4|^7.0|^8.0", "symfony/validator": "^7.4|^8.0", "symfony/web-link": "^6.4|^7.0|^8.0", - "symfony/webhook": "^7.2|^8.0", + "symfony/webhook": "^7.4|^8.0", "symfony/workflow": "^7.4|^8.0", "symfony/yaml": "^7.3|^8.0", "twig/twig": "^3.12" @@ -13156,7 +13156,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v7.4.13" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.14" }, "funding": [ { @@ -13176,20 +13176,20 @@ "type": "tidelift" } ], - "time": "2026-05-23T18:04:28+00:00" + "time": "2026-06-27T08:31:38+00:00" }, { "name": "symfony/html-sanitizer", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/html-sanitizer.git", - "reference": "761f6c49dfd103ee08b3cd09ece588b069e18ec9" + "reference": "c328df69f5b6f44a0d031d757903d955bebb23b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/761f6c49dfd103ee08b3cd09ece588b069e18ec9", - "reference": "761f6c49dfd103ee08b3cd09ece588b069e18ec9", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/c328df69f5b6f44a0d031d757903d955bebb23b3", + "reference": "c328df69f5b6f44a0d031d757903d955bebb23b3", "shasum": "" }, "require": { @@ -13230,7 +13230,7 @@ "sanitizer" ], "support": { - "source": "https://github.com/symfony/html-sanitizer/tree/v7.4.13" + "source": "https://github.com/symfony/html-sanitizer/tree/v7.4.14" }, "funding": [ { @@ -13250,20 +13250,20 @@ "type": "tidelift" } ], - "time": "2026-05-24T11:20:33+00:00" + "time": "2026-06-06T11:10:32+00:00" }, { "name": "symfony/http-client", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "e8a112b8415707265a7e614278136a9d92989a6a" + "reference": "f6bc6b5a54ff5afac4725cacec9bf2f52eb15920" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/e8a112b8415707265a7e614278136a9d92989a6a", - "reference": "e8a112b8415707265a7e614278136a9d92989a6a", + "url": "https://api.github.com/repos/symfony/http-client/zipball/f6bc6b5a54ff5afac4725cacec9bf2f52eb15920", + "reference": "f6bc6b5a54ff5afac4725cacec9bf2f52eb15920", "shasum": "" }, "require": { @@ -13331,7 +13331,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.4.13" + "source": "https://github.com/symfony/http-client/tree/v7.4.14" }, "funding": [ { @@ -13351,20 +13351,20 @@ "type": "tidelift" } ], - "time": "2026-05-24T09:57:54+00:00" + "time": "2026-06-16T11:50:14+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.7.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "4a2d00c37651c0bdc2b9e1c773487a8bf4edb12d" + "reference": "41fc42d276aeff21192465331ebbab7d83a743c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/4a2d00c37651c0bdc2b9e1c773487a8bf4edb12d", - "reference": "4a2d00c37651c0bdc2b9e1c773487a8bf4edb12d", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41fc42d276aeff21192465331ebbab7d83a743c0", + "reference": "41fc42d276aeff21192465331ebbab7d83a743c0", "shasum": "" }, "require": { @@ -13413,7 +13413,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.7.1" }, "funding": [ { @@ -13433,20 +13433,20 @@ "type": "tidelift" } ], - "time": "2026-03-06T13:17:50+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "bc354f47c62301e990b7874fa662326368508e2c" + "reference": "06db5ae1552177bf8572f8908839f12e3c06aed3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/bc354f47c62301e990b7874fa662326368508e2c", - "reference": "bc354f47c62301e990b7874fa662326368508e2c", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/06db5ae1552177bf8572f8908839f12e3c06aed3", + "reference": "06db5ae1552177bf8572f8908839f12e3c06aed3", "shasum": "" }, "require": { @@ -13495,7 +13495,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.13" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.14" }, "funding": [ { @@ -13515,20 +13515,20 @@ "type": "tidelift" } ], - "time": "2026-05-24T11:20:33+00:00" + "time": "2026-06-11T07:31:44+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "9df847980c436451f4f51d1284491bb4356dd989" + "reference": "e99af79b1e776646eda0e1c23b7b45c184ff99be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9df847980c436451f4f51d1284491bb4356dd989", - "reference": "9df847980c436451f4f51d1284491bb4356dd989", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e99af79b1e776646eda0e1c23b7b45c184ff99be", + "reference": "e99af79b1e776646eda0e1c23b7b45c184ff99be", "shasum": "" }, "require": { @@ -13614,7 +13614,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.4.13" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.14" }, "funding": [ { @@ -13634,20 +13634,20 @@ "type": "tidelift" } ], - "time": "2026-05-27T08:31:43+00:00" + "time": "2026-06-27T09:14:35+00:00" }, { "name": "symfony/intl", - "version": "v7.4.8", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "7cfb7792d580dea833647420afd5f2f98df8457b" + "reference": "02d77a81a198788444a8371658ef98e2e20c8c2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/7cfb7792d580dea833647420afd5f2f98df8457b", - "reference": "7cfb7792d580dea833647420afd5f2f98df8457b", + "url": "https://api.github.com/repos/symfony/intl/zipball/02d77a81a198788444a8371658ef98e2e20c8c2b", + "reference": "02d77a81a198788444a8371658ef98e2e20c8c2b", "shasum": "" }, "require": { @@ -13704,7 +13704,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.4.8" + "source": "https://github.com/symfony/intl/tree/v7.4.14" }, "funding": [ { @@ -13724,20 +13724,20 @@ "type": "tidelift" } ], - "time": "2026-03-30T12:55:43+00:00" + "time": "2026-06-05T06:22:21+00:00" }, { "name": "symfony/mailer", - "version": "v7.4.12", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "5cefb712a25f320579615ba9e1942abaeade7dff" + "reference": "f88ce03ae73e3edb5c176ce1f337709996e88495" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/5cefb712a25f320579615ba9e1942abaeade7dff", - "reference": "5cefb712a25f320579615ba9e1942abaeade7dff", + "url": "https://api.github.com/repos/symfony/mailer/zipball/f88ce03ae73e3edb5c176ce1f337709996e88495", + "reference": "f88ce03ae73e3edb5c176ce1f337709996e88495", "shasum": "" }, "require": { @@ -13788,7 +13788,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.12" + "source": "https://github.com/symfony/mailer/tree/v7.4.14" }, "funding": [ { @@ -13808,7 +13808,7 @@ "type": "tidelift" } ], - "time": "2026-05-20T07:20:23+00:00" + "time": "2026-06-13T08:51:35+00:00" }, { "name": "symfony/mime", @@ -15282,16 +15282,16 @@ }, { "name": "symfony/rate-limiter", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/rate-limiter.git", - "reference": "8b162768544e5a8895c52161d63c999aca91f4a9" + "reference": "5c0af3fdc93e6115d9b806a6ea73e7de040e711d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/8b162768544e5a8895c52161d63c999aca91f4a9", - "reference": "8b162768544e5a8895c52161d63c999aca91f4a9", + "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/5c0af3fdc93e6115d9b806a6ea73e7de040e711d", + "reference": "5c0af3fdc93e6115d9b806a6ea73e7de040e711d", "shasum": "" }, "require": { @@ -15332,7 +15332,7 @@ "rate-limiter" ], "support": { - "source": "https://github.com/symfony/rate-limiter/tree/v7.4.13" + "source": "https://github.com/symfony/rate-limiter/tree/v7.4.14" }, "funding": [ { @@ -15352,7 +15352,7 @@ "type": "tidelift" } ], - "time": "2026-05-23T16:05:06+00:00" + "time": "2026-06-08T20:24:16+00:00" }, { "name": "symfony/routing", @@ -15441,16 +15441,16 @@ }, { "name": "symfony/runtime", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "1a24cf8aab3a9378117718b35525c4126ad3adec" + "reference": "15497f743dd714f3167cb6a56509b9d42e6417b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/1a24cf8aab3a9378117718b35525c4126ad3adec", - "reference": "1a24cf8aab3a9378117718b35525c4126ad3adec", + "url": "https://api.github.com/repos/symfony/runtime/zipball/15497f743dd714f3167cb6a56509b9d42e6417b3", + "reference": "15497f743dd714f3167cb6a56509b9d42e6417b3", "shasum": "" }, "require": { @@ -15458,7 +15458,8 @@ "php": ">=8.2" }, "conflict": { - "symfony/dotenv": "<6.4" + "symfony/dotenv": "<6.4", + "symfony/http-foundation": "<6.4" }, "require-dev": { "composer/composer": "^2.6", @@ -15501,7 +15502,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.4.13" + "source": "https://github.com/symfony/runtime/tree/v7.4.14" }, "funding": [ { @@ -15521,20 +15522,20 @@ "type": "tidelift" } ], - "time": "2026-05-23T18:04:28+00:00" + "time": "2026-06-05T06:22:21+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "0cbc6528aa583795ab44e43b4e92a09acf927c6f" + "reference": "6ec147e67262c6f5ac5dbb8b2ccbb34af14c4d79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/0cbc6528aa583795ab44e43b4e92a09acf927c6f", - "reference": "0cbc6528aa583795ab44e43b4e92a09acf927c6f", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6ec147e67262c6f5ac5dbb8b2ccbb34af14c4d79", + "reference": "6ec147e67262c6f5ac5dbb8b2ccbb34af14c4d79", "shasum": "" }, "require": { @@ -15613,7 +15614,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v7.4.13" + "source": "https://github.com/symfony/security-bundle/tree/v7.4.14" }, "funding": [ { @@ -15633,20 +15634,20 @@ "type": "tidelift" } ], - "time": "2026-05-23T16:05:06+00:00" + "time": "2026-06-16T15:54:05+00:00" }, { "name": "symfony/security-core", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "25db686fcf2a3fe00e1cf6dcab1fcb7aac71ba9b" + "reference": "880bb18eff6188d55115e795f06e4185373c35fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/25db686fcf2a3fe00e1cf6dcab1fcb7aac71ba9b", - "reference": "25db686fcf2a3fe00e1cf6dcab1fcb7aac71ba9b", + "url": "https://api.github.com/repos/symfony/security-core/zipball/880bb18eff6188d55115e795f06e4185373c35fd", + "reference": "880bb18eff6188d55115e795f06e4185373c35fd", "shasum": "" }, "require": { @@ -15704,7 +15705,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.4.13" + "source": "https://github.com/symfony/security-core/tree/v7.4.14" }, "funding": [ { @@ -15724,7 +15725,7 @@ "type": "tidelift" } ], - "time": "2026-05-23T16:05:06+00:00" + "time": "2026-06-09T07:51:57+00:00" }, { "name": "symfony/security-csrf", @@ -15802,16 +15803,16 @@ }, { "name": "symfony/security-http", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "da3c28025a664e6a88e1af104a74457d99301161" + "reference": "148e038b91c8cc3e42aee177f8b0117437077c9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/da3c28025a664e6a88e1af104a74457d99301161", - "reference": "da3c28025a664e6a88e1af104a74457d99301161", + "url": "https://api.github.com/repos/symfony/security-http/zipball/148e038b91c8cc3e42aee177f8b0117437077c9b", + "reference": "148e038b91c8cc3e42aee177f8b0117437077c9b", "shasum": "" }, "require": { @@ -15870,7 +15871,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.4.13" + "source": "https://github.com/symfony/security-http/tree/v7.4.14" }, "funding": [ { @@ -15890,20 +15891,20 @@ "type": "tidelift" } ], - "time": "2026-05-25T06:06:12+00:00" + "time": "2026-06-19T08:40:54+00:00" }, { "name": "symfony/serializer", - "version": "v7.4.10", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "268c5aa6c4bd675eddd89348e7ecac292a843ddd" + "reference": "55acb01b9c8a5211dfbaf68c314d90d0ed2cc3d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/268c5aa6c4bd675eddd89348e7ecac292a843ddd", - "reference": "268c5aa6c4bd675eddd89348e7ecac292a843ddd", + "url": "https://api.github.com/repos/symfony/serializer/zipball/55acb01b9c8a5211dfbaf68c314d90d0ed2cc3d1", + "reference": "55acb01b9c8a5211dfbaf68c314d90d0ed2cc3d1", "shasum": "" }, "require": { @@ -15974,7 +15975,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v7.4.10" + "source": "https://github.com/symfony/serializer/tree/v7.4.14" }, "funding": [ { @@ -15994,20 +15995,20 @@ "type": "tidelift" } ], - "time": "2026-05-03T13:03:28+00:00" + "time": "2026-06-27T08:31:18+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.7.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a" + "reference": "c0a284bab1ed8aa0417e3d69250ab437739563a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d25d82433a80eba6aa0e6c24b61d7370d99e444a", - "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/c0a284bab1ed8aa0417e3d69250ab437739563a0", + "reference": "c0a284bab1ed8aa0417e3d69250ab437739563a0", "shasum": "" }, "require": { @@ -16061,7 +16062,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.7.1" }, "funding": [ { @@ -16081,7 +16082,7 @@ "type": "tidelift" } ], - "time": "2026-03-28T09:44:51+00:00" + "time": "2026-06-16T09:55:08+00:00" }, { "name": "symfony/stimulus-bundle", @@ -16315,16 +16316,16 @@ }, { "name": "symfony/translation", - "version": "v7.4.10", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "ada7578c30dd5feaa8259cff3e885069ea81ddde" + "reference": "a1af4dacb24eb7ef4f1ca71b94da8ddbce572281" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/ada7578c30dd5feaa8259cff3e885069ea81ddde", - "reference": "ada7578c30dd5feaa8259cff3e885069ea81ddde", + "url": "https://api.github.com/repos/symfony/translation/zipball/a1af4dacb24eb7ef4f1ca71b94da8ddbce572281", + "reference": "a1af4dacb24eb7ef4f1ca71b94da8ddbce572281", "shasum": "" }, "require": { @@ -16391,7 +16392,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.4.10" + "source": "https://github.com/symfony/translation/tree/v7.4.14" }, "funding": [ { @@ -16411,20 +16412,20 @@ "type": "tidelift" } ], - "time": "2026-05-06T11:19:24+00:00" + "time": "2026-06-06T09:33:19+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.7.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "0ab302977a952b42fd51475c4ebac81f8da0a95d" + "reference": "ccb206b98faccc511ebae8e5fad50f2dc0b30621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/0ab302977a952b42fd51475c4ebac81f8da0a95d", - "reference": "0ab302977a952b42fd51475c4ebac81f8da0a95d", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/ccb206b98faccc511ebae8e5fad50f2dc0b30621", + "reference": "ccb206b98faccc511ebae8e5fad50f2dc0b30621", "shasum": "" }, "require": { @@ -16473,7 +16474,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.7.1" }, "funding": [ { @@ -16493,20 +16494,20 @@ "type": "tidelift" } ], - "time": "2026-01-05T13:30:16+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { "name": "symfony/twig-bridge", - "version": "v7.4.12", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "81663873d946531129c76c65e80b681ce99c0e89" + "reference": "e4574ab4d5411a7c495d4189b15a8ecfbc720332" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/81663873d946531129c76c65e80b681ce99c0e89", - "reference": "81663873d946531129c76c65e80b681ce99c0e89", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/e4574ab4d5411a7c495d4189b15a8ecfbc720332", + "reference": "e4574ab4d5411a7c495d4189b15a8ecfbc720332", "shasum": "" }, "require": { @@ -16588,7 +16589,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.4.12" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.14" }, "funding": [ { @@ -16608,20 +16609,20 @@ "type": "tidelift" } ], - "time": "2026-04-29T17:13:54+00:00" + "time": "2026-06-17T13:16:29+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.4.8", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95" + "reference": "11b69c64efdd0c3465403bb2747bf4585add1ec7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95", - "reference": "ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/11b69c64efdd0c3465403bb2747bf4585add1ec7", + "reference": "11b69c64efdd0c3465403bb2747bf4585add1ec7", "shasum": "" }, "require": { @@ -16678,7 +16679,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v7.4.8" + "source": "https://github.com/symfony/twig-bundle/tree/v7.4.14" }, "funding": [ { @@ -16698,7 +16699,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-06-05T06:22:21+00:00" }, { "name": "symfony/type-info", @@ -17047,16 +17048,16 @@ }, { "name": "symfony/validator", - "version": "v7.4.10", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "c76458623af9a3fe3b2e5b09b36453f334c2a361" + "reference": "306d904336166d001751759351d40d5e82312596" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/c76458623af9a3fe3b2e5b09b36453f334c2a361", - "reference": "c76458623af9a3fe3b2e5b09b36453f334c2a361", + "url": "https://api.github.com/repos/symfony/validator/zipball/306d904336166d001751759351d40d5e82312596", + "reference": "306d904336166d001751759351d40d5e82312596", "shasum": "" }, "require": { @@ -17127,7 +17128,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.4.10" + "source": "https://github.com/symfony/validator/tree/v7.4.14" }, "funding": [ { @@ -17147,20 +17148,20 @@ "type": "tidelift" } ], - "time": "2026-05-05T15:30:56+00:00" + "time": "2026-06-27T06:16:12+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.4.8", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd" + "reference": "9a3a56a4a1e65a5cb4f8d13801fe8ab0a170e358" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9510c3966f749a1d1ff0059e1eabef6cc621e7fd", - "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9a3a56a4a1e65a5cb4f8d13801fe8ab0a170e358", + "reference": "9a3a56a4a1e65a5cb4f8d13801fe8ab0a170e358", "shasum": "" }, "require": { @@ -17214,7 +17215,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.8" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.14" }, "funding": [ { @@ -17234,20 +17235,20 @@ "type": "tidelift" } ], - "time": "2026-03-30T13:44:50+00:00" + "time": "2026-06-08T20:24:16+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.4.9", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "22e03a49c95ef054a43601cd159b222bfab1c701" + "reference": "0118811b1d59f323bf131250b3fb919febfece28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/22e03a49c95ef054a43601cd159b222bfab1c701", - "reference": "22e03a49c95ef054a43601cd159b222bfab1c701", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0118811b1d59f323bf131250b3fb919febfece28", + "reference": "0118811b1d59f323bf131250b3fb919febfece28", "shasum": "" }, "require": { @@ -17295,7 +17296,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.4.9" + "source": "https://github.com/symfony/var-exporter/tree/v7.4.14" }, "funding": [ { @@ -17315,7 +17316,7 @@ "type": "tidelift" } ], - "time": "2026-04-18T13:18:21+00:00" + "time": "2026-06-27T08:41:53+00:00" }, { "name": "symfony/web-link", @@ -17406,16 +17407,16 @@ }, { "name": "symfony/webpack-encore-bundle", - "version": "v2.4.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/symfony/webpack-encore-bundle.git", - "reference": "5b932e0feddd81aaf0ecd7d5fcd2e450e5a7817e" + "reference": "cac8d6c722999c8add9272f9de6e8079628df4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/5b932e0feddd81aaf0ecd7d5fcd2e450e5a7817e", - "reference": "5b932e0feddd81aaf0ecd7d5fcd2e450e5a7817e", + "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/cac8d6c722999c8add9272f9de6e8079628df4f5", + "reference": "cac8d6c722999c8add9272f9de6e8079628df4f5", "shasum": "" }, "require": { @@ -17458,7 +17459,7 @@ "description": "Integration of your Symfony app with Webpack Encore", "support": { "issues": "https://github.com/symfony/webpack-encore-bundle/issues", - "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.4.0" + "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.4.1" }, "funding": [ { @@ -17478,20 +17479,20 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:41:46+00:00" + "time": "2026-06-24T07:21:58+00:00" }, { "name": "symfony/yaml", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "a7ec3b1156faf8815db7683ec7c1e7338e6f977c" + "reference": "f8f328665ace2370d1e10645b807ba1646dc7dcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a7ec3b1156faf8815db7683ec7c1e7338e6f977c", - "reference": "a7ec3b1156faf8815db7683ec7c1e7338e6f977c", + "url": "https://api.github.com/repos/symfony/yaml/zipball/f8f328665ace2370d1e10645b807ba1646dc7dcc", + "reference": "f8f328665ace2370d1e10645b807ba1646dc7dcc", "shasum": "" }, "require": { @@ -17534,7 +17535,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.4.13" + "source": "https://github.com/symfony/yaml/tree/v7.4.14" }, "funding": [ { @@ -17554,7 +17555,7 @@ "type": "tidelift" } ], - "time": "2026-05-25T06:06:12+00:00" + "time": "2026-06-08T20:24:16+00:00" }, { "name": "symplify/easy-coding-standard", @@ -17608,16 +17609,16 @@ }, { "name": "tecnickcom/tc-lib-barcode", - "version": "2.10.0", + "version": "2.11.1", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-barcode.git", - "reference": "3d7b04b0a905b1bcd7ce65e364ab228c3a11a463" + "reference": "69238f94a1e46332ebc057fddf5bba2f776d56f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/3d7b04b0a905b1bcd7ce65e364ab228c3a11a463", - "reference": "3d7b04b0a905b1bcd7ce65e364ab228c3a11a463", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/69238f94a1e46332ebc057fddf5bba2f776d56f6", + "reference": "69238f94a1e46332ebc057fddf5bba2f776d56f6", "shasum": "" }, "require": { @@ -17626,7 +17627,7 @@ "ext-gd": "*", "ext-pcre": "*", "php": ">=8.2", - "tecnickcom/tc-lib-color": "^2.11" + "tecnickcom/tc-lib-color": "^2.12" }, "require-dev": { "pdepend/pdepend": "^2.16", @@ -17702,20 +17703,20 @@ "type": "github" } ], - "time": "2026-06-17T18:04:27+00:00" + "time": "2026-06-26T10:37:56+00:00" }, { "name": "tecnickcom/tc-lib-color", - "version": "2.11.0", + "version": "2.12.2", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-color.git", - "reference": "b7b326913c21fd695c4a189e3632c0d001b51c86" + "reference": "ba7d43d9bb06946c9717a4e3c6aa73346266cdbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/b7b326913c21fd695c4a189e3632c0d001b51c86", - "reference": "b7b326913c21fd695c4a189e3632c0d001b51c86", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/ba7d43d9bb06946c9717a4e3c6aa73346266cdbf", + "reference": "ba7d43d9bb06946c9717a4e3c6aa73346266cdbf", "shasum": "" }, "require": { @@ -17769,7 +17770,7 @@ "type": "github" } ], - "time": "2026-06-17T17:58:21+00:00" + "time": "2026-06-26T10:26:00+00:00" }, { "name": "thecodingmachine/safe", @@ -20308,16 +20309,16 @@ }, { "name": "rector/rector", - "version": "2.5.1", + "version": "2.5.2", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "34a9124ece04df818e6b4be4ecd0a4e23f4c0c64" + "reference": "49ff6339174bdbdf50b0b35ecbcff14a05ac9e24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/34a9124ece04df818e6b4be4ecd0a4e23f4c0c64", - "reference": "34a9124ece04df818e6b4be4ecd0a4e23f4c0c64", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/49ff6339174bdbdf50b0b35ecbcff14a05ac9e24", + "reference": "49ff6339174bdbdf50b0b35ecbcff14a05ac9e24", "shasum": "" }, "require": { @@ -20356,7 +20357,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.5.1" + "source": "https://github.com/rectorphp/rector/tree/2.5.2" }, "funding": [ { @@ -20364,7 +20365,7 @@ "type": "github" } ], - "time": "2026-06-21T10:28:27+00:00" + "time": "2026-06-22T11:39:33+00:00" }, { "name": "roave/security-advisories", @@ -20372,12 +20373,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "bfdbd26a02c71b3b00586f056c8cf5efea22a27a" + "reference": "36ba91e82e1b493faef2c13277d6bd2669ea9f31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/bfdbd26a02c71b3b00586f056c8cf5efea22a27a", - "reference": "bfdbd26a02c71b3b00586f056c8cf5efea22a27a", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/36ba91e82e1b493faef2c13277d6bd2669ea9f31", + "reference": "36ba91e82e1b493faef2c13277d6bd2669ea9f31", "shasum": "" }, "conflict": { @@ -20394,6 +20395,7 @@ "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7", "aimeos/aimeos-laravel": "==2021.10", "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", + "aimeos/pagible": "<0.10.4", "airesvsg/acf-to-rest-api": "<=3.1", "akaunting/akaunting": "<2.1.13", "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", @@ -20479,7 +20481,7 @@ "cachethq/cachet": "<2.5.1", "cadmium-org/cadmium-cms": "<=0.4.9", "cakephp/authentication": "<3.3.6|>=4,<4.1.1", - "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10|>=5.2.10,<5.2.12|==5.3", + "cakephp/cakephp": "<4.5.11|>=4.6,<4.6.4|>=5,<5.1.7|>=5.2,<5.2.13|>=5.3,<5.3.6", "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", "cardgate/magento2": "<2.0.33", "cardgate/woocommerce": "<=3.1.15", @@ -20511,7 +20513,7 @@ "commerceteam/commerce": ">=0.9.6,<0.9.9", "components/jquery": ">=1.0.3,<3.5", "composer/composer": "<2.2.28|>=2.3,<2.9.8", - "concrete5/concrete5": "<9.4.8", + "concrete5/concrete5": "<9.5.1", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", @@ -20656,10 +20658,10 @@ "feehi/feehicms": "<=2.1.1", "fenom/fenom": "<=2.12.1", "filament/actions": ">=3.2,<3.2.123|>=4,<=4.11.3|>=5,<=5.6.3", - "filament/filament": ">=4,<4.3.1", + "filament/filament": ">=3,<=3.3.51|>=4,<4.11.5|>=5,<5.6.5", "filament/forms": ">=3,<=3.3.52", - "filament/infolists": ">=3,<3.2.115", - "filament/tables": ">=3,<=3.3.50|>=4,<4.8.5|>=5,<5.3.5", + "filament/infolists": ">=3,<3.2.115|>=4,<=4.11.4|>=5,<=5.6.4", + "filament/tables": ">=3,<=3.3.50|>=4,<=4.11.4|>=5,<=5.6.4", "filegator/filegator": "<7.8", "filp/whoops": "<2.1.13", "fineuploader/php-traditional-server": "<=1.2.2", @@ -20988,6 +20990,7 @@ "paragonie/random_compat": "<2", "paragonie/sodium_compat": "<1.24|>=2,<2.5", "passbolt/passbolt_api": "<4.6.2", + "paymenter/paymenter": "<1.5", "paypal/adaptivepayments-sdk-php": "<=3.9.2", "paypal/invoice-sdk-php": "<=3.9", "paypal/merchant-sdk-php": "<3.12", @@ -21005,13 +21008,15 @@ "phenx/php-svg-lib": "<0.5.2", "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", "php-mod/curl": "<2.3.2", + "php-standard-library/h2": ">=6.1,<6.1.2|>=6.2,<6.2.1", + "php-standard-library/php-standard-library": ">=6.1,<6.1.2|>=6.2,<6.2.1", "phpbb/phpbb": "<3.3.16|==4.0.0.0-alpha1", "phpems/phpems": ">=6,<=6.1.3", "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", "phpmailer/phpmailer": "<6.5", "phpmussel/phpmussel": ">=1,<1.6", "phpmyadmin/phpmyadmin": "<5.2.2", - "phpmyfaq/phpmyfaq": "<4.1.3", + "phpmyfaq/phpmyfaq": "<4.1.4", "phpoffice/common": "<0.2.9", "phpoffice/math": "<=0.2", "phpoffice/phpexcel": "<=1.8.2", @@ -21041,6 +21046,7 @@ "pocketmine/bedrock-protocol": "<8.0.2", "pocketmine/pocketmine-mp": "<5.42.1", "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", + "pontedilana/php-weasyprint": "<=2.5.1", "poweradmin/poweradmin": "<4.2.4|>=4.3,<4.3.3", "pressbooks/pressbooks": "<5.18", "prestashop/autoupgrade": ">=4,<4.10.1", @@ -21119,10 +21125,10 @@ "silverstripe-australia/advancedreports": ">=1,<=2", "silverstripe/admin": "<1.13.19|>=2,<2.1.8", "silverstripe/assets": "<2.4.5|>=3,<3.1.3", - "silverstripe/cms": "<4.11.3", + "silverstripe/cms": "<6.2.1", "silverstripe/comments": ">=1.3,<3.1.1", "silverstripe/forum": "<0.6.2|>=0.7,<0.7.4", - "silverstripe/framework": "<5.3.23", + "silverstripe/framework": "<6.2.2", "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", "silverstripe/recipe-cms": ">=4.5,<4.5.3", @@ -21132,7 +21138,8 @@ "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", "silverstripe/subsites": ">=2,<2.6.1", "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", - "silverstripe/userforms": "<3|>=5,<5.4.2", + "silverstripe/userforms": "<6.4.9|>=7,<7.0.7|>=7.1,<7.1.1", + "silverstripe/versioned": "<3.2.1", "silverstripe/versioned-admin": ">=1,<1.11.1", "simogeo/filemanager": "<=2.5", "simple-updates/phpwhois": "<=1", @@ -21151,12 +21158,13 @@ "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", "sjbr/static-info-tables": "<2.3.1", "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", - "slim/slim": "<2.6", + "slim/slim": "<2.6|>=4.4,<=4.15.1", "slub/slub-events": "<3.0.3", "smarty/smarty": "<4.5.3|>=5,<5.1.1", - "snipe/snipe-it": "<8.4.1", + "snipe/snipe-it": "<=8.6.1", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", + "solidinvoice/solidinvoice": "<=2.3.15", "solspace/craft-freeform": "<4.1.29|>=5,<=5.14.6", "soosyze/soosyze": "<=2", "spatie/browsershot": "<5.0.5", @@ -21174,7 +21182,7 @@ "starcitizentools/short-description": ">=4,<4.0.1", "starcitizentools/tabber-neue": ">=1.9.1,<2.7.2|>=3,<3.1.1", "starcitizenwiki/embedvideo": "<=4", - "statamic/cms": "<5.73.22|>=6,<6.18.1", + "statamic/cms": "<5.74|>=6,<6.20.3", "stormpath/sdk": "<9.9.99", "studio-42/elfinder": "<=2.1.67", "studiomitte/friendlycaptcha": "<0.1.4", @@ -21194,6 +21202,7 @@ "sylius/paypal-plugin": "<1.6.2|>=1.7,<1.7.2|>=2,<2.0.2", "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", "sylius/sylius": "<1.9.12|>=1.10,<1.10.16|>=1.11,<1.11.17|>=1.12,<=1.12.22|>=1.13,<=1.13.14|>=1.14,<=1.14.17|>=2,<=2.0.15|>=2.1,<=2.1.11|>=2.2,<=2.2.2", + "symbiote/silverstripe-advancedworkflow": "<6.4.5|>=7,<7.1.3|>=7.2,<7.2.1", "symbiote/silverstripe-multivaluefield": ">=3,<3.1", "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", "symbiote/silverstripe-seed": "<6.0.3", @@ -21261,7 +21270,7 @@ "thelia/thelia": ">=2.1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", "thinkcmf/thinkcmf": "<6.0.8", - "thorsten/phpmyfaq": "<4.1.3", + "thorsten/phpmyfaq": "<4.1.4", "tikiwiki/tiki-manager": "<=17.1", "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", "tinymce/tinymce": "<7.9.3|>=8,<8.5.1", @@ -21341,7 +21350,7 @@ "wapplersystems/a21glossary": "<=0.4.10", "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9|>=5.2,<5.2.4|>=5.3,<5.3.1", "web-auth/webauthn-lib": ">=4.5,<4.9|>=5.2,<5.2.4", - "web-auth/webauthn-symfony-bundle": ">=5.2,<5.2.4", + "web-auth/webauthn-symfony-bundle": "<5.3.4", "web-feet/coastercms": "==5.5", "web-token/jwt-experimental": "<=4.1.6", "web-token/jwt-framework": "<=4.2.99", @@ -21471,7 +21480,7 @@ "type": "tidelift" } ], - "time": "2026-06-19T21:28:22+00:00" + "time": "2026-06-26T23:29:05+00:00" }, { "name": "sebastian/cli-parser", @@ -22513,16 +22522,16 @@ }, { "name": "symfony/browser-kit", - "version": "v7.4.8", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "41850d8f8ddef9a9cd7314fa9f4902cf48885521" + "reference": "bb28e8761a6c33975972948010f00d4a10f0a634" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/41850d8f8ddef9a9cd7314fa9f4902cf48885521", - "reference": "41850d8f8ddef9a9cd7314fa9f4902cf48885521", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/bb28e8761a6c33975972948010f00d4a10f0a634", + "reference": "bb28e8761a6c33975972948010f00d4a10f0a634", "shasum": "" }, "require": { @@ -22562,7 +22571,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.4.8" + "source": "https://github.com/symfony/browser-kit/tree/v7.4.14" }, "funding": [ { @@ -22582,7 +22591,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-06-08T20:24:16+00:00" }, { "name": "symfony/debug-bundle", @@ -22760,16 +22769,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v7.4.8", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "140bbbe1cd1c21a084494ccddeee33f3c3381d7d" + "reference": "11eeee9d109963145e66f5b1919e5cf5411da58b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/140bbbe1cd1c21a084494ccddeee33f3c3381d7d", - "reference": "140bbbe1cd1c21a084494ccddeee33f3c3381d7d", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/11eeee9d109963145e66f5b1919e5cf5411da58b", + "reference": "11eeee9d109963145e66f5b1919e5cf5411da58b", "shasum": "" }, "require": { @@ -22821,7 +22830,7 @@ "testing" ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.8" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.14" }, "funding": [ { @@ -22841,20 +22850,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-06-08T20:24:16+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "153076bb3f0690fff0e95e55cc06358b22f236a5" + "reference": "5dead36a9202a6008b54b95308bce7ab97a41fe0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/153076bb3f0690fff0e95e55cc06358b22f236a5", - "reference": "153076bb3f0690fff0e95e55cc06358b22f236a5", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/5dead36a9202a6008b54b95308bce7ab97a41fe0", + "reference": "5dead36a9202a6008b54b95308bce7ab97a41fe0", "shasum": "" }, "require": { @@ -22911,7 +22920,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.13" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.14" }, "funding": [ { @@ -22931,7 +22940,7 @@ "type": "tidelift" } ], - "time": "2026-05-23T16:05:06+00:00" + "time": "2026-06-05T06:22:21+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/packages/ai_lm_studio_platform.yaml b/config/packages/ai_lm_studio_platform.yaml index 0e4287e0..1d832763 100644 --- a/config/packages/ai_lm_studio_platform.yaml +++ b/config/packages/ai_lm_studio_platform.yaml @@ -2,3 +2,4 @@ ai: platform: lmstudio: host_url: '%env(string:settings:ai_lmstudio:hostURL)%' + http_client: 'app.http_client.ai_lmstudio' diff --git a/config/packages/ai_ollama_platform.yaml b/config/packages/ai_ollama_platform.yaml index df551d4a..67ebe190 100644 --- a/config/packages/ai_ollama_platform.yaml +++ b/config/packages/ai_ollama_platform.yaml @@ -3,3 +3,4 @@ ai: ollama: endpoint: '%env(string:settings:ai_ollama:endpoint)%' api_key: '%env(string:settings:ai_ollama:apiKey)%' + http_client: 'app.http_client.ai_ollama' diff --git a/config/packages/ai_open_router_platform.yaml b/config/packages/ai_open_router_platform.yaml index d34de592..53eb20b9 100644 --- a/config/packages/ai_open_router_platform.yaml +++ b/config/packages/ai_open_router_platform.yaml @@ -2,3 +2,4 @@ ai: platform: openrouter: api_key: '%env(string:settings:ai_openrouter:apiKey)%' + http_client: 'app.http_client.ai_openrouter' diff --git a/config/packages/dev/easy_log_handler.yaml b/config/packages/dev/easy_log_handler.yaml deleted file mode 100644 index 27bfc608..00000000 --- a/config/packages/dev/easy_log_handler.yaml +++ /dev/null @@ -1,16 +0,0 @@ -services: - EasyCorp\EasyLog\EasyLogHandler: - public: false - arguments: ['%kernel.logs_dir%/%kernel.environment%.log'] - -#// FIXME: How to add this configuration automatically without messing up with the monolog configuration? -#monolog: -# handlers: -# buffered: -# type: buffer -# handler: easylog -# channels: ['!event'] -# level: debug -# easylog: -# type: service -# id: EasyCorp\EasyLog\EasyLogHandler diff --git a/config/packages/doctrine.php b/config/packages/doctrine.php index e5be011f..f62cdcfb 100644 --- a/config/packages/doctrine.php +++ b/config/packages/doctrine.php @@ -20,16 +20,16 @@ declare(strict_types=1); -use Symfony\Config\DoctrineConfig; - /** - * This class extends the default doctrine ORM configuration to enable native lazy objects on PHP 8.4+. + * This file enables native lazy objects on PHP 8.4+. * We have to do this in a PHP file, because the yaml file does not support conditionals on PHP version. + * + * TODO: Remove this file when we drop support for PHP < 8.4 */ -return static function(DoctrineConfig $doctrine) { - //On PHP 8.4+ we can use native lazy objects, which are much more efficient than proxies. - if (PHP_VERSION_ID >= 80400) { - $doctrine->orm()->enableNativeLazyObjects(true); - } -}; +// On PHP 8.4+ we can use native lazy objects, which are much more efficient than proxies. +if (PHP_VERSION_ID >= 80400) { + return ['doctrine' => ['orm' => ['enable_native_lazy_objects' => true]]]; +} + +return []; diff --git a/config/reference.php b/config/reference.php index 961d8ea5..461a3578 100644 --- a/config/reference.php +++ b/config/reference.php @@ -121,7 +121,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * } * @psalm-type ServicesConfig = array{ * _defaults?: DefaultsType, - * _instanceof?: InstanceofType, + * _instanceof?: array, * ... * } * @psalm-type ExtensionType = array diff --git a/config/services.yaml b/config/services.yaml index 5021c577..aa476bbb 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -52,6 +52,28 @@ services: alias: 'doctrine.migrations.dependency_factory' + #################################################################################################################### + # AI provider HTTP clients (with configurable timeouts) + #################################################################################################################### + + app.http_client.ai_ollama: + class: Symfony\Contracts\HttpClient\HttpClientInterface + factory: ['@http_client', 'withOptions'] + arguments: + - { timeout: '%env(int:settings:ai_ollama:timeout)%' } + + app.http_client.ai_lmstudio: + class: Symfony\Contracts\HttpClient\HttpClientInterface + factory: ['@http_client', 'withOptions'] + arguments: + - { timeout: '%env(int:settings:ai_lmstudio:timeout)%' } + + app.http_client.ai_openrouter: + class: Symfony\Contracts\HttpClient\HttpClientInterface + factory: ['@http_client', 'withOptions'] + arguments: + - { timeout: '%env(int:settings:ai_openrouter:timeout)%' } + #################################################################################################################### # Email #################################################################################################################### diff --git a/public/kicad/footprints.txt b/public/kicad/footprints.txt index a0b41279..1b8cf2be 100644 --- a/public/kicad/footprints.txt +++ b/public/kicad/footprints.txt @@ -1,4 +1,4 @@ -# Generated on Mon Jun 15 07:28:00 UTC 2026 +# Generated on Mon Jul 6 06:43:02 UTC 2026 # This file contains all footprints available in the offical KiCAD library Audio_Module:Reverb_BTDR-1H Audio_Module:Reverb_BTDR-1V @@ -8293,6 +8293,7 @@ Converter_DCDC:Converter_DCDC_Hamamatsu_C11204-1_THT Converter_DCDC:Converter_DCDC_MeanWell_NID30_THT Converter_DCDC:Converter_DCDC_MeanWell_NID60_THT Converter_DCDC:Converter_DCDC_MeanWell_NSD10_THT +Converter_DCDC:Converter_DCDC_MeanWell_SMU02x-xxN_THT Converter_DCDC:Converter_DCDC_Murata_CRE1xxxxxx3C_THT Converter_DCDC:Converter_DCDC_Murata_CRE1xxxxxxDC_THT Converter_DCDC:Converter_DCDC_Murata_CRE1xxxxxxSC_THT @@ -13030,8 +13031,6 @@ Package_SON:WSON-6-1EP_2x2mm_P0.65mm_EP1x1.6mm Package_SON:WSON-6-1EP_2x2mm_P0.65mm_EP1x1.6mm_ThermalVias Package_SON:WSON-6-1EP_3x3mm_P0.95mm Package_SON:WSON-6_1.5x1.5mm_P0.5mm -Package_SON:WSON-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm -Package_SON:WSON-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm_ThermalVias Package_SON:WSON-8-1EP_3x2.5mm_P0.5mm_EP1.2x1.5mm_PullBack Package_SON:WSON-8-1EP_3x2.5mm_P0.5mm_EP1.2x1.5mm_PullBack_ThermalVias Package_SON:WSON-8-1EP_3x3mm_P0.5mm_EP1.2x2mm diff --git a/public/kicad/symbols.txt b/public/kicad/symbols.txt index b07fbf28..c5516837 100644 --- a/public/kicad/symbols.txt +++ b/public/kicad/symbols.txt @@ -1,4 +1,4 @@ -# Generated on Mon Jun 15 07:28:38 UTC 2026 +# Generated on Mon Jul 6 06:43:42 UTC 2026 # This file contains all symbols available in the offical KiCAD library 4xxx:14528 4xxx:14529 @@ -4416,56 +4416,6 @@ Converter_DCDC:ATA00H18S-L Converter_DCDC:ATA00H36S-L Converter_DCDC:Ag9905LP Converter_DCDC:C11204-01 -Converter_DCDC:IA0305D -Converter_DCDC:IA0305S -Converter_DCDC:IA0503D -Converter_DCDC:IA0503S -Converter_DCDC:IA0505D -Converter_DCDC:IA0505S -Converter_DCDC:IA0509D -Converter_DCDC:IA0509S -Converter_DCDC:IA0512D -Converter_DCDC:IA0512S -Converter_DCDC:IA0515D -Converter_DCDC:IA0515S -Converter_DCDC:IA0524D -Converter_DCDC:IA0524S -Converter_DCDC:IA1203D -Converter_DCDC:IA1203S -Converter_DCDC:IA1205D -Converter_DCDC:IA1205S -Converter_DCDC:IA1209D -Converter_DCDC:IA1209S -Converter_DCDC:IA1212D -Converter_DCDC:IA1212S -Converter_DCDC:IA1215D -Converter_DCDC:IA1215S -Converter_DCDC:IA1224D -Converter_DCDC:IA1224S -Converter_DCDC:IA2403D -Converter_DCDC:IA2403S -Converter_DCDC:IA2405D -Converter_DCDC:IA2405S -Converter_DCDC:IA2409D -Converter_DCDC:IA2409S -Converter_DCDC:IA2412D -Converter_DCDC:IA2412S -Converter_DCDC:IA2415D -Converter_DCDC:IA2415S -Converter_DCDC:IA2424D -Converter_DCDC:IA2424S -Converter_DCDC:IA4803D -Converter_DCDC:IA4803S -Converter_DCDC:IA4805D -Converter_DCDC:IA4805S -Converter_DCDC:IA4809D -Converter_DCDC:IA4809S -Converter_DCDC:IA4812D -Converter_DCDC:IA4812S -Converter_DCDC:IA4815D -Converter_DCDC:IA4815S -Converter_DCDC:IA4824D -Converter_DCDC:IA4824S Converter_DCDC:IH0503D Converter_DCDC:IH0503DH Converter_DCDC:IH0503S @@ -4562,24 +4512,6 @@ Converter_DCDC:IH4824D Converter_DCDC:IH4824DH Converter_DCDC:IH4824S Converter_DCDC:IH4824SH -Converter_DCDC:ISU0205D12 -Converter_DCDC:ISU0205D15 -Converter_DCDC:ISU0205S05 -Converter_DCDC:ISU0205S12 -Converter_DCDC:ISU0205S15 -Converter_DCDC:ISU0205S24 -Converter_DCDC:ISU0224D12 -Converter_DCDC:ISU0224D15 -Converter_DCDC:ISU0224S05 -Converter_DCDC:ISU0224S12 -Converter_DCDC:ISU0224S15 -Converter_DCDC:ISU0224S24 -Converter_DCDC:ISU0248D12 -Converter_DCDC:ISU0248D15 -Converter_DCDC:ISU0248S05 -Converter_DCDC:ISU0248S12 -Converter_DCDC:ISU0248S15 -Converter_DCDC:ISU0248S24 Converter_DCDC:ITQ2403SA Converter_DCDC:ITQ2403SA-H Converter_DCDC:ITQ2405S @@ -4760,34 +4692,6 @@ Converter_DCDC:ITX4824SA Converter_DCDC:ITX4824SA-H Converter_DCDC:ITX4824SA-HR Converter_DCDC:ITX4824SA-R -Converter_DCDC:JTD1524D05 -Converter_DCDC:JTD1524D12 -Converter_DCDC:JTD1524D15 -Converter_DCDC:JTD1524S05 -Converter_DCDC:JTD1524S12 -Converter_DCDC:JTD1524S15 -Converter_DCDC:JTD1524S3V3 -Converter_DCDC:JTD1548D05 -Converter_DCDC:JTD1548D12 -Converter_DCDC:JTD1548D15 -Converter_DCDC:JTD1548S05 -Converter_DCDC:JTD1548S12 -Converter_DCDC:JTD1548S15 -Converter_DCDC:JTD1548S3V3 -Converter_DCDC:JTD2024D05 -Converter_DCDC:JTD2024D12 -Converter_DCDC:JTD2024D15 -Converter_DCDC:JTD2024S05 -Converter_DCDC:JTD2024S12 -Converter_DCDC:JTD2024S15 -Converter_DCDC:JTD2024S3V3 -Converter_DCDC:JTD2048D05 -Converter_DCDC:JTD2048D12 -Converter_DCDC:JTD2048D15 -Converter_DCDC:JTD2048S05 -Converter_DCDC:JTD2048S12 -Converter_DCDC:JTD2048S15 -Converter_DCDC:JTD2048S3V3 Converter_DCDC:JTE0624D03 Converter_DCDC:JTE0624D05 Converter_DCDC:JTE0624D12 @@ -4815,59 +4719,6 @@ Converter_DCDC:LTM4668A Converter_DCDC:LTM4671 Converter_DCDC:LTM8049 Converter_DCDC:LTM8063 -Converter_DCDC:MEE1S0303SC -Converter_DCDC:MEE1S0305SC -Converter_DCDC:MEE1S0309SC -Converter_DCDC:MEE1S0312SC -Converter_DCDC:MEE1S0315SC -Converter_DCDC:MEE1S0503SC -Converter_DCDC:MEE1S0505SC -Converter_DCDC:MEE1S0509SC -Converter_DCDC:MEE1S0512SC -Converter_DCDC:MEE1S0515SC -Converter_DCDC:MEE1S1205SC -Converter_DCDC:MEE1S1209SC -Converter_DCDC:MEE1S1212SC -Converter_DCDC:MEE1S1215SC -Converter_DCDC:MEE1S1505SC -Converter_DCDC:MEE1S1509SC -Converter_DCDC:MEE1S1512SC -Converter_DCDC:MEE1S1515SC -Converter_DCDC:MEE1S2405SC -Converter_DCDC:MEE1S2409SC -Converter_DCDC:MEE1S2412SC -Converter_DCDC:MEE1S2415SC -Converter_DCDC:MEE3S0505SC -Converter_DCDC:MEE3S0509SC -Converter_DCDC:MEE3S0512SC -Converter_DCDC:MEE3S0515SC -Converter_DCDC:MEE3S1205SC -Converter_DCDC:MEE3S1209SC -Converter_DCDC:MEE3S1212SC -Converter_DCDC:MEE3S1215SC -Converter_DCDC:MGJ2D051505SC -Converter_DCDC:MGJ2D051509SC -Converter_DCDC:MGJ2D051515SC -Converter_DCDC:MGJ2D051802SC -Converter_DCDC:MGJ2D052003SC -Converter_DCDC:MGJ2D052005SC -Converter_DCDC:MGJ2D121505SC -Converter_DCDC:MGJ2D121509SC -Converter_DCDC:MGJ2D121802SC -Converter_DCDC:MGJ2D122003SC -Converter_DCDC:MGJ2D122005SC -Converter_DCDC:MGJ2D151505SC -Converter_DCDC:MGJ2D151509SC -Converter_DCDC:MGJ2D151515SC -Converter_DCDC:MGJ2D151802SC -Converter_DCDC:MGJ2D152003SC -Converter_DCDC:MGJ2D152005SC -Converter_DCDC:MGJ2D241505SC -Converter_DCDC:MGJ2D241509SC -Converter_DCDC:MGJ2D241709SC -Converter_DCDC:MGJ2D241802SC -Converter_DCDC:MGJ2D242003SC -Converter_DCDC:MGJ2D242005SC Converter_DCDC:MGJ3T05150505MC Converter_DCDC:MGJ3T12150505MC Converter_DCDC:MGJ3T24150505MC @@ -4875,12 +4726,6 @@ Converter_DCDC:MUN12AD01-SH Converter_DCDC:MUN12AD03-SH Converter_DCDC:MYRGPxx0060x21RC Converter_DCDC:MYRGPxx0060x21RF -Converter_DCDC:NCS1S1203SC -Converter_DCDC:NCS1S1205SC -Converter_DCDC:NCS1S1212SC -Converter_DCDC:NCS1S2403SC -Converter_DCDC:NCS1S2405SC -Converter_DCDC:NCS1S2412SC Converter_DCDC:NSD10-xxDyy Converter_DCDC:NSD10-xxSyy Converter_DCDC:OKI-78SR-12_1.0-W36-C @@ -4937,10 +4782,6 @@ Converter_DCDC:R-78HB5.0-0.5 Converter_DCDC:R-78HB6.5-0.5 Converter_DCDC:R-78HB9.0-0.5 Converter_DCDC:R-78S3.3-0.1 -Converter_DCDC:RPA60-2405SFW -Converter_DCDC:RPA60-2412SFW -Converter_DCDC:RPA60-2415SFW -Converter_DCDC:RPA60-2424SFW Converter_DCDC:RPM3.3-1.0 Converter_DCDC:RPM3.3-2.0 Converter_DCDC:RPM3.3-3.0 @@ -4954,36 +4795,21 @@ Converter_DCDC:RPMH15-1.5 Converter_DCDC:RPMH24-1.5 Converter_DCDC:RPMH3.3-1.5 Converter_DCDC:RPMH5.0-1.5 -Converter_DCDC:TBA1-0310 -Converter_DCDC:TBA1-0311 -Converter_DCDC:TBA1-0510 -Converter_DCDC:TBA1-0511 Converter_DCDC:TBA1-0511E -Converter_DCDC:TBA1-0512 Converter_DCDC:TBA1-0512E -Converter_DCDC:TBA1-0513 Converter_DCDC:TBA1-0513E -Converter_DCDC:TBA1-0519 Converter_DCDC:TBA1-0521E Converter_DCDC:TBA1-0522E Converter_DCDC:TBA1-0523E -Converter_DCDC:TBA1-1211 Converter_DCDC:TBA1-1211E -Converter_DCDC:TBA1-1212 Converter_DCDC:TBA1-1212E -Converter_DCDC:TBA1-1213 Converter_DCDC:TBA1-1213E -Converter_DCDC:TBA1-1219 Converter_DCDC:TBA1-1221E Converter_DCDC:TBA1-1222E Converter_DCDC:TBA1-1223E -Converter_DCDC:TBA1-2411 Converter_DCDC:TBA1-2411E -Converter_DCDC:TBA1-2412 Converter_DCDC:TBA1-2412E -Converter_DCDC:TBA1-2413 Converter_DCDC:TBA1-2413E -Converter_DCDC:TBA1-2419 Converter_DCDC:TBA1-2421E Converter_DCDC:TBA1-2422E Converter_DCDC:TBA1-2423E @@ -5017,52 +4843,8 @@ Converter_DCDC:TDU1-1213 Converter_DCDC:TDU1-2411 Converter_DCDC:TDU1-2412 Converter_DCDC:TDU1-2413 -Converter_DCDC:TEA1-0505 Converter_DCDC:TEA1-0505E Converter_DCDC:TEA1-0505HI -Converter_DCDC:TEC2-1210WI -Converter_DCDC:TEC2-1211WI -Converter_DCDC:TEC2-1212WI -Converter_DCDC:TEC2-1213WI -Converter_DCDC:TEC2-1215WI -Converter_DCDC:TEC2-1219WI -Converter_DCDC:TEC2-1221WI -Converter_DCDC:TEC2-1222WI -Converter_DCDC:TEC2-1223WI -Converter_DCDC:TEC2-2410WI -Converter_DCDC:TEC2-2411WI -Converter_DCDC:TEC2-2412WI -Converter_DCDC:TEC2-2413WI -Converter_DCDC:TEC2-2415WI -Converter_DCDC:TEC2-2419WI -Converter_DCDC:TEC2-2421WI -Converter_DCDC:TEC2-2422WI -Converter_DCDC:TEC2-2423WI -Converter_DCDC:TEC2-4810WI -Converter_DCDC:TEC2-4811WI -Converter_DCDC:TEC2-4812WI -Converter_DCDC:TEC2-4813WI -Converter_DCDC:TEC2-4815WI -Converter_DCDC:TEC2-4819WI -Converter_DCDC:TEC2-4821WI -Converter_DCDC:TEC2-4822WI -Converter_DCDC:TEC2-4823WI -Converter_DCDC:TEC3-2410UI -Converter_DCDC:TEC3-2411UI -Converter_DCDC:TEC3-2412UI -Converter_DCDC:TEC3-2413UI -Converter_DCDC:TEC3-2421UI -Converter_DCDC:TEC3-2422UI -Converter_DCDC:TEC3-2423UI -Converter_DCDC:TEC6-2410UI -Converter_DCDC:TEC6-2411UI -Converter_DCDC:TEC6-2412UI -Converter_DCDC:TEC6-2413UI -Converter_DCDC:TEC6-2415UI -Converter_DCDC:TEC6-2419UI -Converter_DCDC:TEC6-2421UI -Converter_DCDC:TEC6-2422UI -Converter_DCDC:TEC6-2423UI Converter_DCDC:TEL12-1211 Converter_DCDC:TEL12-1212 Converter_DCDC:TEL12-1213 @@ -5101,27 +4883,6 @@ Converter_DCDC:TEN10-11015WIRH Converter_DCDC:TEN10-11021WIRH Converter_DCDC:TEN10-11022WIRH Converter_DCDC:TEN10-11023WIRH -Converter_DCDC:TEN20-11011WIRH -Converter_DCDC:TEN20-11012WIRH -Converter_DCDC:TEN20-11013WIRH -Converter_DCDC:TEN20-11015WIRH -Converter_DCDC:TEN20-11021WIRH -Converter_DCDC:TEN20-11022WIRH -Converter_DCDC:TEN20-11023WIRH -Converter_DCDC:TEN20-2410WIN -Converter_DCDC:TEN20-2411WIN -Converter_DCDC:TEN20-2412WIN -Converter_DCDC:TEN20-2413WIN -Converter_DCDC:TEN20-2421WIN -Converter_DCDC:TEN20-2422WIN -Converter_DCDC:TEN20-2423WIN -Converter_DCDC:TEN20-4810WIN -Converter_DCDC:TEN20-4811WIN -Converter_DCDC:TEN20-4812WIN -Converter_DCDC:TEN20-4813WIN -Converter_DCDC:TEN20-4821WIN -Converter_DCDC:TEN20-4822WIN -Converter_DCDC:TEN20-4823WIN Converter_DCDC:TEN3-11010WIRH Converter_DCDC:TEN3-11011WIRH Converter_DCDC:TEN3-11012WIRH @@ -5130,12 +4891,6 @@ Converter_DCDC:TEN3-11015WIRH Converter_DCDC:TEN3-11021WIRH Converter_DCDC:TEN3-11022WIRH Converter_DCDC:TEN3-11023WIRH -Converter_DCDC:TEN40-11011WIRH -Converter_DCDC:TEN40-11012WIRH -Converter_DCDC:TEN40-11013WIRH -Converter_DCDC:TEN40-11015WIRH -Converter_DCDC:TEN40-11022WIRH -Converter_DCDC:TEN40-11023WIRH Converter_DCDC:TEN6-11010WIRH Converter_DCDC:TEN6-11011WIRH Converter_DCDC:TEN6-11012WIRH @@ -5230,13 +4985,6 @@ Converter_DCDC:THN10-7215UIR Converter_DCDC:THN10-7221UIR Converter_DCDC:THN10-7222UIR Converter_DCDC:THN10-7223UIR -Converter_DCDC:THR40-7211WI -Converter_DCDC:THR40-7212WI -Converter_DCDC:THR40-7213WI -Converter_DCDC:THR40-72154WI -Converter_DCDC:THR40-7215WI -Converter_DCDC:THR40-7222WI -Converter_DCDC:THR40-7223WI Converter_DCDC:TMA-0505D Converter_DCDC:TMA-0505S Converter_DCDC:TMA-0512D @@ -5261,87 +5009,6 @@ Converter_DCDC:TMA-2412D Converter_DCDC:TMA-2412S Converter_DCDC:TMA-2415D Converter_DCDC:TMA-2415S -Converter_DCDC:TME-0303S -Converter_DCDC:TME-0305S -Converter_DCDC:TME-0503S -Converter_DCDC:TME-0505S -Converter_DCDC:TME-0509S -Converter_DCDC:TME-0512S -Converter_DCDC:TME-0515S -Converter_DCDC:TME-1205S -Converter_DCDC:TME-1209S -Converter_DCDC:TME-1212S -Converter_DCDC:TME-1215S -Converter_DCDC:TME-2405S -Converter_DCDC:TME-2409S -Converter_DCDC:TME-2412S -Converter_DCDC:TME-2415S -Converter_DCDC:TMR-0510 -Converter_DCDC:TMR-0511 -Converter_DCDC:TMR-0512 -Converter_DCDC:TMR-0521 -Converter_DCDC:TMR-0522 -Converter_DCDC:TMR-0523 -Converter_DCDC:TMR-1210 -Converter_DCDC:TMR-1211 -Converter_DCDC:TMR-1212 -Converter_DCDC:TMR-1221 -Converter_DCDC:TMR-1222 -Converter_DCDC:TMR-1223 -Converter_DCDC:TMR-2410 -Converter_DCDC:TMR-2411 -Converter_DCDC:TMR-2412 -Converter_DCDC:TMR-2421 -Converter_DCDC:TMR-2422 -Converter_DCDC:TMR-2423 -Converter_DCDC:TMR-4810 -Converter_DCDC:TMR-4811 -Converter_DCDC:TMR-4812 -Converter_DCDC:TMR-4821 -Converter_DCDC:TMR-4822 -Converter_DCDC:TMR-4823 -Converter_DCDC:TMR10-1211WI -Converter_DCDC:TMR10-1212WI -Converter_DCDC:TMR10-1213WI -Converter_DCDC:TMR10-1215WI -Converter_DCDC:TMR10-1222WI -Converter_DCDC:TMR10-1223WI -Converter_DCDC:TMR10-2410WIR -Converter_DCDC:TMR10-2411WI -Converter_DCDC:TMR10-2411WIR -Converter_DCDC:TMR10-2412WI -Converter_DCDC:TMR10-2412WIR -Converter_DCDC:TMR10-2413WI -Converter_DCDC:TMR10-2413WIR -Converter_DCDC:TMR10-2415WI -Converter_DCDC:TMR10-2415WIR -Converter_DCDC:TMR10-2421WIR -Converter_DCDC:TMR10-2422WI -Converter_DCDC:TMR10-2422WIR -Converter_DCDC:TMR10-2423WI -Converter_DCDC:TMR10-2423WIR -Converter_DCDC:TMR10-4810WIR -Converter_DCDC:TMR10-4811WI -Converter_DCDC:TMR10-4811WIR -Converter_DCDC:TMR10-4812WI -Converter_DCDC:TMR10-4812WIR -Converter_DCDC:TMR10-4813WI -Converter_DCDC:TMR10-4813WIR -Converter_DCDC:TMR10-4815WI -Converter_DCDC:TMR10-4815WIR -Converter_DCDC:TMR10-4821WIR -Converter_DCDC:TMR10-4822WI -Converter_DCDC:TMR10-4822WIR -Converter_DCDC:TMR10-4823WI -Converter_DCDC:TMR10-4823WIR -Converter_DCDC:TMR10-7210WIR -Converter_DCDC:TMR10-7211WIR -Converter_DCDC:TMR10-7212WIR -Converter_DCDC:TMR10-7213WIR -Converter_DCDC:TMR10-7215WIR -Converter_DCDC:TMR10-7221WIR -Converter_DCDC:TMR10-7222WIR -Converter_DCDC:TMR10-7223WIR Converter_DCDC:TMR2-2410WI Converter_DCDC:TMR2-2411WI Converter_DCDC:TMR2-2412WI @@ -5356,27 +5023,6 @@ Converter_DCDC:TMR2-4813WI Converter_DCDC:TMR2-4821WI Converter_DCDC:TMR2-4822WI Converter_DCDC:TMR2-4823WI -Converter_DCDC:TMR4-2411WI -Converter_DCDC:TMR4-2412WI -Converter_DCDC:TMR4-2413WI -Converter_DCDC:TMR4-2415WI -Converter_DCDC:TMR4-2422WI -Converter_DCDC:TMR4-2423WI -Converter_DCDC:TMR4-4811WI -Converter_DCDC:TMR4-4812WI -Converter_DCDC:TMR4-4813WI -Converter_DCDC:TMR4-4815WI -Converter_DCDC:TMR4-4822WI -Converter_DCDC:TMR4-4823WI -Converter_DCDC:TMU3-0511 -Converter_DCDC:TMU3-0512 -Converter_DCDC:TMU3-0513 -Converter_DCDC:TMU3-1211 -Converter_DCDC:TMU3-1212 -Converter_DCDC:TMU3-1213 -Converter_DCDC:TMU3-2411 -Converter_DCDC:TMU3-2412 -Converter_DCDC:TMU3-2413 Converter_DCDC:TMV0505D Converter_DCDC:TMV0505S Converter_DCDC:TMV0509S @@ -5605,6 +5251,444 @@ Converter_DCDC:TSR_1-2433 Converter_DCDC:TSR_1-2450 Converter_DCDC:TSR_1-2465 Converter_DCDC:TSR_1-2490 +Converter_DCDC_Isolated:ADuM6000 +Converter_DCDC_Isolated:CRE1S0305S3C +Converter_DCDC_Isolated:CRE1S0505DC +Converter_DCDC_Isolated:CRE1S0505S3C +Converter_DCDC_Isolated:CRE1S0505SC +Converter_DCDC_Isolated:CRE1S0515SC +Converter_DCDC_Isolated:CRE1S1205SC +Converter_DCDC_Isolated:CRE1S1212SC +Converter_DCDC_Isolated:CRE1S2405SC +Converter_DCDC_Isolated:CRE1S2412SC +Converter_DCDC_Isolated:IA0305D +Converter_DCDC_Isolated:IA0305S +Converter_DCDC_Isolated:IA0503D +Converter_DCDC_Isolated:IA0503S +Converter_DCDC_Isolated:IA0505D +Converter_DCDC_Isolated:IA0505S +Converter_DCDC_Isolated:IA0509D +Converter_DCDC_Isolated:IA0509S +Converter_DCDC_Isolated:IA0512D +Converter_DCDC_Isolated:IA0512S +Converter_DCDC_Isolated:IA0515D +Converter_DCDC_Isolated:IA0515S +Converter_DCDC_Isolated:IA0524D +Converter_DCDC_Isolated:IA0524S +Converter_DCDC_Isolated:IA1203D +Converter_DCDC_Isolated:IA1203S +Converter_DCDC_Isolated:IA1205D +Converter_DCDC_Isolated:IA1205S +Converter_DCDC_Isolated:IA1209D +Converter_DCDC_Isolated:IA1209S +Converter_DCDC_Isolated:IA1212D +Converter_DCDC_Isolated:IA1212S +Converter_DCDC_Isolated:IA1215D +Converter_DCDC_Isolated:IA1215S +Converter_DCDC_Isolated:IA1224D +Converter_DCDC_Isolated:IA1224S +Converter_DCDC_Isolated:IA2403D +Converter_DCDC_Isolated:IA2403S +Converter_DCDC_Isolated:IA2405D +Converter_DCDC_Isolated:IA2405S +Converter_DCDC_Isolated:IA2409D +Converter_DCDC_Isolated:IA2409S +Converter_DCDC_Isolated:IA2412D +Converter_DCDC_Isolated:IA2412S +Converter_DCDC_Isolated:IA2415D +Converter_DCDC_Isolated:IA2415S +Converter_DCDC_Isolated:IA2424D +Converter_DCDC_Isolated:IA2424S +Converter_DCDC_Isolated:IA4803D +Converter_DCDC_Isolated:IA4803S +Converter_DCDC_Isolated:IA4805D +Converter_DCDC_Isolated:IA4805S +Converter_DCDC_Isolated:IA4809D +Converter_DCDC_Isolated:IA4809S +Converter_DCDC_Isolated:IA4812D +Converter_DCDC_Isolated:IA4812S +Converter_DCDC_Isolated:IA4815D +Converter_DCDC_Isolated:IA4815S +Converter_DCDC_Isolated:IA4824D +Converter_DCDC_Isolated:IA4824S +Converter_DCDC_Isolated:ISU0205D12 +Converter_DCDC_Isolated:ISU0205D15 +Converter_DCDC_Isolated:ISU0205S05 +Converter_DCDC_Isolated:ISU0205S12 +Converter_DCDC_Isolated:ISU0205S15 +Converter_DCDC_Isolated:ISU0205S24 +Converter_DCDC_Isolated:ISU0224D12 +Converter_DCDC_Isolated:ISU0224D15 +Converter_DCDC_Isolated:ISU0224S05 +Converter_DCDC_Isolated:ISU0224S12 +Converter_DCDC_Isolated:ISU0224S15 +Converter_DCDC_Isolated:ISU0224S24 +Converter_DCDC_Isolated:ISU0248D12 +Converter_DCDC_Isolated:ISU0248D15 +Converter_DCDC_Isolated:ISU0248S05 +Converter_DCDC_Isolated:ISU0248S12 +Converter_DCDC_Isolated:ISU0248S15 +Converter_DCDC_Isolated:ISU0248S24 +Converter_DCDC_Isolated:JTD1524D05 +Converter_DCDC_Isolated:JTD1524D12 +Converter_DCDC_Isolated:JTD1524D15 +Converter_DCDC_Isolated:JTD1524S05 +Converter_DCDC_Isolated:JTD1524S12 +Converter_DCDC_Isolated:JTD1524S15 +Converter_DCDC_Isolated:JTD1524S3V3 +Converter_DCDC_Isolated:JTD1548D05 +Converter_DCDC_Isolated:JTD1548D12 +Converter_DCDC_Isolated:JTD1548D15 +Converter_DCDC_Isolated:JTD1548S05 +Converter_DCDC_Isolated:JTD1548S12 +Converter_DCDC_Isolated:JTD1548S15 +Converter_DCDC_Isolated:JTD1548S3V3 +Converter_DCDC_Isolated:JTD2024D05 +Converter_DCDC_Isolated:JTD2024D12 +Converter_DCDC_Isolated:JTD2024D15 +Converter_DCDC_Isolated:JTD2024S05 +Converter_DCDC_Isolated:JTD2024S12 +Converter_DCDC_Isolated:JTD2024S15 +Converter_DCDC_Isolated:JTD2024S3V3 +Converter_DCDC_Isolated:JTD2048D05 +Converter_DCDC_Isolated:JTD2048D12 +Converter_DCDC_Isolated:JTD2048D15 +Converter_DCDC_Isolated:JTD2048S05 +Converter_DCDC_Isolated:JTD2048S12 +Converter_DCDC_Isolated:JTD2048S15 +Converter_DCDC_Isolated:JTD2048S3V3 +Converter_DCDC_Isolated:MEE1S0303SC +Converter_DCDC_Isolated:MEE1S0305SC +Converter_DCDC_Isolated:MEE1S0309SC +Converter_DCDC_Isolated:MEE1S0312SC +Converter_DCDC_Isolated:MEE1S0315SC +Converter_DCDC_Isolated:MEE1S0503SC +Converter_DCDC_Isolated:MEE1S0505SC +Converter_DCDC_Isolated:MEE1S0509SC +Converter_DCDC_Isolated:MEE1S0512SC +Converter_DCDC_Isolated:MEE1S0515SC +Converter_DCDC_Isolated:MEE1S1205SC +Converter_DCDC_Isolated:MEE1S1209SC +Converter_DCDC_Isolated:MEE1S1212SC +Converter_DCDC_Isolated:MEE1S1215SC +Converter_DCDC_Isolated:MEE1S1505SC +Converter_DCDC_Isolated:MEE1S1509SC +Converter_DCDC_Isolated:MEE1S1512SC +Converter_DCDC_Isolated:MEE1S1515SC +Converter_DCDC_Isolated:MEE1S2405SC +Converter_DCDC_Isolated:MEE1S2409SC +Converter_DCDC_Isolated:MEE1S2412SC +Converter_DCDC_Isolated:MEE1S2415SC +Converter_DCDC_Isolated:MEE3S0505SC +Converter_DCDC_Isolated:MEE3S0509SC +Converter_DCDC_Isolated:MEE3S0512SC +Converter_DCDC_Isolated:MEE3S0515SC +Converter_DCDC_Isolated:MEE3S1205SC +Converter_DCDC_Isolated:MEE3S1209SC +Converter_DCDC_Isolated:MEE3S1212SC +Converter_DCDC_Isolated:MEE3S1215SC +Converter_DCDC_Isolated:MGJ2D051505SC +Converter_DCDC_Isolated:MGJ2D051509SC +Converter_DCDC_Isolated:MGJ2D051515SC +Converter_DCDC_Isolated:MGJ2D051802SC +Converter_DCDC_Isolated:MGJ2D052003SC +Converter_DCDC_Isolated:MGJ2D052005SC +Converter_DCDC_Isolated:MGJ2D121505SC +Converter_DCDC_Isolated:MGJ2D121509SC +Converter_DCDC_Isolated:MGJ2D121802SC +Converter_DCDC_Isolated:MGJ2D122003SC +Converter_DCDC_Isolated:MGJ2D122005SC +Converter_DCDC_Isolated:MGJ2D151505SC +Converter_DCDC_Isolated:MGJ2D151509SC +Converter_DCDC_Isolated:MGJ2D151515SC +Converter_DCDC_Isolated:MGJ2D151802SC +Converter_DCDC_Isolated:MGJ2D152003SC +Converter_DCDC_Isolated:MGJ2D152005SC +Converter_DCDC_Isolated:MGJ2D241505SC +Converter_DCDC_Isolated:MGJ2D241509SC +Converter_DCDC_Isolated:MGJ2D241709SC +Converter_DCDC_Isolated:MGJ2D241802SC +Converter_DCDC_Isolated:MGJ2D242003SC +Converter_DCDC_Isolated:MGJ2D242005SC +Converter_DCDC_Isolated:NCS1S1203SC +Converter_DCDC_Isolated:NCS1S1205SC +Converter_DCDC_Isolated:NCS1S1212SC +Converter_DCDC_Isolated:NCS1S2403SC +Converter_DCDC_Isolated:NCS1S2405SC +Converter_DCDC_Isolated:NCS1S2412SC +Converter_DCDC_Isolated:NMA0505DC +Converter_DCDC_Isolated:NMA0505SC +Converter_DCDC_Isolated:NMA0509DC +Converter_DCDC_Isolated:NMA0509SC +Converter_DCDC_Isolated:NMA0512DC +Converter_DCDC_Isolated:NMA0512SC +Converter_DCDC_Isolated:NMA0515DC +Converter_DCDC_Isolated:NMA0515SC +Converter_DCDC_Isolated:NMA1205DC +Converter_DCDC_Isolated:NMA1205SC +Converter_DCDC_Isolated:NMA1209DC +Converter_DCDC_Isolated:NMA1209SC +Converter_DCDC_Isolated:NMA1212DC +Converter_DCDC_Isolated:NMA1212SC +Converter_DCDC_Isolated:NMA1215DC +Converter_DCDC_Isolated:NMA1215SC +Converter_DCDC_Isolated:NMA1505DC +Converter_DCDC_Isolated:NMA1505SC +Converter_DCDC_Isolated:NMA1512DC +Converter_DCDC_Isolated:NMA1512SC +Converter_DCDC_Isolated:NMA1515DC +Converter_DCDC_Isolated:NMA1515SC +Converter_DCDC_Isolated:NXE1S0303MC +Converter_DCDC_Isolated:NXE1S0305MC +Converter_DCDC_Isolated:NXE1S0505MC +Converter_DCDC_Isolated:NXE2S0505MC +Converter_DCDC_Isolated:NXE2S1205MC +Converter_DCDC_Isolated:NXE2S1212MC +Converter_DCDC_Isolated:NXE2S1215MC +Converter_DCDC_Isolated:RPA60-2405SFW +Converter_DCDC_Isolated:RPA60-2412SFW +Converter_DCDC_Isolated:RPA60-2415SFW +Converter_DCDC_Isolated:RPA60-2424SFW +Converter_DCDC_Isolated:SMU02L-24N +Converter_DCDC_Isolated:TBA1-0310 +Converter_DCDC_Isolated:TBA1-0311 +Converter_DCDC_Isolated:TBA1-0510 +Converter_DCDC_Isolated:TBA1-0511 +Converter_DCDC_Isolated:TBA1-0512 +Converter_DCDC_Isolated:TBA1-0513 +Converter_DCDC_Isolated:TBA1-0519 +Converter_DCDC_Isolated:TBA1-1211 +Converter_DCDC_Isolated:TBA1-1212 +Converter_DCDC_Isolated:TBA1-1213 +Converter_DCDC_Isolated:TBA1-1219 +Converter_DCDC_Isolated:TBA1-2411 +Converter_DCDC_Isolated:TBA1-2412 +Converter_DCDC_Isolated:TBA1-2413 +Converter_DCDC_Isolated:TBA1-2419 +Converter_DCDC_Isolated:TEA1-0505 +Converter_DCDC_Isolated:TEC2-1210WI +Converter_DCDC_Isolated:TEC2-1211WI +Converter_DCDC_Isolated:TEC2-1212WI +Converter_DCDC_Isolated:TEC2-1213WI +Converter_DCDC_Isolated:TEC2-1215WI +Converter_DCDC_Isolated:TEC2-1219WI +Converter_DCDC_Isolated:TEC2-1221WI +Converter_DCDC_Isolated:TEC2-1222WI +Converter_DCDC_Isolated:TEC2-1223WI +Converter_DCDC_Isolated:TEC2-2410WI +Converter_DCDC_Isolated:TEC2-2411WI +Converter_DCDC_Isolated:TEC2-2412WI +Converter_DCDC_Isolated:TEC2-2413WI +Converter_DCDC_Isolated:TEC2-2415WI +Converter_DCDC_Isolated:TEC2-2419WI +Converter_DCDC_Isolated:TEC2-2421WI +Converter_DCDC_Isolated:TEC2-2422WI +Converter_DCDC_Isolated:TEC2-2423WI +Converter_DCDC_Isolated:TEC2-4810WI +Converter_DCDC_Isolated:TEC2-4811WI +Converter_DCDC_Isolated:TEC2-4812WI +Converter_DCDC_Isolated:TEC2-4813WI +Converter_DCDC_Isolated:TEC2-4815WI +Converter_DCDC_Isolated:TEC2-4819WI +Converter_DCDC_Isolated:TEC2-4821WI +Converter_DCDC_Isolated:TEC2-4822WI +Converter_DCDC_Isolated:TEC2-4823WI +Converter_DCDC_Isolated:TEC3-2410UI +Converter_DCDC_Isolated:TEC3-2411UI +Converter_DCDC_Isolated:TEC3-2412UI +Converter_DCDC_Isolated:TEC3-2413UI +Converter_DCDC_Isolated:TEC3-2421UI +Converter_DCDC_Isolated:TEC3-2422UI +Converter_DCDC_Isolated:TEC3-2423UI +Converter_DCDC_Isolated:TEC6-2410UI +Converter_DCDC_Isolated:TEC6-2411UI +Converter_DCDC_Isolated:TEC6-2412UI +Converter_DCDC_Isolated:TEC6-2413UI +Converter_DCDC_Isolated:TEC6-2415UI +Converter_DCDC_Isolated:TEC6-2419UI +Converter_DCDC_Isolated:TEC6-2421UI +Converter_DCDC_Isolated:TEC6-2422UI +Converter_DCDC_Isolated:TEC6-2423UI +Converter_DCDC_Isolated:TEN20-11011WIRH +Converter_DCDC_Isolated:TEN20-11012WIRH +Converter_DCDC_Isolated:TEN20-11013WIRH +Converter_DCDC_Isolated:TEN20-11015WIRH +Converter_DCDC_Isolated:TEN20-11021WIRH +Converter_DCDC_Isolated:TEN20-11022WIRH +Converter_DCDC_Isolated:TEN20-11023WIRH +Converter_DCDC_Isolated:TEN20-2410WIN +Converter_DCDC_Isolated:TEN20-2411WIN +Converter_DCDC_Isolated:TEN20-2412WIN +Converter_DCDC_Isolated:TEN20-2413WIN +Converter_DCDC_Isolated:TEN20-2421WIN +Converter_DCDC_Isolated:TEN20-2422WIN +Converter_DCDC_Isolated:TEN20-2423WIN +Converter_DCDC_Isolated:TEN20-4810WIN +Converter_DCDC_Isolated:TEN20-4811WIN +Converter_DCDC_Isolated:TEN20-4812WIN +Converter_DCDC_Isolated:TEN20-4813WIN +Converter_DCDC_Isolated:TEN20-4821WIN +Converter_DCDC_Isolated:TEN20-4822WIN +Converter_DCDC_Isolated:TEN20-4823WIN +Converter_DCDC_Isolated:TEN40-11011WIRH +Converter_DCDC_Isolated:TEN40-11012WIRH +Converter_DCDC_Isolated:TEN40-11013WIRH +Converter_DCDC_Isolated:TEN40-11015WIRH +Converter_DCDC_Isolated:TEN40-11022WIRH +Converter_DCDC_Isolated:TEN40-11023WIRH +Converter_DCDC_Isolated:THR40-7211WI +Converter_DCDC_Isolated:THR40-7212WI +Converter_DCDC_Isolated:THR40-7213WI +Converter_DCDC_Isolated:THR40-72154WI +Converter_DCDC_Isolated:THR40-7215WI +Converter_DCDC_Isolated:THR40-7222WI +Converter_DCDC_Isolated:THR40-7223WI +Converter_DCDC_Isolated:TME-0303S +Converter_DCDC_Isolated:TME-0305S +Converter_DCDC_Isolated:TME-0503S +Converter_DCDC_Isolated:TME-0505S +Converter_DCDC_Isolated:TME-0509S +Converter_DCDC_Isolated:TME-0512S +Converter_DCDC_Isolated:TME-0515S +Converter_DCDC_Isolated:TME-1205S +Converter_DCDC_Isolated:TME-1209S +Converter_DCDC_Isolated:TME-1212S +Converter_DCDC_Isolated:TME-1215S +Converter_DCDC_Isolated:TME-2405S +Converter_DCDC_Isolated:TME-2409S +Converter_DCDC_Isolated:TME-2412S +Converter_DCDC_Isolated:TME-2415S +Converter_DCDC_Isolated:TMR-0510 +Converter_DCDC_Isolated:TMR-0511 +Converter_DCDC_Isolated:TMR-0512 +Converter_DCDC_Isolated:TMR-0521 +Converter_DCDC_Isolated:TMR-0522 +Converter_DCDC_Isolated:TMR-0523 +Converter_DCDC_Isolated:TMR-1210 +Converter_DCDC_Isolated:TMR-1211 +Converter_DCDC_Isolated:TMR-1212 +Converter_DCDC_Isolated:TMR-1221 +Converter_DCDC_Isolated:TMR-1222 +Converter_DCDC_Isolated:TMR-1223 +Converter_DCDC_Isolated:TMR-2410 +Converter_DCDC_Isolated:TMR-2411 +Converter_DCDC_Isolated:TMR-2412 +Converter_DCDC_Isolated:TMR-2421 +Converter_DCDC_Isolated:TMR-2422 +Converter_DCDC_Isolated:TMR-2423 +Converter_DCDC_Isolated:TMR-4810 +Converter_DCDC_Isolated:TMR-4811 +Converter_DCDC_Isolated:TMR-4812 +Converter_DCDC_Isolated:TMR-4821 +Converter_DCDC_Isolated:TMR-4822 +Converter_DCDC_Isolated:TMR-4823 +Converter_DCDC_Isolated:TMR10-1211WI +Converter_DCDC_Isolated:TMR10-1212WI +Converter_DCDC_Isolated:TMR10-1213WI +Converter_DCDC_Isolated:TMR10-1215WI +Converter_DCDC_Isolated:TMR10-1222WI +Converter_DCDC_Isolated:TMR10-1223WI +Converter_DCDC_Isolated:TMR10-2410WIR +Converter_DCDC_Isolated:TMR10-2411WI +Converter_DCDC_Isolated:TMR10-2411WIR +Converter_DCDC_Isolated:TMR10-2412WI +Converter_DCDC_Isolated:TMR10-2412WIR +Converter_DCDC_Isolated:TMR10-2413WI +Converter_DCDC_Isolated:TMR10-2413WIR +Converter_DCDC_Isolated:TMR10-2415WI +Converter_DCDC_Isolated:TMR10-2415WIR +Converter_DCDC_Isolated:TMR10-2421WIR +Converter_DCDC_Isolated:TMR10-2422WI +Converter_DCDC_Isolated:TMR10-2422WIR +Converter_DCDC_Isolated:TMR10-2423WI +Converter_DCDC_Isolated:TMR10-2423WIR +Converter_DCDC_Isolated:TMR10-4810WIR +Converter_DCDC_Isolated:TMR10-4811WI +Converter_DCDC_Isolated:TMR10-4811WIR +Converter_DCDC_Isolated:TMR10-4812WI +Converter_DCDC_Isolated:TMR10-4812WIR +Converter_DCDC_Isolated:TMR10-4813WI +Converter_DCDC_Isolated:TMR10-4813WIR +Converter_DCDC_Isolated:TMR10-4815WI +Converter_DCDC_Isolated:TMR10-4815WIR +Converter_DCDC_Isolated:TMR10-4821WIR +Converter_DCDC_Isolated:TMR10-4822WI +Converter_DCDC_Isolated:TMR10-4822WIR +Converter_DCDC_Isolated:TMR10-4823WI +Converter_DCDC_Isolated:TMR10-4823WIR +Converter_DCDC_Isolated:TMR10-7210WIR +Converter_DCDC_Isolated:TMR10-7211WIR +Converter_DCDC_Isolated:TMR10-7212WIR +Converter_DCDC_Isolated:TMR10-7213WIR +Converter_DCDC_Isolated:TMR10-7215WIR +Converter_DCDC_Isolated:TMR10-7221WIR +Converter_DCDC_Isolated:TMR10-7222WIR +Converter_DCDC_Isolated:TMR10-7223WIR +Converter_DCDC_Isolated:TMR4-2411WI +Converter_DCDC_Isolated:TMR4-2412WI +Converter_DCDC_Isolated:TMR4-2413WI +Converter_DCDC_Isolated:TMR4-2415WI +Converter_DCDC_Isolated:TMR4-2422WI +Converter_DCDC_Isolated:TMR4-2423WI +Converter_DCDC_Isolated:TMR4-4811WI +Converter_DCDC_Isolated:TMR4-4812WI +Converter_DCDC_Isolated:TMR4-4813WI +Converter_DCDC_Isolated:TMR4-4815WI +Converter_DCDC_Isolated:TMR4-4822WI +Converter_DCDC_Isolated:TMR4-4823WI +Converter_DCDC_Isolated:TMR_1-0511 +Converter_DCDC_Isolated:TMR_1-0511SM +Converter_DCDC_Isolated:TMR_1-0512 +Converter_DCDC_Isolated:TMR_1-0512SM +Converter_DCDC_Isolated:TMR_1-0513 +Converter_DCDC_Isolated:TMR_1-0513SM +Converter_DCDC_Isolated:TMR_1-0515 +Converter_DCDC_Isolated:TMR_1-0522 +Converter_DCDC_Isolated:TMR_1-0522SM +Converter_DCDC_Isolated:TMR_1-0523 +Converter_DCDC_Isolated:TMR_1-0523SM +Converter_DCDC_Isolated:TMR_1-1211 +Converter_DCDC_Isolated:TMR_1-1211SM +Converter_DCDC_Isolated:TMR_1-1212 +Converter_DCDC_Isolated:TMR_1-1212SM +Converter_DCDC_Isolated:TMR_1-1213 +Converter_DCDC_Isolated:TMR_1-1213SM +Converter_DCDC_Isolated:TMR_1-1215 +Converter_DCDC_Isolated:TMR_1-1222 +Converter_DCDC_Isolated:TMR_1-1222SM +Converter_DCDC_Isolated:TMR_1-1223 +Converter_DCDC_Isolated:TMR_1-1223SM +Converter_DCDC_Isolated:TMR_1-2411 +Converter_DCDC_Isolated:TMR_1-2411SM +Converter_DCDC_Isolated:TMR_1-2412 +Converter_DCDC_Isolated:TMR_1-2412SM +Converter_DCDC_Isolated:TMR_1-2413 +Converter_DCDC_Isolated:TMR_1-2413SM +Converter_DCDC_Isolated:TMR_1-2415 +Converter_DCDC_Isolated:TMR_1-2422 +Converter_DCDC_Isolated:TMR_1-2422SM +Converter_DCDC_Isolated:TMR_1-2423 +Converter_DCDC_Isolated:TMR_1-2423SM +Converter_DCDC_Isolated:TMR_1-4811 +Converter_DCDC_Isolated:TMR_1-4811SM +Converter_DCDC_Isolated:TMR_1-4812 +Converter_DCDC_Isolated:TMR_1-4812SM +Converter_DCDC_Isolated:TMR_1-4813 +Converter_DCDC_Isolated:TMR_1-4813SM +Converter_DCDC_Isolated:TMR_1-4815 +Converter_DCDC_Isolated:TMR_1-4822 +Converter_DCDC_Isolated:TMR_1-4822SM +Converter_DCDC_Isolated:TMR_1-4823 +Converter_DCDC_Isolated:TMR_1-4823SM +Converter_DCDC_Isolated:TMU3-0511 +Converter_DCDC_Isolated:TMU3-0512 +Converter_DCDC_Isolated:TMU3-0513 +Converter_DCDC_Isolated:TMU3-1211 +Converter_DCDC_Isolated:TMU3-1212 +Converter_DCDC_Isolated:TMU3-1213 +Converter_DCDC_Isolated:TMU3-2411 +Converter_DCDC_Isolated:TMU3-2412 +Converter_DCDC_Isolated:TMU3-2413 DSP_AnalogDevices:ADAU1450 DSP_AnalogDevices:ADAU1451 DSP_AnalogDevices:ADAU1452 @@ -6142,6 +6226,7 @@ Device:SparkGap Device:Speaker Device:Speaker_Crystal Device:Speaker_Ultrasound +Device:Thermal_Jumper Device:Thermistor Device:Thermistor_NTC Device:Thermistor_NTC_3Wire @@ -15697,8 +15782,8 @@ Power_Management:LMG5200 Power_Management:LT1641-1 Power_Management:LT1641-2 Power_Management:LT4230xDD -Power_Management:LT4231xUF Power_Management:LT4320xDD-1 +Power_Management:LT4321xUF Power_Management:LTC4242xUHF Power_Management:LTC4357DCB Power_Management:LTC4357MS8 @@ -18849,7 +18934,6 @@ Regulator_Switching:ADP2360xCP-5.0 Regulator_Switching:ADP5054 Regulator_Switching:ADP5070AREZ Regulator_Switching:ADP5071AREZ -Regulator_Switching:ADuM6000 Regulator_Switching:AOZ1280CI Regulator_Switching:AOZ1282CI Regulator_Switching:AOZ1282CI-1 @@ -18899,15 +18983,6 @@ Regulator_Switching:BD9778F Regulator_Switching:BD9778HFP Regulator_Switching:BD9781HFP Regulator_Switching:BD9G341EFJ -Regulator_Switching:CRE1S0305S3C -Regulator_Switching:CRE1S0505DC -Regulator_Switching:CRE1S0505S3C -Regulator_Switching:CRE1S0505SC -Regulator_Switching:CRE1S0515SC -Regulator_Switching:CRE1S1205SC -Regulator_Switching:CRE1S1212SC -Regulator_Switching:CRE1S2405SC -Regulator_Switching:CRE1S2412SC Regulator_Switching:DIO6970 Regulator_Switching:EA3036CQB Regulator_Switching:EA3058QD @@ -19297,6 +19372,7 @@ Regulator_Switching:LT1373HVCN8 Regulator_Switching:LT1373HVCS8 Regulator_Switching:LT1377CN8 Regulator_Switching:LT1377CS8 +Regulator_Switching:LT1931 Regulator_Switching:LT1945 Regulator_Switching:LT3430 Regulator_Switching:LT3430-1 @@ -19487,35 +19563,6 @@ Regulator_Switching:NID60S24-05 Regulator_Switching:NID60S24-12 Regulator_Switching:NID60S24-15 Regulator_Switching:NID60S48-24 -Regulator_Switching:NMA0505DC -Regulator_Switching:NMA0505SC -Regulator_Switching:NMA0509DC -Regulator_Switching:NMA0509SC -Regulator_Switching:NMA0512DC -Regulator_Switching:NMA0512SC -Regulator_Switching:NMA0515DC -Regulator_Switching:NMA0515SC -Regulator_Switching:NMA1205DC -Regulator_Switching:NMA1205SC -Regulator_Switching:NMA1209DC -Regulator_Switching:NMA1209SC -Regulator_Switching:NMA1212DC -Regulator_Switching:NMA1212SC -Regulator_Switching:NMA1215DC -Regulator_Switching:NMA1215SC -Regulator_Switching:NMA1505DC -Regulator_Switching:NMA1505SC -Regulator_Switching:NMA1512DC -Regulator_Switching:NMA1512SC -Regulator_Switching:NMA1515DC -Regulator_Switching:NMA1515SC -Regulator_Switching:NXE1S0303MC -Regulator_Switching:NXE1S0305MC -Regulator_Switching:NXE1S0505MC -Regulator_Switching:NXE2S0505MC -Regulator_Switching:NXE2S1205MC -Regulator_Switching:NXE2S1212MC -Regulator_Switching:NXE2S1215MC Regulator_Switching:PAM2301CAAB120 Regulator_Switching:PAM2301CAAB330 Regulator_Switching:PAM2301CAABADJ @@ -19607,50 +19654,6 @@ Regulator_Switching:TLV62569ADRL Regulator_Switching:TLV62569DBV Regulator_Switching:TLV62569DDC Regulator_Switching:TLV62569DRL -Regulator_Switching:TMR_1-0511 -Regulator_Switching:TMR_1-0511SM -Regulator_Switching:TMR_1-0512 -Regulator_Switching:TMR_1-0512SM -Regulator_Switching:TMR_1-0513 -Regulator_Switching:TMR_1-0513SM -Regulator_Switching:TMR_1-0515 -Regulator_Switching:TMR_1-0522 -Regulator_Switching:TMR_1-0522SM -Regulator_Switching:TMR_1-0523 -Regulator_Switching:TMR_1-0523SM -Regulator_Switching:TMR_1-1211 -Regulator_Switching:TMR_1-1211SM -Regulator_Switching:TMR_1-1212 -Regulator_Switching:TMR_1-1212SM -Regulator_Switching:TMR_1-1213 -Regulator_Switching:TMR_1-1213SM -Regulator_Switching:TMR_1-1215 -Regulator_Switching:TMR_1-1222 -Regulator_Switching:TMR_1-1222SM -Regulator_Switching:TMR_1-1223 -Regulator_Switching:TMR_1-1223SM -Regulator_Switching:TMR_1-2411 -Regulator_Switching:TMR_1-2411SM -Regulator_Switching:TMR_1-2412 -Regulator_Switching:TMR_1-2412SM -Regulator_Switching:TMR_1-2413 -Regulator_Switching:TMR_1-2413SM -Regulator_Switching:TMR_1-2415 -Regulator_Switching:TMR_1-2422 -Regulator_Switching:TMR_1-2422SM -Regulator_Switching:TMR_1-2423 -Regulator_Switching:TMR_1-2423SM -Regulator_Switching:TMR_1-4811 -Regulator_Switching:TMR_1-4811SM -Regulator_Switching:TMR_1-4812 -Regulator_Switching:TMR_1-4812SM -Regulator_Switching:TMR_1-4813 -Regulator_Switching:TMR_1-4813SM -Regulator_Switching:TMR_1-4815 -Regulator_Switching:TMR_1-4822 -Regulator_Switching:TMR_1-4822SM -Regulator_Switching:TMR_1-4823 -Regulator_Switching:TMR_1-4823SM Regulator_Switching:TNY263G Regulator_Switching:TNY263P Regulator_Switching:TNY264G @@ -22516,6 +22519,7 @@ Transistor_FET_Other:Q_NMOS_Depletion_GDS Transistor_FET_Other:Q_NMOS_Depletion_GSD Transistor_FET_Other:Q_NMOS_Depletion_SDG Transistor_FET_Other:Q_NMOS_Depletion_SGD +Transistor_FET_Other:SP010N70T8 Transistor_FET_Other:VNB35N07xx-E Transistor_FET_Other:VNP10N07 Transistor_FET_Other:VNP35N07xx-E diff --git a/src/Doctrine/Middleware/SQLiteRegexExtensionMiddlewareDriver.php b/src/Doctrine/Middleware/SQLiteRegexExtensionMiddlewareDriver.php index aa6108c9..f721f986 100644 --- a/src/Doctrine/Middleware/SQLiteRegexExtensionMiddlewareDriver.php +++ b/src/Doctrine/Middleware/SQLiteRegexExtensionMiddlewareDriver.php @@ -27,6 +27,7 @@ use App\Doctrine\Functions\SiValueSort; use App\Exceptions\InvalidRegexException; use Doctrine\DBAL\Driver\Connection; use Doctrine\DBAL\Driver\Middleware\AbstractDriverMiddleware; +use Pdo\Sqlite; /** * This middleware is used to add the regexp operator to the SQLite platform. @@ -44,17 +45,30 @@ class SQLiteRegexExtensionMiddlewareDriver extends AbstractDriverMiddleware if ($params['driver'] === 'pdo_sqlite') { $native_connection = $connection->getNativeConnection(); - //Ensure that the function really exists on the connection, as it is marked as experimental according to PHP documentation if($native_connection instanceof \PDO) { - $native_connection->sqliteCreateFunction('REGEXP', self::regexp(...), 2, \PDO::SQLITE_DETERMINISTIC); - $native_connection->sqliteCreateFunction('FIELD', self::field(...), -1, \PDO::SQLITE_DETERMINISTIC); - $native_connection->sqliteCreateFunction('FIELD2', self::field2(...), 2, \PDO::SQLITE_DETERMINISTIC); - //Create a new collation for natural sorting - $native_connection->sqliteCreateCollation('NATURAL_CMP', strnatcmp(...)); + //Use the new PDO::createFunction and PDO::createCollation methods if available (PHP 8.4+) + if (is_a($native_connection, Sqlite::class)) { #TODO: Remove this check when PHP 8.4 is the minimum requirement + $native_connection->createFunction('REGEXP', self::regexp(...), 2, Sqlite::DETERMINISTIC); + $native_connection->createFunction('FIELD', self::field(...), -1, Sqlite::DETERMINISTIC); + $native_connection->createFunction('FIELD2', self::field2(...), 2, Sqlite::DETERMINISTIC); - //Create a function for SI prefix value sorting - $native_connection->sqliteCreateFunction('SI_VALUE', SiValueSort::sqliteSiValue(...), 1, \PDO::SQLITE_DETERMINISTIC); + //Create a new collation for natural sorting + $native_connection->createCollation('NATURAL_CMP', strnatcmp(...)); + + //Create a function for SI prefix value sorting + $native_connection->createFunction('SI_VALUE', SiValueSort::sqliteSiValue(...), 1, Sqlite::DETERMINISTIC); + } else { + $native_connection->sqliteCreateFunction('REGEXP', self::regexp(...), 2, \PDO::SQLITE_DETERMINISTIC); + $native_connection->sqliteCreateFunction('FIELD', self::field(...), -1, \PDO::SQLITE_DETERMINISTIC); + $native_connection->sqliteCreateFunction('FIELD2', self::field2(...), 2, \PDO::SQLITE_DETERMINISTIC); + + //Create a new collation for natural sorting + $native_connection->sqliteCreateCollation('NATURAL_CMP', strnatcmp(...)); + + //Create a function for SI prefix value sorting + $native_connection->sqliteCreateFunction('SI_VALUE', SiValueSort::sqliteSiValue(...), 1, \PDO::SQLITE_DETERMINISTIC); + } } } @@ -118,4 +132,4 @@ class SQLiteRegexExtensionMiddlewareDriver extends AbstractDriverMiddleware return $index + 1; } -} \ No newline at end of file +} diff --git a/src/Entity/Attachments/AttachmentType.php b/src/Entity/Attachments/AttachmentType.php index 7a314ffe..03bb8031 100644 --- a/src/Entity/Attachments/AttachmentType.php +++ b/src/Entity/Attachments/AttachmentType.php @@ -65,21 +65,16 @@ use Symfony\Component\Validator\Constraints as Assert; new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), + new GetCollection( + uriTemplate: '/attachment_types/{id}/children.{_format}', + uriVariables: ['id' => new Link(fromProperty: 'children', fromClass: AttachmentType::class)], + openapi: new Operation(summary: 'Retrieves the children elements of an attachment type.'), + security: 'is_granted("@attachment_types.read")' + ), ], normalizationContext: ['groups' => ['attachment_type:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['attachment_type:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/attachment_types/{id}/children.{_format}', - operations: [ - new GetCollection(openapi: new Operation(summary: 'Retrieves the children elements of an attachment type.'), - security: 'is_granted("@attachment_types.read")') - ], - uriVariables: [ - 'id' => new Link(fromProperty: 'children', fromClass: AttachmentType::class) - ], - normalizationContext: ['groups' => ['attachment_type:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["name", "comment"])] #[ApiFilter(DateFilter::class, strategy: DateFilterInterface::EXCLUDE_NULL)] diff --git a/src/Entity/Parts/Category.php b/src/Entity/Parts/Category.php index 22f8a3e4..80fcc43c 100644 --- a/src/Entity/Parts/Category.php +++ b/src/Entity/Parts/Category.php @@ -68,23 +68,16 @@ use Symfony\Component\Validator\Constraints as Assert; new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), + new GetCollection( + uriTemplate: '/categories/{id}/children.{_format}', + uriVariables: ['id' => new Link(fromProperty: 'children', fromClass: Category::class)], + openapi: new Operation(summary: 'Retrieves the children elements of a category.'), + security: 'is_granted("@categories.read")' + ), ], normalizationContext: ['groups' => ['category:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['category:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/categories/{id}/children.{_format}', - operations: [ - new GetCollection( - openapi: new Operation(summary: 'Retrieves the children elements of a category.'), - security: 'is_granted("@categories.read")' - ) - ], - uriVariables: [ - 'id' => new Link(fromProperty: 'children', fromClass: Category::class) - ], - normalizationContext: ['groups' => ['category:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["name", "comment"])] #[ApiFilter(DateFilter::class, strategy: DateFilterInterface::EXCLUDE_NULL)] diff --git a/src/Entity/Parts/Footprint.php b/src/Entity/Parts/Footprint.php index 3d8be686..2027a310 100644 --- a/src/Entity/Parts/Footprint.php +++ b/src/Entity/Parts/Footprint.php @@ -67,23 +67,16 @@ use Symfony\Component\Validator\Constraints as Assert; new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), + new GetCollection( + uriTemplate: '/footprints/{id}/children.{_format}', + uriVariables: ['id' => new Link(fromProperty: 'children', fromClass: Footprint::class)], + openapi: new Operation(summary: 'Retrieves the children elements of a footprint.'), + security: 'is_granted("@footprints.read")' + ), ], normalizationContext: ['groups' => ['footprint:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['footprint:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/footprints/{id}/children.{_format}', - operations: [ - new GetCollection( - openapi: new Operation(summary: 'Retrieves the children elements of a footprint.'), - security: 'is_granted("@footprints.read")' - ) - ], - uriVariables: [ - 'id' => new Link(fromProperty: 'children', fromClass: Footprint::class) - ], - normalizationContext: ['groups' => ['footprint:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["name", "comment"])] #[ApiFilter(DateFilter::class, strategy: DateFilterInterface::EXCLUDE_NULL)] diff --git a/src/Entity/Parts/InfoProviderReference.php b/src/Entity/Parts/InfoProviderReference.php index 810aef0c..8f6874b9 100644 --- a/src/Entity/Parts/InfoProviderReference.php +++ b/src/Entity/Parts/InfoProviderReference.php @@ -28,9 +28,11 @@ use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping\Column; use Doctrine\ORM\Mapping\Embeddable; use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\Validator\Constraints as Assert; +use Symfony\Component\Validator\Context\ExecutionContextInterface; /** - * This class represents a reference to a info provider inside a part. + * This class represents a reference to an info provider inside a part. * @see \App\Tests\Entity\Parts\InfoProviderReferenceTest */ #[Embeddable] @@ -157,4 +159,44 @@ class InfoProviderReference $ref->last_updated = new \DateTimeImmutable(); return $ref; } + + /** + * Creates a reference to an info provider based on the given parameters. + * @param string|null $provider_key + * @param string|null $provider_id + * @param string|null $provider_url + * @param \DateTimeImmutable|null $last_updated + * @return self + */ + public static function create(?string $provider_key, ?string $provider_id, ?string $provider_url, ?\DateTimeImmutable $last_updated): self + { + $ref = new InfoProviderReference(); + $ref->provider_key = $provider_key; + $ref->provider_id = $provider_id; + $ref->provider_url = $provider_url; + $ref->last_updated = $last_updated; + return $ref; + } + + #[Assert\Callback()] + public function validate(ExecutionContextInterface $context, mixed $payload): void + { + if ($this->provider_key === null && $this->provider_id !== null) { + $context->buildViolation('info_providers.validation.provider_id_without_key') + ->atPath('provider_key') + ->addViolation(); + } + + if ($this->provider_key === null && $this->provider_url !== null) { + $context->buildViolation('info_providers.validation.provider_url_without_key') + ->atPath('provider_url') + ->addViolation(); + } + + if ($this->provider_key !== null && $this->provider_id === null) { + $context->buildViolation('info_providers.validation.provider_key_without_id') + ->atPath('provider_id') + ->addViolation(); + } + } } diff --git a/src/Entity/Parts/Manufacturer.php b/src/Entity/Parts/Manufacturer.php index 0edf8232..76526c31 100644 --- a/src/Entity/Parts/Manufacturer.php +++ b/src/Entity/Parts/Manufacturer.php @@ -66,23 +66,16 @@ use Symfony\Component\Validator\Constraints as Assert; new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), + new GetCollection( + uriTemplate: '/manufacturers/{id}/children.{_format}', + uriVariables: ['id' => new Link(fromProperty: 'children', fromClass: Manufacturer::class)], + openapi: new Operation(summary: 'Retrieves the children elements of a manufacturer.'), + security: 'is_granted("@manufacturers.read")' + ), ], normalizationContext: ['groups' => ['manufacturer:read', 'company:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['manufacturer:write', 'company:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/manufacturers/{id}/children.{_format}', - operations: [ - new GetCollection( - openapi: new Operation(summary: 'Retrieves the children elements of a manufacturer.'), - security: 'is_granted("@manufacturers.read")' - ) - ], - uriVariables: [ - 'id' => new Link(fromProperty: 'children', fromClass: Manufacturer::class) - ], - normalizationContext: ['groups' => ['manufacturer:read', 'company:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["name", "comment"])] #[ApiFilter(DateFilter::class, strategy: DateFilterInterface::EXCLUDE_NULL)] diff --git a/src/Entity/Parts/MeasurementUnit.php b/src/Entity/Parts/MeasurementUnit.php index 6dd0b9f2..e775b65b 100644 --- a/src/Entity/Parts/MeasurementUnit.php +++ b/src/Entity/Parts/MeasurementUnit.php @@ -71,23 +71,16 @@ use Symfony\Component\Validator\Constraints\Length; new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), + new GetCollection( + uriTemplate: '/measurement_units/{id}/children.{_format}', + uriVariables: ['id' => new Link(fromProperty: 'children', fromClass: MeasurementUnit::class)], + openapi: new Operation(summary: 'Retrieves the children elements of a MeasurementUnit.'), + security: 'is_granted("@measurement_units.read")' + ), ], normalizationContext: ['groups' => ['measurement_unit:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['measurement_unit:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/measurement_units/{id}/children.{_format}', - operations: [ - new GetCollection( - openapi: new Operation(summary: 'Retrieves the children elements of a MeasurementUnit.'), - security: 'is_granted("@measurement_units.read")' - ) - ], - uriVariables: [ - 'id' => new Link(fromProperty: 'children', fromClass: MeasurementUnit::class) - ], - normalizationContext: ['groups' => ['measurement_unit:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["name", "comment", "unit"])] #[ApiFilter(DateFilter::class, strategy: DateFilterInterface::EXCLUDE_NULL)] diff --git a/src/Entity/Parts/PartTraits/AdvancedPropertyTrait.php b/src/Entity/Parts/PartTraits/AdvancedPropertyTrait.php index 065469b5..9fa41f93 100644 --- a/src/Entity/Parts/PartTraits/AdvancedPropertyTrait.php +++ b/src/Entity/Parts/PartTraits/AdvancedPropertyTrait.php @@ -75,6 +75,7 @@ trait AdvancedPropertyTrait */ #[ORM\Embedded(class: InfoProviderReference::class, columnPrefix: 'provider_reference_')] #[Groups(['full', 'part:read'])] + #[Assert\Valid()] protected InfoProviderReference $providerReference; /** diff --git a/src/Entity/Parts/StorageLocation.php b/src/Entity/Parts/StorageLocation.php index 7ba400d9..9571da6e 100644 --- a/src/Entity/Parts/StorageLocation.php +++ b/src/Entity/Parts/StorageLocation.php @@ -67,23 +67,16 @@ use Symfony\Component\Validator\Constraints as Assert; new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), + new GetCollection( + uriTemplate: '/storage_locations/{id}/children.{_format}', + uriVariables: ['id' => new Link(fromProperty: 'children', fromClass: StorageLocation::class)], + openapi: new Operation(summary: 'Retrieves the children elements of a storage location.'), + security: 'is_granted("@storelocations.read")' + ), ], normalizationContext: ['groups' => ['location:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['location:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/storage_locations/{id}/children.{_format}', - operations: [ - new GetCollection( - openapi: new Operation(summary: 'Retrieves the children elements of a storage location.'), - security: 'is_granted("@storelocations.read")' - ) - ], - uriVariables: [ - 'id' => new Link(fromProperty: 'children', fromClass: StorageLocation::class) - ], - normalizationContext: ['groups' => ['location:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["name", "comment"])] #[ApiFilter(DateFilter::class, strategy: DateFilterInterface::EXCLUDE_NULL)] diff --git a/src/Entity/Parts/Supplier.php b/src/Entity/Parts/Supplier.php index 2c004e9e..75cf62d1 100644 --- a/src/Entity/Parts/Supplier.php +++ b/src/Entity/Parts/Supplier.php @@ -71,21 +71,16 @@ use Symfony\Component\Validator\Constraints as Assert; new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), + new GetCollection( + uriTemplate: '/suppliers/{id}/children.{_format}', + uriVariables: ['id' => new Link(fromProperty: 'children', fromClass: Supplier::class)], + openapi: new Operation(summary: 'Retrieves the children elements of a supplier.'), + security: 'is_granted("@manufacturers.read")' + ), ], normalizationContext: ['groups' => ['supplier:read', 'company:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['supplier:write', 'company:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/suppliers/{id}/children.{_format}', - operations: [new GetCollection( - openapi: new Operation(summary: 'Retrieves the children elements of a supplier.'), - security: 'is_granted("@manufacturers.read")' - )], - uriVariables: [ - 'id' => new Link(fromProperty: 'children', fromClass: Supplier::class) - ], - normalizationContext: ['groups' => ['supplier:read', 'company:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["name", "comment"])] #[ApiFilter(DateFilter::class, strategy: DateFilterInterface::EXCLUDE_NULL)] diff --git a/src/Entity/PriceInformations/Currency.php b/src/Entity/PriceInformations/Currency.php index 4a811aa0..507ec810 100644 --- a/src/Entity/PriceInformations/Currency.php +++ b/src/Entity/PriceInformations/Currency.php @@ -71,23 +71,16 @@ use Symfony\Component\Validator\Constraints as Assert; new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), + new GetCollection( + uriTemplate: '/currencies/{id}/children.{_format}', + uriVariables: ['id' => new Link(fromProperty: 'children', fromClass: Currency::class)], + openapi: new Operation(summary: 'Retrieves the children elements of a currency.'), + security: 'is_granted("@currencies.read")' + ), ], normalizationContext: ['groups' => ['currency:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['currency:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/currencies/{id}/children.{_format}', - operations: [ - new GetCollection( - openapi: new Operation(summary: 'Retrieves the children elements of a currency.'), - security: 'is_granted("@currencies.read")' - ) - ], - uriVariables: [ - 'id' => new Link(fromProperty: 'children', fromClass: Currency::class) - ], - normalizationContext: ['groups' => ['currency:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["name", "comment", "iso_code"])] #[ApiFilter(DateFilter::class, strategy: DateFilterInterface::EXCLUDE_NULL)] diff --git a/src/Entity/PriceInformations/Orderdetail.php b/src/Entity/PriceInformations/Orderdetail.php index 56428e3a..8b5c9f7b 100644 --- a/src/Entity/PriceInformations/Orderdetail.php +++ b/src/Entity/PriceInformations/Orderdetail.php @@ -71,23 +71,17 @@ use Symfony\Component\Validator\Constraints\Length; new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), + new GetCollection( + uriTemplate: '/parts/{id}/orderdetails.{_format}', + uriVariables: ['id' => new Link(toProperty: 'part', fromClass: Part::class)], + normalizationContext: ['groups' => ['orderdetail:read', 'pricedetail:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], + openapi: new Operation(summary: 'Retrieves the orderdetails of a part.'), + security: 'is_granted("@parts.read")' + ), ], normalizationContext: ['groups' => ['orderdetail:read', 'orderdetail:read:standalone', 'api:basic:read', 'pricedetail:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['orderdetail:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/parts/{id}/orderdetails.{_format}', - operations: [ - new GetCollection( - openapi: new Operation(summary: 'Retrieves the orderdetails of a part.'), - security: 'is_granted("@parts.read")' - ) - ], - uriVariables: [ - 'id' => new Link(toProperty: 'part', fromClass: Part::class) - ], - normalizationContext: ['groups' => ['orderdetail:read', 'pricedetail:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["supplierpartnr", "supplier_product_url"])] diff --git a/src/Entity/ProjectSystem/Project.php b/src/Entity/ProjectSystem/Project.php index a103d694..34e77051 100644 --- a/src/Entity/ProjectSystem/Project.php +++ b/src/Entity/ProjectSystem/Project.php @@ -66,23 +66,16 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface; new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), + new GetCollection( + uriTemplate: '/projects/{id}/children.{_format}', + uriVariables: ['id' => new Link(fromProperty: 'children', fromClass: Project::class)], + openapi: new Operation(summary: 'Retrieves the children elements of a project.'), + security: 'is_granted("@projects.read")' + ), ], normalizationContext: ['groups' => ['project:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['project:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/projects/{id}/children.{_format}', - operations: [ - new GetCollection( - openapi: new Operation(summary: 'Retrieves the children elements of a project.'), - security: 'is_granted("@projects.read")' - ) - ], - uriVariables: [ - 'id' => new Link(fromProperty: 'children', fromClass: Project::class) - ], - normalizationContext: ['groups' => ['project:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["name", "comment"])] #[ApiFilter(OrderFilter::class, properties: ['name', 'id', 'addedDate', 'lastModified'])] @@ -117,7 +110,7 @@ class Project extends AbstractStructuralDBElement /** * @var string|null The current status of the project */ - #[Assert\Choice(['draft', 'planning', 'in_production', 'finished', 'archived'])] + #[Assert\Choice(choices: ['draft', 'planning', 'in_production', 'finished', 'archived'])] #[Groups(['extended', 'full', 'project:read', 'project:write', 'import'])] #[ORM\Column(type: Types::STRING, length: 64, nullable: true)] protected ?string $status = null; diff --git a/src/Entity/ProjectSystem/ProjectBOMEntry.php b/src/Entity/ProjectSystem/ProjectBOMEntry.php index 2a7862ec..c016d741 100644 --- a/src/Entity/ProjectSystem/ProjectBOMEntry.php +++ b/src/Entity/ProjectSystem/ProjectBOMEntry.php @@ -63,23 +63,16 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface; new Post(uriTemplate: '/project_bom_entries.{_format}', securityPostDenormalize: 'is_granted("create", object)',), new Patch(uriTemplate: '/project_bom_entries/{id}.{_format}', security: 'is_granted("edit", object)',), new Delete(uriTemplate: '/project_bom_entries/{id}.{_format}', security: 'is_granted("delete", object)',), + new GetCollection( + uriTemplate: '/projects/{id}/bom.{_format}', + uriVariables: ['id' => new Link(fromProperty: 'bom_entries', fromClass: Project::class)], + openapi: new Operation(summary: 'Retrieves the BOM entries of the given project.'), + security: 'is_granted("@projects.read")' + ), ], normalizationContext: ['groups' => ['bom_entry:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], denormalizationContext: ['groups' => ['bom_entry:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], )] -#[ApiResource( - uriTemplate: '/projects/{id}/bom.{_format}', - operations: [ - new GetCollection( - openapi: new Operation(summary: 'Retrieves the BOM entries of the given project.'), - security: 'is_granted("@projects.read")' - ) - ], - uriVariables: [ - 'id' => new Link(fromProperty: 'bom_entries', fromClass: Project::class) - ], - normalizationContext: ['groups' => ['bom_entry:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'] -)] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(LikeFilter::class, properties: ["name", "comment", 'mountnames'])] #[ApiFilter(RangeFilter::class, properties: ['quantity'])] diff --git a/src/Form/Extension/DateTimeModelTimezoneExtension.php b/src/Form/Extension/DateTimeModelTimezoneExtension.php new file mode 100644 index 00000000..3c4818ea --- /dev/null +++ b/src/Form/Extension/DateTimeModelTimezoneExtension.php @@ -0,0 +1,79 @@ +. + */ + +declare(strict_types=1); + +namespace App\Form\Extension; + +use Symfony\Component\Form\AbstractTypeExtension; +use Symfony\Component\Form\Extension\Core\Type\DateTimeType; +use Symfony\Component\Form\Extension\Core\Type\DateType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\FormEvent; +use Symfony\Component\Form\FormEvents; + +/** + * Catches timezone mismatches between a DateTimeInterface model value and the effective + * model_timezone configured on the field. + * + * Doctrine's UTCDateTimeImmutableType always returns UTC DateTimeImmutable objects, so any + * date/datetime field that omits `model_timezone: 'UTC'` will silently corrupt stored values + * (the transformer treats the UTC instant as if it were in the user's local timezone). + * This extension throws a \LogicException early so the mistake is caught at development time. + */ +class DateTimeModelTimezoneExtension extends AbstractTypeExtension +{ + public static function getExtendedTypes(): iterable + { + return [DateTimeType::class, DateType::class]; + } + + public function buildForm(FormBuilderInterface $builder, array $options): void + { + $builder->addEventListener(FormEvents::POST_SET_DATA, static function (FormEvent $event) use ($options): void { + $data = $event->getData(); + + if (!$data instanceof \DateTimeInterface) { + return; + } + + // Resolve the effective model timezone: explicit option or the PHP default set at build time. + // This mirrors what BaseDateTimeTransformer does in its constructor. + $modelTimezone = $options['model_timezone'] ?? date_default_timezone_get(); + + $dataOffset = $data->getTimezone()->getOffset($data); + $modelOffset = (new \DateTimeZone($modelTimezone))->getOffset($data); + + if ($dataOffset !== $modelOffset) { + throw new \LogicException(sprintf( + 'Form field "%s" received a %s with timezone "%s" (UTC offset %+d s), ' + . 'but the effective model_timezone is "%s" (UTC offset %+d s). ' + . 'Set the "model_timezone" option to match the timezone of your data source.', + $event->getForm()->getName(), + get_debug_type($data), + $data->getTimezone()->getName(), + $dataOffset, + $modelTimezone, + $modelOffset + )); + } + }); + } +} diff --git a/src/Form/InfoProviderSystem/InfoProviderReferenceType.php b/src/Form/InfoProviderSystem/InfoProviderReferenceType.php new file mode 100644 index 00000000..73fc8fe3 --- /dev/null +++ b/src/Form/InfoProviderSystem/InfoProviderReferenceType.php @@ -0,0 +1,113 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Form\InfoProviderSystem; + +use App\Entity\Parts\InfoProviderReference; +use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\DataMapperInterface; +use Symfony\Component\Form\Extension\Core\Type\TextType; +use Symfony\Component\Form\Extension\Core\Type\UrlType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\FormInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; + +class InfoProviderReferenceType extends AbstractType implements DataMapperInterface +{ + public function buildForm(FormBuilderInterface $builder, array $options): void + { + $builder + ->setDataMapper($this) + ->add('provider_key', ProviderSelectType::class, [ + 'label' => 'info_providers.provider_key', + 'input' => 'string', + 'multiple' => false, + 'required' => false, + 'only_active' => false, + ]) + ->add('provider_id', TextType::class, [ + 'label' => 'info_providers.provider_id', + 'required' => false, + ]) + ->add('provider_url', UrlType::class, [ + 'label' => 'info_providers.provider_url', + 'required' => false, + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => InfoProviderReference::class, + ]); + } + + + public function mapDataToForms(mixed $viewData, \Traversable $forms): void + { + if ($viewData === null) { + return; + } + + if (!$viewData instanceof InfoProviderReference) { + return; + } + + /** @var FormInterface[] $forms */ + $forms = iterator_to_array($forms); + + $forms['provider_key']->setData($viewData->getProviderKey()); + $forms['provider_id']->setData($viewData->getProviderId()); + $forms['provider_url']->setData($viewData->getProviderUrl()); + } + + public function mapFormsToData(\Traversable $forms, mixed &$viewData): void + { + /** @var FormInterface[] $forms */ + $forms = iterator_to_array($forms); + + $providerKey = $forms['provider_key']->getData(); + $providerId = $forms['provider_id']->getData(); + $providerUrl = $forms['provider_url']->getData(); + + if ($viewData === null) { + $viewData = InfoProviderReference::noProvider(); + } + + if (!$viewData instanceof InfoProviderReference) { + return; + } + + $oldDate = $viewData->getLastUpdated(); + + //If all fields are empty, we set the view data to a new instance without provider information + if ($providerKey === null && $providerId === null && $providerUrl === null) { + $viewData = InfoProviderReference::noProvider(); + return; + } + + $viewData = InfoProviderReference::create($providerKey, $providerId, $providerUrl, $oldDate); + + } +} diff --git a/src/Form/InfoProviderSystem/ProviderSelectType.php b/src/Form/InfoProviderSystem/ProviderSelectType.php index bad3edaa..e59dc85f 100644 --- a/src/Form/InfoProviderSystem/ProviderSelectType.php +++ b/src/Form/InfoProviderSystem/ProviderSelectType.php @@ -31,12 +31,12 @@ use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Translation\StaticMessage; +use Symfony\Component\Translation\TranslatableMessage; class ProviderSelectType extends AbstractType { public function __construct(private readonly ProviderRegistry $providerRegistry) { - } public function getParent(): string @@ -46,17 +46,22 @@ class ProviderSelectType extends AbstractType public function configureOptions(OptionsResolver $resolver): void { - $providers = $this->providerRegistry->getActiveProviders(); - $resolver->setDefault('input', 'object'); $resolver->setAllowedTypes('input', 'string'); //Either the form returns the provider objects or their keys $resolver->setAllowedValues('input', ['object', 'string']); $resolver->setDefault('multiple', true); - $resolver->setDefault('choices', function (Options $options) use ($providers) { + //Only show active providers in the list, or also inactive ones + $resolver->setDefault('only_active', true); + $resolver->setAllowedTypes('only_active', 'bool'); + + + $resolver->setDefault('choices', function (Options $options) { + $providers = $options['only_active'] ? $this->providerRegistry->getActiveProviders() : $this->providerRegistry->getProviders(); + if ('object' === $options['input']) { - return $this->providerRegistry->getActiveProviders(); + return $providers; } $tmp = []; @@ -69,20 +74,35 @@ class ProviderSelectType extends AbstractType }); //The choice_label and choice_value only needs to be set if we want the objects - $resolver->setDefault('choice_label', function (Options $options){ + $resolver->setDefault('choice_label', function (Options $options) { if ('object' === $options['input']) { - return ChoiceList::label($this, static fn (?InfoProviderInterface $choice) => new StaticMessage($choice?->getProviderInfo()['name'])); + return ChoiceList::label($this, static fn(?InfoProviderInterface $choice + ) => new StaticMessage($choice?->getProviderInfo()['name'])); } - return static fn ($choice, $key, $value) => new StaticMessage($key); + return static fn($choice, $key, $value) => new StaticMessage($key); }); $resolver->setDefault('choice_value', function (Options $options) { if ('object' === $options['input']) { - return ChoiceList::value($this, static fn(?InfoProviderInterface $choice) => $choice?->getProviderKey()); + return ChoiceList::value($this, + static fn(?InfoProviderInterface $choice) => $choice?->getProviderKey()); } return null; }); + $resolver->setDefault('group_by', function (Options $options) { + //Do not show groups when only active providers are shown, because then all providers are active and the group would be useless + if ($options['only_active']) { + return null; + } + + return function ($choice, $key, string $value) { + if ($this->providerRegistry->getProviderByKey($value)->isActive()) { + return new TranslatableMessage('info_providers.providers_list.active'); + } + return new TranslatableMessage('info_providers.providers_list.disabled'); + }; + }); } } diff --git a/src/Form/Part/PartBaseType.php b/src/Form/Part/PartBaseType.php index a31f2469..afef8fdb 100644 --- a/src/Form/Part/PartBaseType.php +++ b/src/Form/Part/PartBaseType.php @@ -33,6 +33,7 @@ use App\Entity\Parts\Part; use App\Entity\Parts\PartCustomState; use App\Entity\PriceInformations\Orderdetail; use App\Form\AttachmentFormType; +use App\Form\InfoProviderSystem\InfoProviderReferenceType; use App\Form\ParameterType; use App\Form\Part\EDA\EDAPartInfoType; use App\Form\Type\MasterPictureAttachmentType; @@ -225,6 +226,10 @@ class PartBaseType extends AbstractType 'empty_data' => null, 'label' => 'part.gtin', ]) + ->add('providerReference', InfoProviderReferenceType::class, [ + 'label' => false, + 'required' => false, + ]) ; //Comment section diff --git a/src/Form/Part/PartLotType.php b/src/Form/Part/PartLotType.php index fc330bb1..ef49c57e 100644 --- a/src/Form/Part/PartLotType.php +++ b/src/Form/Part/PartLotType.php @@ -115,8 +115,10 @@ class PartLotType extends AbstractType $builder->add('last_stocktake_at', DateTimeType::class, [ 'label' => 'part_lot.edit.last_stocktake_at', 'widget' => 'single_text', + 'model_timezone' => 'UTC', // The database stores the datetime in UTC, so we need to set the model timezone to UTC 'disabled' => !$this->security->isGranted('@parts_stock.stocktake'), 'required' => false, + 'with_seconds' => true, ]); } diff --git a/src/Form/Type/AttachmentTypeType.php b/src/Form/Type/AttachmentTypeType.php index 099ed282..95b5a254 100644 --- a/src/Form/Type/AttachmentTypeType.php +++ b/src/Form/Type/AttachmentTypeType.php @@ -38,7 +38,7 @@ class AttachmentTypeType extends AbstractType return StructuralEntityType::class; } - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver->define('attachment_filter_class')->allowedTypes('null', 'string')->default(null); diff --git a/src/Helpers/Projects/ProjectBuildRequest.php b/src/Helpers/Projects/ProjectBuildRequest.php index 430d37b5..d2dfe139 100644 --- a/src/Helpers/Projects/ProjectBuildRequest.php +++ b/src/Helpers/Projects/ProjectBuildRequest.php @@ -84,8 +84,10 @@ final class ProjectBuildRequest $remaining_amount = $this->getNeededAmountForBOMEntry($bom_entry); foreach($this->getPartLotsForBOMEntry($bom_entry) as $lot) { //If the lot has instock use it for the build - $this->withdraw_amounts[$lot->getID()] = min($remaining_amount, $lot->getAmount()); - $remaining_amount -= max(0, $this->withdraw_amounts[$lot->getID()]); + $id = $lot->getID() ?? throw new \RuntimeException("Part lot needs to have an ID!"); + + $this->withdraw_amounts[$id] = min($remaining_amount, $lot->getAmount()); + $remaining_amount -= max(0, $this->withdraw_amounts[$id]); } } } @@ -176,6 +178,10 @@ final class ProjectBuildRequest { $lot_id = $lot instanceof PartLot ? $lot->getID() : $lot; + if ($lot_id === null) { + throw new \InvalidArgumentException('The given lot must have an ID!'); + } + if (! array_key_exists($lot_id, $this->withdraw_amounts)) { throw new \InvalidArgumentException('The given lot is not in the withdraw amounts array!'); } @@ -192,10 +198,12 @@ final class ProjectBuildRequest { if ($lot instanceof PartLot) { $lot_id = $lot->getID(); - } elseif (is_int($lot)) { - $lot_id = $lot; } else { - throw new \InvalidArgumentException('The given lot must be an instance of PartLot or an ID of a PartLot!'); + $lot_id = $lot; + } + + if ($lot_id === null) { + throw new \InvalidArgumentException('The given lot must have an ID!'); } $this->withdraw_amounts[$lot_id] = $amount; @@ -296,7 +304,7 @@ final class ProjectBuildRequest * @param bool $dont_check_quantity * @return $this */ - public function setDontCheckQuantity(bool $dont_check_quantity): ProjectBuildRequest + public function setDontCheckQuantity(bool $dont_check_quantity): self { $this->dont_check_quantity = $dont_check_quantity; return $this; diff --git a/src/Repository/DBElementRepository.php b/src/Repository/DBElementRepository.php index f737d91d..6e13aff7 100644 --- a/src/Repository/DBElementRepository.php +++ b/src/Repository/DBElementRepository.php @@ -158,7 +158,6 @@ class DBElementRepository extends EntityRepository { $reflection = new ReflectionClass($element::class); $property = $reflection->getProperty($field); - $property->setAccessible(true); $property->setValue($element, $new_value); } } diff --git a/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelperTrait.php b/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelperTrait.php index 08b1c301..cbfb4ee0 100644 --- a/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelperTrait.php +++ b/src/Services/ImportExportSystem/PartKeeprImporter/PKImportHelperTrait.php @@ -233,7 +233,6 @@ trait PKImportHelperTrait $reflectionClass = new \ReflectionClass($entity); $property = $reflectionClass->getProperty('addedDate'); - $property->setAccessible(true); $property->setValue($entity, $date); } diff --git a/src/Services/InfoProviderSystem/DTOJsonSchemaConverter.php b/src/Services/InfoProviderSystem/DTOJsonSchemaConverter.php index a61e7465..3c2cbf64 100644 --- a/src/Services/InfoProviderSystem/DTOJsonSchemaConverter.php +++ b/src/Services/InfoProviderSystem/DTOJsonSchemaConverter.php @@ -42,7 +42,7 @@ final class DTOJsonSchemaConverter public function getJSONSchema(): array { return [ - 'name' => 'clock', + 'name' => 'part_detail', 'strict' => true, 'schema' => [ 'type' => 'object', diff --git a/src/Services/InfoProviderSystem/Providers/AIWebProvider.php b/src/Services/InfoProviderSystem/Providers/AIWebProvider.php index 6539e69b..be91041e 100644 --- a/src/Services/InfoProviderSystem/Providers/AIWebProvider.php +++ b/src/Services/InfoProviderSystem/Providers/AIWebProvider.php @@ -282,6 +282,10 @@ final class AIWebProvider implements InfoProviderInterface try { $aiPlatform = $this->AIPlatformRegistry->getPlatform($this->settings->platform ?? throw new \RuntimeException('No AI platform selected') ); + // AI inference can take much longer than PHP's default max_execution_time (typically 30s). + // The HTTP client timeout already enforces the configured limit; disable PHP's constraint here. + set_time_limit(0); + //'openai/gpt-5-mini' $result = $aiPlatform->invoke($this->settings->model ?? throw new \RuntimeException('No model selected'), $input, [ 'response_format' => [ diff --git a/src/Settings/AISettings/AISettings.php b/src/Settings/AISettings/AISettings.php index 9f145c7f..659577b6 100644 --- a/src/Settings/AISettings/AISettings.php +++ b/src/Settings/AISettings/AISettings.php @@ -35,6 +35,8 @@ class AISettings { use SettingsTrait; + public const TIMEOUT_LIMIT = 600; + #[EmbeddedSettings] public ?OpenRouterSettings $openRouter = null; diff --git a/src/Settings/AISettings/LMStudioSettings.php b/src/Settings/AISettings/LMStudioSettings.php index 2bdad06e..d92ce97e 100644 --- a/src/Settings/AISettings/LMStudioSettings.php +++ b/src/Settings/AISettings/LMStudioSettings.php @@ -23,16 +23,17 @@ declare(strict_types=1); namespace App\Settings\AISettings; -use App\Form\Type\APIKeyType; use App\Services\AI\AIPlatformSettingsInterface; use App\Settings\SettingsIcon; use Jbtronics\SettingsBundle\Metadata\EnvVarMode; use Jbtronics\SettingsBundle\Settings\Settings; use Jbtronics\SettingsBundle\Settings\SettingsParameter; use Jbtronics\SettingsBundle\Settings\SettingsTrait; +use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Form\Extension\Core\Type\UrlType; use Symfony\Component\Translation\StaticMessage; use Symfony\Component\Translation\TranslatableMessage as TM; +use Symfony\Component\Validator\Constraints as Assert; #[Settings(name: 'ai_lmstudio', label: new TM("settings.ai.lmstudio"))] #[SettingsIcon("fa-robot")] @@ -46,6 +47,14 @@ class LMStudioSettings implements AIPlatformSettingsInterface envVar: "AI_LMSTUDIO_HOSTURL", envVarMode: EnvVarMode::OVERWRITE)] public ?string $hostURL = null; + #[SettingsParameter(label: new TM("settings.ai.timeout"), + description: new TM("settings.ai.timeout.help"), + formType: NumberType::class, + formOptions: ["scale" => 0, "attr" => ["min" => 1]], + )] + #[Assert\Range(min: 1, max: AISettings::TIMEOUT_LIMIT)] + public int $timeout = 180; + public function isAIPlatformEnabled(): bool { return $this->hostURL !== null && $this->hostURL !== ""; diff --git a/src/Settings/AISettings/OllamaSettings.php b/src/Settings/AISettings/OllamaSettings.php index dd17d5e2..7ca0e5a0 100644 --- a/src/Settings/AISettings/OllamaSettings.php +++ b/src/Settings/AISettings/OllamaSettings.php @@ -30,9 +30,11 @@ use Jbtronics\SettingsBundle\Metadata\EnvVarMode; use Jbtronics\SettingsBundle\Settings\Settings; use Jbtronics\SettingsBundle\Settings\SettingsParameter; use Jbtronics\SettingsBundle\Settings\SettingsTrait; +use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Form\Extension\Core\Type\UrlType; use Symfony\Component\Translation\StaticMessage; use Symfony\Component\Translation\TranslatableMessage as TM; +use Symfony\Component\Validator\Constraints as Assert; #[Settings(name: 'ai_ollama', label: new TM("settings.ai.ollama"))] #[SettingsIcon("fa-robot")] @@ -51,6 +53,14 @@ class OllamaSettings implements AIPlatformSettingsInterface envVar: "AI_OLLAMA_API_KEY", envVarMode: EnvVarMode::OVERWRITE)] public ?string $apiKey = null; + #[SettingsParameter(label: new TM("settings.ai.timeout"), + description: new TM("settings.ai.timeout.help"), + formType: NumberType::class, + formOptions: ["scale" => 0, "attr" => ["min" => 1]] + )] + #[Assert\Range(min: 1, max: AISettings::TIMEOUT_LIMIT)] + public int $timeout = 180; + public function isAIPlatformEnabled(): bool { return $this->endpoint !== null && $this->endpoint !== ""; diff --git a/src/Settings/AISettings/OpenRouterSettings.php b/src/Settings/AISettings/OpenRouterSettings.php index e083513a..16665554 100644 --- a/src/Settings/AISettings/OpenRouterSettings.php +++ b/src/Settings/AISettings/OpenRouterSettings.php @@ -30,7 +30,9 @@ use Jbtronics\SettingsBundle\Metadata\EnvVarMode; use Jbtronics\SettingsBundle\Settings\Settings; use Jbtronics\SettingsBundle\Settings\SettingsParameter; use Jbtronics\SettingsBundle\Settings\SettingsTrait; +use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Translation\TranslatableMessage as TM; +use Symfony\Component\Validator\Constraints as Assert; #[Settings(name: 'ai_openrouter', label: new TM("settings.ai.openrouter"), description: "settings.ai.openrouter.help")] #[SettingsIcon("fa-robot")] @@ -43,6 +45,14 @@ class OpenRouterSettings implements AIPlatformSettingsInterface formOptions: ["help_html" => true], envVar: "AI_OPENROUTER_KEY", envVarMode: EnvVarMode::OVERWRITE)] public ?string $apiKey = null; + #[SettingsParameter(label: new TM("settings.ai.timeout"), + description: new TM("settings.ai.timeout.help"), + formType: NumberType::class, + formOptions: ["scale" => 0, "attr" => ["min" => 1]], + envVar: "int:AI_OPENROUTER_TIMEOUT", envVarMode: EnvVarMode::OVERWRITE)] + #[Assert\Range(min: 1, max: AISettings::TIMEOUT_LIMIT)] + public int $timeout = 90; + public function isAIPlatformEnabled(): bool { return $this->apiKey !== null && $this->apiKey !== ""; diff --git a/templates/log_system/details/_extra_collection_element_deleted.html.twig b/templates/log_system/details/_extra_collection_element_deleted.html.twig index 221fae95..1c2ce2f3 100644 --- a/templates/log_system/details/_extra_collection_element_deleted.html.twig +++ b/templates/log_system/details/_extra_collection_element_deleted.html.twig @@ -4,7 +4,7 @@

{% trans %}log.collection_deleted.deleted{% endtrans %}: - {{ entity_type_label(entry.deletedElementClass) }} #{{ entry.deletedElementID }} + {{ type_label(entry.deletedElementClass) }} #{{ entry.deletedElementID }} {% if entry.oldName is not empty %} ({{ entry.oldName }}) {% endif %} @@ -12,4 +12,4 @@

{% trans %}log.collection_deleted.on_collection{% endtrans %}: {{ log_helper.translate_field(entry.collectionName) }} -

\ No newline at end of file +

diff --git a/templates/parts/edit/_advanced.html.twig b/templates/parts/edit/_advanced.html.twig index 30479d11..f18dba58 100644 --- a/templates/parts/edit/_advanced.html.twig +++ b/templates/parts/edit/_advanced.html.twig @@ -15,3 +15,24 @@ {{ form_row(form.partUnit) }} {{ form_row(form.partCustomState) }} {{ form_row(form.gtin) }} + +
+
+
+

+ +

+
+
+
+ {% trans %}part.edit.provider_reference.warning{% endtrans %} +
+ + {{ form_widget(form.providerReference) }} +
+
+
+
+
diff --git a/templates/parts/info/_extended_infos.html.twig b/templates/parts/info/_extended_infos.html.twig index 9cb4e4e5..acc197e3 100644 --- a/templates/parts/info/_extended_infos.html.twig +++ b/templates/parts/info/_extended_infos.html.twig @@ -76,7 +76,7 @@ {% endif %} {{ info_provider_label(part.providerReference.providerKey)|default(part.providerReference.providerKey) }}: {{ part.providerReference.providerId }} - ({{ part.providerReference.lastUpdated | format_datetime() }}) + ({{ part.providerReference.lastUpdated ? (part.providerReference.lastUpdated | format_datetime()) : ("part.info_provider_reference.updated_never"|trans) }}) {% if part.providerReference.providerUrl %} {% endif %} diff --git a/templates/parts/info/_picture.html.twig b/templates/parts/info/_picture.html.twig index e6aa74b3..db6c59ca 100644 --- a/templates/parts/info/_picture.html.twig +++ b/templates/parts/info/_picture.html.twig @@ -19,7 +19,7 @@ {% endif %} @@ -41,4 +41,4 @@ {% else %} Part main image -{% endif %} \ No newline at end of file +{% endif %} diff --git a/templates/parts/info/show_part_info.html.twig b/templates/parts/info/show_part_info.html.twig index 96b5e209..b36ab047 100644 --- a/templates/parts/info/show_part_info.html.twig +++ b/templates/parts/info/show_part_info.html.twig @@ -22,7 +22,7 @@ ({{ timeTravel | format_datetime('short') }}) {% endif %} {% if part.projectBuildPart %} - ({{ entity_type_label(part.builtProject) }}: {{ part.builtProject.name }}) + ({{ type_label(part.builtProject) }}: {{ part.builtProject.name }}) {% endif %} diff --git a/tests/Doctrine/Functions/SiValueSortTest.php b/tests/Doctrine/Functions/SiValueSortTest.php index dbdd9d28..4ef8a397 100644 --- a/tests/Doctrine/Functions/SiValueSortTest.php +++ b/tests/Doctrine/Functions/SiValueSortTest.php @@ -26,6 +26,7 @@ use App\Doctrine\Functions\SiValueSort; use Doctrine\DBAL\Platforms\MySQLPlatform; use Doctrine\DBAL\Platforms\PostgreSQLPlatform; use Doctrine\DBAL\Platforms\SQLitePlatform; +use PHPUnit\Framework\Attributes\DataProvider; final class SiValueSortTest extends AbstractDoctrineFunctionTestCase { @@ -71,9 +72,7 @@ final class SiValueSortTest extends AbstractDoctrineFunctionTestCase $this->assertSame('SI_VALUE(part_name)', $sql); } - /** - * @dataProvider sqliteSiValueProvider - */ + #[DataProvider('sqliteSiValueProvider')] public function testSqliteSiValue(?string $input, ?float $expected): void { $result = SiValueSort::sqliteSiValue($input); diff --git a/tests/Entity/Attachments/AttachmentTest.php b/tests/Entity/Attachments/AttachmentTest.php index 9e912b97..bef2df16 100644 --- a/tests/Entity/Attachments/AttachmentTest.php +++ b/tests/Entity/Attachments/AttachmentTest.php @@ -276,7 +276,6 @@ final class AttachmentTest extends TestCase { $reflection = new ReflectionClass($object); $reflection_property = $reflection->getProperty($property); - $reflection_property->setAccessible(true); $reflection_property->setValue($object, $value); } diff --git a/tests/Helpers/Projects/ProjectBuildRequestTest.php b/tests/Helpers/Projects/ProjectBuildRequestTest.php index c1fd1498..3014f762 100644 --- a/tests/Helpers/Projects/ProjectBuildRequestTest.php +++ b/tests/Helpers/Projects/ProjectBuildRequestTest.php @@ -82,7 +82,12 @@ final class ProjectBuildRequestTest extends TestCase $part2->setName('Part 2'); $part2->setPartUnit($float_unit); - $this->lot2 = new PartLot(); + $this->lot2 = new class extends PartLot { + public function getID(): ?int + { + return 3; + } + };; $part2->addPartLot($this->lot2); $this->lot2->setAmount(2.5); $this->lot2->setDescription('Lot 2'); diff --git a/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php b/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php index ef446c9a..d466f048 100644 --- a/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php +++ b/tests/Services/InfoProviderSystem/Providers/BuerklinProviderTest.php @@ -77,7 +77,6 @@ final class BuerklinProviderTest extends TestCase public function testAttributesToParametersParsesUnitsAndValues(): void { $method = new \ReflectionMethod(BuerklinProvider::class, 'attributesToParameters'); - $method->setAccessible(true); $features = [ [ @@ -127,7 +126,6 @@ final class BuerklinProviderTest extends TestCase public function testComplianceParameters(): void { $method = new \ReflectionMethod(BuerklinProvider::class, 'complianceToParameters'); - $method->setAccessible(true); $product = [ 'labelRoHS' => 'Yes', @@ -158,7 +156,6 @@ final class BuerklinProviderTest extends TestCase public function testImageSelectionPrefersZoomAndDeduplicates(): void { $method = new \ReflectionMethod(BuerklinProvider::class, 'getProductImages'); - $method->setAccessible(true); $images = [ ['format' => 'product', 'url' => '/img/a.webp'], @@ -176,7 +173,6 @@ final class BuerklinProviderTest extends TestCase public function testFootprintExtraction(): void { $method = new \ReflectionMethod(BuerklinProvider::class, 'getPartDetail'); - $method->setAccessible(true); $product = [ 'code' => 'TEST1', @@ -212,7 +208,6 @@ final class BuerklinProviderTest extends TestCase ]; $method = new \ReflectionMethod(BuerklinProvider::class, 'pricesToVendorInfo'); - $method->setAccessible(true); $vendorInfo = $method->invoke($this->provider, 'SKU1', 'https://x', $detailPrice); @@ -260,7 +255,6 @@ final class BuerklinProviderTest extends TestCase ); $method = new \ReflectionMethod(BuerklinProvider::class, 'convertPartDetailToSearchResult'); - $method->setAccessible(true); $dto = $method->invoke($this->provider, $detail); @@ -273,13 +267,13 @@ final class BuerklinProviderTest extends TestCase { $this->assertSame(['buerklin.com'], $this->provider->getHandledDomains()); } - + #[DataProvider('buerklinIdFromUrlProvider')] public function testGetIDFromURLExtractsId(string $url, ?string $expected): void { $this->assertSame($expected, $this->provider->getIDFromURL($url)); } - + public static function buerklinIdFromUrlProvider(): \Iterator { yield 'de long path' => [ diff --git a/tests/Services/InfoProviderSystem/Providers/LCSCProviderTest.php b/tests/Services/InfoProviderSystem/Providers/LCSCProviderTest.php index dc19de6b..9ec3abe1 100644 --- a/tests/Services/InfoProviderSystem/Providers/LCSCProviderTest.php +++ b/tests/Services/InfoProviderSystem/Providers/LCSCProviderTest.php @@ -367,7 +367,6 @@ final class LCSCProviderTest extends TestCase { $reflection = new \ReflectionClass($this->provider); $method = $reflection->getMethod('sanitizeField'); - $method->setAccessible(true); $this->assertNull($method->invokeArgs($this->provider, [null])); $this->assertEquals('Clean text', $method->invokeArgs($this->provider, ['Clean text'])); @@ -378,7 +377,6 @@ final class LCSCProviderTest extends TestCase { $reflection = new \ReflectionClass($this->provider); $method = $reflection->getMethod('getUsedCurrency'); - $method->setAccessible(true); $this->assertEquals('USD', $method->invokeArgs($this->provider, ['US$'])); $this->assertEquals('USD', $method->invokeArgs($this->provider, ['$'])); @@ -391,7 +389,6 @@ final class LCSCProviderTest extends TestCase { $reflection = new \ReflectionClass($this->provider); $method = $reflection->getMethod('getProductShortURL'); - $method->setAccessible(true); $result = $method->invokeArgs($this->provider, ['C123456']); $this->assertEquals('https://www.lcsc.com/product-detail/C123456.html', $result); @@ -401,7 +398,6 @@ final class LCSCProviderTest extends TestCase { $reflection = new \ReflectionClass($this->provider); $method = $reflection->getMethod('getProductDatasheets'); - $method->setAccessible(true); $result = $method->invokeArgs($this->provider, [null]); $this->assertIsArray($result); @@ -417,7 +413,6 @@ final class LCSCProviderTest extends TestCase { $reflection = new \ReflectionClass($this->provider); $method = $reflection->getMethod('getProductImages'); - $method->setAccessible(true); $result = $method->invokeArgs($this->provider, [null]); $this->assertIsArray($result); @@ -434,7 +429,6 @@ final class LCSCProviderTest extends TestCase { $reflection = new \ReflectionClass($this->provider); $method = $reflection->getMethod('attributesToParameters'); - $method->setAccessible(true); $attributes = [ ['paramNameEn' => 'Resistance', 'paramValueEn' => '1kΩ'], @@ -454,7 +448,6 @@ final class LCSCProviderTest extends TestCase { $reflection = new \ReflectionClass($this->provider); $method = $reflection->getMethod('pricesToVendorInfo'); - $method->setAccessible(true); $prices = [ ['ladder' => 1, 'productPrice' => '0.10', 'currencySymbol' => 'US$'], diff --git a/translations/frontend.de.xlf b/translations/frontend.de.xlf index 6a4e7786..317b7c7f 100644 --- a/translations/frontend.de.xlf +++ b/translations/frontend.de.xlf @@ -55,6 +55,12 @@ Los! + + + user.password_strength.crack_time + Geschätzte Zeit bis zum Knacken: %time% + + dialog.btn.ok diff --git a/translations/frontend.en.xlf b/translations/frontend.en.xlf index 7f68558a..d0099493 100644 --- a/translations/frontend.en.xlf +++ b/translations/frontend.en.xlf @@ -56,11 +56,11 @@ - - user.password_strength.crack_time - Estimated time to crack: %time% - - + + user.password_strength.crack_time + Estimated time to crack: %time% + + dialog.btn.ok diff --git a/translations/frontend.zh.xlf b/translations/frontend.zh.xlf index 7425b1e8..39ef238b 100644 --- a/translations/frontend.zh.xlf +++ b/translations/frontend.zh.xlf @@ -10,7 +10,7 @@ part.labelp - 部件 + 物料 @@ -34,7 +34,7 @@ user.password_strength.medium - + 中等 @@ -52,7 +52,13 @@ search.submit - GO! + 搜索 + + + + + user.password_strength.crack_time + 预计破解时间:%time% diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 26f6d40f..5542a6ed 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -13617,6 +13617,36 @@ Buerklin-API-Authentication-Server: Host-URL + + + settings.ai.ollama + Ollama + + + + + settings.ai.ollama.endpoint + Endpoint URL + + + + + settings.ai.ollama.apiKey + API Key + + + + + settings.ai.timeout + Timeout + + + + + settings.ai.timeout.help + Maximale Wartezeit in Sekunden auf eine Antwort. Die lokale KI-Inferenz kann mehrere Minuten dauern, die Inferenz in der Cloud ist in der Regel schneller. + + browser_plugin.recent_pages.title @@ -13665,5 +13695,53 @@ Buerklin-API-Authentication-Server: Sie können diesen zufällig generierten Wert verwenden (geben Sie ihn niemandem weiter): + + + info_providers.provider_key + Informationsquelle + + + + + info_providers.provider_id + Provider ID + + + + + info_providers.provider_url + Provider URL + + + + + part.edit.provider_reference + Referenz auf Informationsquelle + + + + + log.element_edited.changed_fields.providerReference.provider_key + Informationsquelle + + + + + log.element_edited.changed_fields.providerReference.provider_id + Provider ID + + + + + part.info_provider_reference.updated_never + Niemals aktualisiert + + + + + part.edit.provider_reference.warning + Warnung: Das Ändern der Werte an dieser Stelle kann den Mechanismus zum Abrufen von Informationen beeinträchtigen! Sie sollten nach Möglichkeit die Funktion „Von Informationsquelle aktualisieren“ verwenden. + + diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index af33ee97..36021868 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -13637,6 +13637,18 @@ Buerklin-API Authentication server: API Key + + + settings.ai.timeout + Timeout + + + + + settings.ai.timeout.help + Maximum time in seconds to wait for a response. Local AI inference might take multiple minutes, cloud inference is normally faster. + + browser_plugin.recent_pages.title @@ -13685,5 +13697,53 @@ Buerklin-API Authentication server: You can use this randomly generated value (share it with nobody): + + + info_providers.provider_key + Info provider + + + + + info_providers.provider_id + Provider ID + + + + + info_providers.provider_url + Provider URL + + + + + part.edit.provider_reference + Info provider reference + + + + + log.element_edited.changed_fields.providerReference.provider_key + Information provider + + + + + log.element_edited.changed_fields.providerReference.provider_id + Provider ID + + + + + part.info_provider_reference.updated_never + Never updated + + + + + part.edit.provider_reference.warning + Warning: Changing values here can break the info retrieval mechanism! You should use the "update from info provider" functionality whenever possible. + + diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index fde08cfe..5cd93041 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -1,49 +1,49 @@ - + - + attachment_type.caption - 附件类型 + 附件的文件类型 - + new attachment_type.edit - 编辑文件类型 + 编辑附件类型 - + new attachment_type.new - 新建类型 + 新建附件类型 - + category.labelp 类别 - + admin.options 选项 - + admin.advanced 高级 - + new @@ -52,7 +52,7 @@ 编辑类别 - + new @@ -61,25 +61,19 @@ 新建类别 - - - currency.caption - 货币 - - - + currency.iso_code.caption - 货币ISO代码 + ISO代码 - + currency.symbol.caption 货币符号 - + new @@ -88,7 +82,7 @@ 编辑货币 - + new @@ -97,7 +91,7 @@ 新建货币 - + new @@ -106,7 +100,7 @@ 编辑项目 - + new @@ -115,118 +109,118 @@ 新建项目 - + search.placeholder 搜索 - + expandAll 全部展开 - + reduceAll 全部收起 - - + + part.info.timetravel_hint - 在 %timestamp% 之前,部件是这样显示的。 <i>请注意,这是试验性功能,信息可能不正确。</i> + 这是物料在 %timestamp% 之前的数据。<i>请注意,此功能是实验性的,信息可能不正确。</i> - + standard.label 属性 - + infos.label 信息 - + new - + history.label 历史 - + export.label 导出 - + import_export.label 导入/导出 - + mass_creation.label - 大量创建 + 批量创建 - + admin.common - 基本 + 通用 - + admin.attachments 附件 - + admin.parameters 参数 - + export_all.label 导出所有元素 - + mass_creation.help - 每一行将被解析为新建元素的名称。可以通过缩进创建嵌套元素。 + 每行将被解释为要创建的元素的名称。可以通过缩进创建嵌套结构。 - - + + edit.caption - 编辑元素 "%name" + 编辑元素%name% - - + + new.caption - 新建元素 + 新元素 - + footprint.labelp 封装 - + new @@ -235,7 +229,7 @@ 编辑封装 - + new @@ -244,79 +238,61 @@ 新建封装 - - - group.edit.caption - - - - + user.edit.permissions 权限 - + new group.edit - 编辑组 + 编辑用户组 - + new group.new - 新建组 + 新建用户组 - - - label_profile.caption - 标签配置 - - - + label_profile.advanced 高级 - + label_profile.comment - 注释 + 备注 - + new label_profile.edit - 编辑标签配置 + 编辑标签模板 - + new label_profile.new - 新建标签配置 + 新建标签模板 - - - manufacturer.caption - 制造商 - - - + new @@ -325,7 +301,7 @@ 编辑制造商 - + new @@ -334,43 +310,31 @@ 新建制造商 - - - measurement_unit.caption - 计量单位 - - - - - part_custom_state.caption - 部件的自定义状态 - - - + storelocation.labelp - 储存位置 + 存储位置 - + new storelocation.edit - 编辑存储位置 + 编辑储存位置 - + new storelocation.new - 新建存储位置 + 新建储存位置 - + new @@ -379,7 +343,7 @@ 编辑供应商 - + new @@ -388,82 +352,73 @@ 新建供应商 - - - user.edit.caption - Users - - - + user.edit.configuration 配置 - + user.edit.password 密码 - + user.edit.tfa.caption - 2FA身份验证 + 双因素认证 - + user.edit.tfa.google_active - 身份验证器应用处于活动状态 + 身份验证器应用已激活 - + tfa_backup.remaining_tokens - 剩余备份代码计数 + 剩余备份代码数量 - + tfa_backup.generation_date - 备份代码的生成日期 + 备份生成日期 - + user.edit.tfa.disabled 方法未启用 - + user.edit.tfa.u2f_keys_count - 主动安全密钥 + 活跃的安全密钥 - + user.edit.tfa.disable_tfa_title - 确定继续? + 确定要继续? - + user.edit.tfa.disable_tfa_message - 这将禁用 <b>账号的所有活动2FA身份验证方法</b> 并删除 <b>备份代码</b>! -<br> -该账号将必须重新设置所有2FA身份验证方法并获取新的备份代码。 <br><br> -<b>应在完全确定 申请者身份 时才执行此操作,否则该账号可能会受到攻击。</b> + 这将<b>禁用用户所有活动的双因素认证方法</b>并删除<b>备份代码</b>!<br>用户将需要重新设置所有双因素认证方法并打印新的备份代码!<br><br><b>只有在绝对确定用户身份(寻求帮助)的情况下才执行此操作,否则账号可能被攻击者入侵!</b> - + user.edit.tfa.disable_tfa.btn - 禁用所有2FA身份验证方法 + 禁用所有双因素认证方法 - + new @@ -472,7 +427,7 @@ 编辑用户 - + new @@ -481,1347 +436,1363 @@ 新建用户 - + attachment.delete 删除 - + - attachment.external - 外部 + attachment.external_only + 仅外部 - + attachment.preview.alt 附件缩略图 - + - attachment.view - 查看 + attachment.view_local + 查看本地副本 - + attachment.file_not_found - 文件未找到 + 未找到文件 - + attachment.secure 私有附件 - + attachment.create - 添加附件 + 增加附件 - + part_lot.edit.delete.confirm - 确认删除 该库存 ? 该操作不能被撤消 + 确定要删除此库存?此操作无法撤消! - + entity.delete.confirm_title - 确定删除 %name%? + 确定要删除%name%? - + entity.delete.message - 该操作不能被撤销 -<br> -子元素将向上移动。 + 此操作无法撤消!<br>子元素将向上移动</br>。 - + entity.delete - Delete element + 删除元素 - + new - + edit.log_comment - 更改评论 + 更改备注 - + entity.delete.recursive - 递归删除(所有子元素) + 递归删除(所有子元素) - + entity.duplicate - 重复元素 + 复制此元素并新建 - + export.format 文件格式 - + export.level 详细程度 - + export.level.simple 简单 - + export.level.extended 扩展 - + export.level.full - 完全 + 完整 - + export.include_children - 在导出中包含子元素 + 导出时包含子元素 - + export.btn 导出 - + id.label ID - + createdAt - 创建于 + 创建时间 - + lastModified - 上次修改 + 最后修改时间 - + entity.info.parts_count - 具有该元素的部件数量 + 具有此元素的物料数量 - + specifications.property 参数 - + specifications.symbol 符号 - + specifications.value_min - 最小. + 最小 - + specifications.value_typ - 标称. + 标称 - + specifications.value_max - 最大. + 最大 - + specifications.unit 单位 - + specifications.text 文本 - + specifications.group - Group + 用户组 - + + + specifications.eda_visibility.help + 将此参数导出为EDA字段 + + + specification.create - 新建参数 + 新参数 - + parameter.delete.confirm - 确实删除该参数? + 确定要删除此参数? - + attachment.list.title 附件列表 - + part_list.loading.caption - 加载中... + 加载中 - + part_list.loading.message - 这可能需要一些时间。如果此消息没有消失,请尝试重新加载页面。 + 这可能需要等待一些时间。如果此消息未消失请尝试重新加载页面。 - + vendor.base.javascript_hint - 需要激活 Javascript 才能使用所有功能 + 请启用Javascript以使用所有功能! - + sidebar.big.toggle - 显示/隐藏 侧边栏 + 显示/隐藏侧边栏 - + loading.caption - 加载中: + 加载中: - + loading.message - 这可能需要一段时间。如果此消息长时间存在,请尝试重新加载页面。 + 这可能需要等待一段时间。如果此消息长时间存在请尝试重新加载页面。 - + loading.bar 加载中... - + back_to_top 返回页面顶部 - + permission.edit.permission 权限 - + permission.edit.value - 配置 + - + permission.legend.title 状态说明 - + permission.legend.disallow 禁止 - + permission.legend.allow - 允许 + 已允许 - + permission.legend.inherit - 继承 + 从父级用户组继承 - + bool.true - TRUE + true - + bool.false - FALSE + false - + Yes YES - + No NO - + specifications.value - + version.caption 版本 - + homepage.license - 许可信息 + 许可证信息 - + homepage.github.caption 项目页面 - - + + homepage.github.text - 源代码、下载、错误报告、待办事项列表等可以在 <a href="%href%" class="link-external" target="_blank">项目仓库</a> 上找到。 + 源代码、下载、错误报告、待办列表等可在 <a href="%href%"class="link-external"target="_blank">GitHub项目页面</a> 上找到 - + homepage.help.caption 帮助 - + homepage.help.text - 帮助和提示可以在 <a href="%href%" class="link-external" target="_blank">文档</a>中找到。 + 帮助和技巧可在 Wiki 和 <a href="%href%"class="link-external"target="_blank">GitHub页面</a> 中找到 - + homepage.forum.caption 论坛 - + new homepage.last_activity - 最近的事件 + 最近活跃事件 - + label_generator.title 标签生成器 - - + + label_generator.common - 基本 + 通用 - + label_generator.advanced 高级 - + label_generator.profiles - 标签配置 + 模板 - + label_generator.selected_profile - 当前选择的配置 + 当前选中的模板 - + label_generator.edit_profile - 编辑配置 + 编辑模板 - + label_generator.load_profile - 载入配置 + 加载模板 - + label_generator.download 下载 - + label_generator.label_btn 生成标签 - + label_generator.label_empty - 新建空标签 + 新的空白标签 - + label_scanner.title 标签扫描器 - + label_scanner.no_cam_found.title - 未找到摄像头 + 未找到网络摄像头 - + label_scanner.no_cam_found.text - 您需要一个摄像头并授予权限。或在下面手动输入条形码。 + 需要网络摄像头并授权。也可以在下方手动输入条码。 - + label_scanner.source_select 选择源 - + log.list.title 系统日志 - + new - + log.undo.confirm_title - 确定撤消更改/恢复到时间戳? + 确实要撤消更改/恢复到时间戳? - + new - + log.undo.confirm_message - 确定撤消给定的更改/将元素重置到给定的时间戳? + 确定要撤消该更改/将元素重置到该时间戳? - + mail.footer.email_sent_by - 这封电子邮件是自动发送的,由 + 此邮件由以下系统自动发送 - + mail.footer.dont_reply - 不要回复此电子邮件。 + 请勿回复此邮件。 - + email.hi %name% 你好 %name% - + email.pw_reset.message - 有人请求重置您的密码。 如果此请求不是您提出的,请忽略此邮件。 + 重置密码请求。如果对此请求不知情,请忽略此邮件。 - + email.pw_reset.button - 单击此处重置密码 + 点击重置密码 - + email.pw_reset.fallback - 如果这对您不起作用,请转到 <a href="%url%">%url%</a> 并输入以下信息 + 如果按钮不起作用,请访问<a href="%url%">%url%</a>并输入以下信息 - + email.pw_reset.username 用户名 - + email.pw_reset.token - Token + 令牌 - + email.pw_reset.valid_unit %date% - 重置令牌将在 <i>%date%</i> 之前有效。 + 重置令牌有效期至 <i>%date%</i> 。 - + orderdetail.delete - Delete + 删除 - + pricedetails.edit.min_qty - 最低折扣数量 + 最小折扣数量 - + pricedetails.edit.price 价格 - + pricedetails.edit.price_qty 数量 - + pricedetail.create - 添加价格 + 增加价格 - + part.edit.title - 编辑部件 + 编辑物料 - + part.edit.card_title - 编辑部件 + 编辑物料 - + + + form.dirty_form.unsaved_changes.title + 未保存的更改 + + + + + form.dirty_form.unsaved_changes.message + 有未保存的更改,如果离开此页面更改将丢弃。确定要继续? + + + part.edit.tab.common - 基础 + 通用 - + part.edit.tab.manufacturer 制造商 - + part.edit.tab.advanced 高级 - + part.edit.tab.advanced.ipn.commonSectionHeader - Sugestie bez zwiększenia części + 不包含物料增量的建议 - + part.edit.tab.advanced.ipn.partIncrementHeader - 包含部件数值增量的建议 + 包含数字物料增量的建议 - + part.edit.tab.advanced.ipn.prefix.description.current-increment - 部件的当前IPN规格 + 物料的当前IPN规范 - + part.edit.tab.advanced.ipn.prefix.description.increment - 基于相同部件描述的下一个可能的IPN规格 + 基于相同物料描述的下一个可能的IPN规范 - + part.edit.tab.advanced.ipn.prefix_empty.direct_category - 直接类别的 IPN 前缀为空,请在类别“%name%”中指定。 + 直接类别的IPN前缀为空,请在类别%name%中指定 - + part.edit.tab.advanced.ipn.prefix.direct_category 直接类别的IPN前缀 - + part.edit.tab.advanced.ipn.prefix.direct_category.increment - 直接类别的IPN前缀和部件特定的增量 + 直接类别的IPN前缀和物料特定增量 - + part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment - 具有父级前缀层级类别顺序的IPN前缀 + 具有父前缀层次结构的IPN前缀 - + part.edit.tab.advanced.ipn.prefix.hierarchical.increment - 具有父级前缀层级类别顺序和组件特定增量的IPN前缀 + 具有父前缀层次结构和物料特定增量的IPN前缀 - + part.edit.tab.advanced.ipn.prefix.not_saved - 请先创建组件并将其分配到类别:基于现有类别及其专属的IPN前缀,可以自动建议组件的IPN + 请先创建物料并分配类别:利用现有的类别及其各自的IPN前缀,系统会自动为该物料建议IPN。 - + part.edit.tab.part_lots 库存 - + part.edit.tab.attachments 附件 - + part.edit.tab.orderdetails 采购信息 - + part.edit.tab.specifications 参数 - + part.edit.tab.comment - 注释 + 备注 - + part.new.card_title - 创建新部件 + 创建新物料 - + part_lot.delete 删除 - + part_lot.create 增加库存 - + orderdetail.create - 添加经销商 + 增加经销商 - + pricedetails.edit.delete.confirm - 确实删除此价格? 该操作不能被撤消 + 确定要删除此价格?此操作无法撤消。 - + orderdetails.edit.delete.confirm - 确实要删除此经销商信息? 该操作不能被撤消 + 确定要删除此经销商信息?此操作无法撤消! - + part.info.title - 部件的详细信息 + 物料详细信息 - + part.part_lots.label 库存 - + comment.label - 注释 + 备注 - + part.info.specifications 参数 - + attachment.labelp 附件 - + vendor.partinfo.shopping_infos - 采购信息 + 购物信息 - + vendor.partinfo.history 历史 - + tools.label 工具 - + extended_info.label 扩展信息 - + attachment.name 名称 - + attachment.attachment_type 附件类型 - + attachment.file_name 文件名 - + attachment.file_size 文件大小 - + attachment.preview 预览图片 - + - attachment.download - 下载 + attachment.download_local + 下载本地副本 - + new - + user.creating_user - 创建此部件的用户 + 创建此物料的用户 - + Unknown 未知 - + new - + accessDenied - 拒绝访问 + 访问被拒绝 - + new - + user.last_editing_user - 最后编辑此部件的用户 + 最后编辑此物料的用户 - + part.isFavorite - Favorite + 收藏 - + part.minOrderAmount - 最低订购量 + 最小订购数量 - + manufacturer.label 制造商 - + name.label 名称 - + new - + part.back_to_info - 返回当前版本 + 返回信息页面 - + description.label 描述 - + category.label 类别 - + instock.label 在库 - + mininstock.label - 最低库存 + 最小库存量 - + footprint.label 封装 - + part.avg_price.label 平均价格 - + part.supplier.name 名称 - + part.supplier.partnr - 合作伙伴. + 物料编号 - + part.order.minamount - 最低数量 + 最小数量 - + part.order.price 价格 - + part.order.single_price 单价 - + part_lots.description 描述 - + part_lots.storage_location 存储位置 - + part_lots.amount 数量 - + part_lots.location_unknown 存储位置未知 - + part_lots.instock_unknown 数量未知 - + part_lots.expiration_date - 到期时间 + 过期日期 - + part_lots.is_expired - 已到期 + 已过期 - + part_lots.need_refill - 需要补充 + 需要补货 - + part.info.prev_picture 上一张图片 - + part.info.next_picture 下一张图片 - + part.mass.tooltip - 重量 + 质量 - + part.needs_review.badge - 需要审查 + 需要检查 - + part.favorite.badge 收藏 - + part.obsolete.badge - 不再可用 + 已停产 - + parameters.extracted_from_description 从描述中自动提取 - + parameters.auto_extracted_from_comment - 从注释中自动提取 + 从备注中自动提取 - + part.edit.btn - 编辑部件 + 编辑物料 - + part.clone.btn - 克隆部件 + 克隆物料 - + part.create.btn - 新建部件 + 创建新物料 - + part.delete.confirm_title - 确定删除该部件? + 确定要删除此物料? - + part.delete.message - 此部件与它的任何相关信息(如附件、价格信息等)将被删除。 该操作不能被撤消 + 此物料及所有关联信息(如附件、价格信息等)将被删除。此操作无法撤消! - + part.delete - 删除部件 + 删除物料 - + parts_list.all.title - 所有部件 + 所有物料 - + parts_list.category.title - 部件(根据类别) + 属于类别的物料 - + parts_list.footprint.title - 部件(根据封装) + 使用封装的物料 - + parts_list.manufacturer.title - 部件(根据制造商) + 属于制造商的物料 - + parts_list.search.title - 搜索部件 + 搜索物料 - + parts_list.storelocation.title - 部件(根据存储位置) + 位于存储位置的物料 - + parts_list.supplier.title - 部件(根据供应商) + 属于供应商的物料 - + parts_list.tags.title - 部件(根据标签) + 拥有标签的物料 - + entity.info.common.tab - 基本 + 通用 - + entity.info.statistics.tab - 统计数据 + 统计 - + entity.info.attachments.tab 附件 - + entity.info.parameters.tab 参数 - + entity.info.name 名称 - + entity.info.parent - 父元素 + 父级 - + entity.edit.btn 编辑 - + entity.info.children_count - 子元素计数 + 子元素数量 - + tfa.check.title - 需要2FA身份验证 + 需要双因素认证 - + tfa.code.trusted_pc - 这是受信任的计算机(如果启用此功能,则不会在此计算机上执行进一步的2FA查询) + 这是一台受信任的计算机(如果启用,将不会在此计算机上执行进一步的双因素查询) - + login.btn 登录 - + user.logout - 注销 + 登出 - + tfa.check.code.label 身份验证器应用代码 - + tfa.check.code.help - 输入身份验证器应用中的6位代码,如果身份验证器不可用,请输入备用代码之一。 + 输入身份验证器应用中的6位代码,或如果身份验证器不可用,输入备份代码。 - + login.title 登录 - + login.card_title 登录 - + login.username.label 用户名 - + login.username.placeholder 用户名 - + login.password.label 密码 - + login.password.placeholder 密码 - + login.rememberme - 记住我(不应在公共计算机上使用) + 保持登录(不应在共享计算机上使用) - + pw_reset.password_forget - 忘记用户名/密码? + 忘记用户名/密码? - + pw_reset.new_pw.header.title 设置新密码 - + pw_reset.request.header.title - 要求新的密码 + 请求新密码 - + tfa_u2f.http_warning - 您正在使用不安全的 HTTP 方法访问此页面,因此 U2F 很可能无法工作(错误请求错误消息)。 如果您想使用安全密钥,请要求管理员设置安全 HTTPS 方法。 + 正在使用不安全的HTTP方法访问此页面,因此U2F很可能无法工作(错误的请求错误消息)。如果要使用安全密钥,请让管理员设置HTTPS方法。 - + r_u2f_two_factor.pressbutton - 请插入您的安全密钥并按下其按钮 + 请插入安全密钥并按下按钮! - + tfa_u2f.add_key.title - 添加安全密钥 + 增加安全密钥 - + tfa_u2f.explanation - 借助 U2F/FIDO 兼容的安全密钥(例如 YubiKey 或 NitroKey),可以实现用户友好且安全的2FA身份验证。 可以在此处注册安全密钥,如果需要两步验证,只需通过 USB 插入密钥或通过 NFC 在设备上输入密钥即可。 + 借助U2F/FIDO兼容的安全密钥(例如YubiKey/NitroKey),可以实现用户友好且安全的双因素认证。安全密钥可在此注册,当需要双因素验证时,只需通过USB插入密钥或通过NFC将其靠近设备即可。 - + tfa_u2f.add_key.backup_hint - 为了确保即使密钥丢失也能访问,建议注册第二个密钥作为备份并将其存放在安全的地方! + 为确保在密钥丢失时仍能访问,建议注册第二个密钥作为备份并妥善保管! - + tfa_u2f.add_key.add_button - 添加安全密钥 + 增加安全密钥 - + tfa_u2f.add_key.back_to_settings 返回设置 - + new statistics.title - 统计数据 + 统计 - + new statistics.parts - 部件 + 物料 - + new @@ -1830,7 +1801,7 @@ 数据结构 - + new @@ -1839,16 +1810,16 @@ 附件 - + new statistics.property - 特性 + 属性 - + new @@ -1857,1941 +1828,1988 @@ - + new statistics.distinct_parts_count - 部件总数 + 物料数量 - + new statistics.parts_instock_sum - 库存总数 + 物料库存总量 - + new statistics.parts_with_price - 部件总数(拥有价格) + 有价格信息的物料数量 - + new statistics.categories_count - 类别总数 + 类别数量 - + new statistics.footprints_count - 封装总数 + 封装数量 - + new statistics.manufacturers_count - 制造商总数 + 制造商数量 - + new statistics.storelocations_count - 存储位置总数 + 储存位置数量 - + new statistics.suppliers_count - 供应商总数 + 供应商数量 - + new statistics.currencies_count - 货币种类总数 + 货币数量 - + new statistics.measurement_units_count - 度量单位总数 + 计量单位数量 - + new statistics.devices_count - 项目总数 + 项目数量 - + new statistics.attachment_types_count - 附件类型总数 + 附件类型数量 - + new statistics.all_attachments_count - 附件总数 + 附件数量 - + new statistics.user_uploaded_attachments_count - 附件总数(用户上传) + 用户上传的附件数量 - + new statistics.private_attachments_count - 附件数量(私有) + 私有附件数量 - + new statistics.external_attachments_count - 附件总数(外部) + 外部附件数量(URL) - + tfa_backup.codes.title 备份代码 - + tfa_backup.codes.explanation - 打印这些代码并将其保存在安全的地方! + 打印出这些代码并妥善保管! - + tfa_backup.codes.help - 如果您无法再使用身份验证器应用程序访问您的设备(智能手机丢失、数据丢失等),您可以使用这些代码之一来访问您的帐户,并可能设置一个新的身份验证器应用程序。 每个代码只能使用一次,建议删除已使用的代码。 有权访问这些代码的任何人都可能访问您的帐户,因此请将它们保存在安全的地方。 + 如果无法再访问带有身份验证器应用的设备(手机丢失、数据丢失等),可以使用这些代码之一访问账号并可能设置新的身份验证器应用。每个代码只能使用一次,建议删除已使用的代码。任何可以访问这些代码的人都可能访问账号,请妥善保管。 - + tfa_backup.username 用户名 - + tfa_backup.codes.page_generated_on - 页面生成于 %date% + 页面生成于 %date% - + tfa_backup.codes.print 打印 - + tfa_backup.codes.copy_clipboard 复制到剪贴板 - + user.info.label 用户信息 - + user.firstName.label - 名称 + 名字 - + user.lastName.label 姓氏 - + user.email.label - 邮件 + 电子邮箱 - + user.department.label 部门 - + user.username.label 用户名 - + group.label - 组: + 用户组 - + user.permissions 权限 - + user.settings.label 用户设置 - + user_settings.data.label - 个人资料 + 个人数据 - + user_settings.configuration.label 配置 - + user.settings.change_pw - 修改密码 + 更改密码 - + user.settings.2fa_settings - 2FA身份验证 + 双因素认证 - + tfa.settings.google.tab - 验证器应用 + 身份验证器应用 - + tfa.settings.bakup.tab 备份代码 - + tfa.settings.u2f.tab - 安全密钥 (U2F) + 安全密钥(U2F) - + tfa.settings.trustedDevices.tab - 可信设备 + 受信任的设备 - + tfa_google.disable.confirm_title - 确定禁用身份验证器应用? + 确定要禁用身份验证器应用? - + tfa_google.disable.confirm_message - 如果禁用验证器应用,所有备份代码将被删除。<br> -请注意,如果没有2FA身份验证,您的帐户就被攻击的风险会提供。 + 如果禁用身份验证器应用,所有备份代码将被删除,因此需要重新打印它们。<br>另请注意,没有双因素认证,账号将不再受到良好的保护!</br> - + tfa_google.disabled_message 身份验证器应用已停用! - + tfa_google.step.download - 下载验证器应用(例如<a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Google Authenticator</a> oder <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp">FreeOTP Authenticator</a>) + 下载身份验证器应用(例如<aclass="link-external"target="_blank"href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">GoogleAuthenticator</a>或<aclass="link-external"target="_blank"href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp">FreeOTPAuthenticator</a>) - + tfa_google.step.scan - 使用应用程序扫描二维码或手动输入数据 + 使用应用扫描旁边的QR码或手动输入数据 - + tfa_google.step.input_code - 在下方输入生成的代码并确认 + 在下方字段中输入生成的代码并确认 - + tfa_google.step.download_backup - 打印备份代码并妥善保存 + 打印备份代码并妥善保管 - + tfa_google.manual_setup 手动设置 - + tfa_google.manual_setup.type 类型 - + tfa_google.manual_setup.username 用户名 - + tfa_google.manual_setup.secret - 保密 + 密钥 - + tfa_google.manual_setup.digit_count 位数 - + tfa_google.enabled_message 身份验证器应用已启用 - + tfa_backup.disabled - 备份代码已禁用。 设置验证器应用以启用备份代码。 + 备份代码已禁用。请设置身份验证器应用以启用备份代码。 - + tfa_backup.explanation - 即使身份验证器应用设备丢失,也可以使用备份代码来访问帐户。 + 即使丢失带有身份验证器应用的设备,也可以使用这些备份代码访问账号。打印代码并妥善保管。 - + tfa_backup.reset_codes.confirm_title - 确认重置备份代码? + 确实要重置代码? - + tfa_backup.reset_codes.confirm_message - 这将删除所有旧备份代码并生成新备份代码。操作不能被撤消。 + 这将删除所有以前的代码并生成一组新代码。此操作无法撤消。请记住打印新代码并将其存放在安全的地方! - + tfa_backup.enabled 备份代码已启用 - + tfa_backup.show_codes 显示备份代码 - + tfa_u2f.table_caption 已注册的安全密钥 - + tfa_u2f.delete_u2f.confirm_title - 确认删除安全密钥? + 确实要移除此安全密钥? - + tfa_u2f.delete_u2f.confirm_message - 如果删除此密钥,将无法再使用此密钥登录。如果没有可用的安全密钥,2FA身份验证将被禁用。 + 如果移除此密钥,则无法再使用此密钥登录。如果没有剩余的安全密钥,双因素认证将被禁用。 - + tfa_u2f.keys.name - 密钥名称 + 键名 - + tfa_u2f.keys.added_date 注册日期 - + tfa_u2f.key_delete 删除密钥 - + tfa_u2f.no_keys_registered 尚未注册密钥。 - + tfa_u2f.add_new_key 注册新的安全密钥 - + tfa_trustedDevices.explanation - 在检查第二因素时,可以将当前计算机标记为可信,因此不再需要对此计算机进行2FA检查。 -如果您执行此操作不正确或者计算机不再受信任,您可以在此处重置 <i>所有 </i>计算机的状态。 + 在验证第二因素时,当前计算机可标记为可信,之后不再需要在此计算机上进行双因素验证。 +如果误操作或某台计算机不再可信,可以在此重置<i>所有</i>计算机的状态。 - + tfa_trustedDevices.invalidate.confirm_title - 确认删除所有受信任的计算机? + 确实要移除所有受信任的计算机? - + tfa_trustedDevices.invalidate.confirm_message - 必须在所有计算机上再次执行2FA身份验证。确保有可用的身份验证器应用设备。 + 所有计算机上都必须重新执行双因素认证。请确保双因素认证设备可用。 - + tfa_trustedDevices.invalidate.btn - 重置受信任设备 + 重置受信任的设备 - + sidebar.toggle 切换侧边栏 - + navbar.scanner.link 扫描器 - + user.loggedin.label - 登录: + 已登录为 - + user.login 登录 - + ui.toggle_darkmode - 暗色模式 + - + user.language_select 切换语言 - + search.options.label 搜索选项 - + tags.label 标签 - + storelocation.label 存储位置 - + ordernumber.label.short - 供应商合作伙伴 + 供应商物料编号 - + supplier.label 供应商 - + search.regexmatching 正则匹配 - + project.labelp 项目 - + actions 操作 - + datasource 数据源 - + manufacturer.labelp 制造商 - + supplier.labelp 供应商 - + attachment.download_failed 外部附件下载失败。 - + entity.edit_flash - 更改保存成功。 + 更改已成功保存。 - + entity.edit_flash.invalid - 无法保存更改。请检查输入 + 无法保存更改。请检查输入! - + entity.created_flash 元素已创建。 - + entity.created_flash.invalid - 无法创建元素。请检查输入 + 无法创建元素。请检查输入! - + attachment_type.deleted - 元素已删除。 + 元素已删除! - + csfr_invalid - CSRF Token 无效。如果此消息仍然存在,请重新加载此页面或联系管理员。 + CSFR令牌无效。请重新加载此页面,如果此消息仍然存在请联系管理员。 - + label_generator.no_entities_found - 未找到匹配的实体。 + 未找到匹配范围的元素。 - + new - + log.undo.target_not_found - 在数据库中找不到目标元素。 + 在数据库中未找到目标元素! - + new - + log.undo.revert_success - 已成功恢复时间戳。 + 已成功还原到时间戳。 - + new - + log.undo.element_undelete_success 已成功取消删除元素。 - + new - + log.undo.element_element_already_undeleted - 元素已取消删除。 + 元素已被还原! - + new - + log.undo.element_delete_success - 元素删除成功。 + 元素已成功删除。 - + new - + log.undo.element.element_already_delted - 元素已被删除。 + 元素已被删除! - + new - + log.undo.element_change_undone - 更改撤消成功。 + 已成功撤销更改! - + new - + log.undo.do_undelete_before - 必须先取消删除该元素,才能撤消此更改。 + 必须先取消删除元素,然后才能撤消此更改! - + new - + log.undo.log_type_invalid - 此日志条目无法撤消。 + 此日志条目无法撤消! - + part.edited_flash - 已保存更改。 + 更改已保存! - + part.deleted - 部件删除成功。 + 物料删除成功。 - + part.created_flash - 部件已创建。 + 物料已创建! - + part.created_flash.invalid - 创建过程中出错。请检查输入 + 创建时出错:请检查输入! - + scan.qr_not_found - 未找到匹配条形码的元素。 + 未找到给定条码对应的元素。 - + scan.format_unknown - 格式未知。 + 格式未知! - + scan.qr_success 找到元素。 - + pw_reset.user_or_email - 用户名或邮件 + 用户名/邮箱 - + pw_reset.request.success - 重置请求成功。请检查邮箱 + 重置请求已成功!请检查电子邮箱以获取进一步指示。 - + pw_reset.username 用户名 - + pw_reset.token - Token + 令牌 - + pw_reset.new_pw.error - 用户名或Token无效。请检查输入 + 用户名或令牌无效!请检查输入。 - + pw_reset.new_pw.success - 密码重置成功。现在可以使用新密码登录。 + 密码已成功重置。现在可以使用新密码登录。 - + user.edit.reset_success - 成功禁用所有2FA身份验证。 + 所有双因素认证方法已成功禁用。 - + tfa_backup.no_codes_enabled - 未启用备份代码。 + 尚未启用备份代码! - + tfa_u2f.u2f_delete.not_existing - 不存在此ID的安全密钥。 + 不存在具有此ID的安全密钥。 - + tfa_u2f.u2f_delete.access_denied - 无法删除其他用户的安全密钥。 + 不能删除其他用户的安全密钥! - + tfa.u2f.u2f_delete.success - 成功删除安全密钥。 + 安全密钥已成功移除。 - + tfa_trustedDevice.invalidate.success - 成功重置受信任设备。 + 受信任的设备已成功重置。 - + user.settings.saved_flash - 设置已保存。 + 设置已保存! - + user.settings.pw_changed_flash - 密码已更改。 + 密码已更改! - + user.settings.2fa.google.activated - 成功激活身份验证器应用。 + 身份验证器应用已成功激活。 - + user.settings.2fa.google.disabled - 成功停用身份验证器应用。 + 身份验证器应用已成功停用。 - + user.settings.2fa.backup_codes.regenerated - 成功生成新备份代码。 + 新的备份代码已成功生成。 - + attachment.table.filesize 文件大小 - + true - TRUE + true - + false - FALSE + false - + log.target_deleted 已删除 - + new - + log.undo.undelete - 撤销删除 + 取消删除元素 - + new - + log.undo.undo 撤消更改 - + new - + log.undo.revert - 恢复到时间戳 + 将元素还原到此时间戳 - + log.id ID - + log.timestamp 时间戳 - + log.type 事件 - + log.level - 等级 + 级别 - + log.user 用户 - + log.target_type 目标类型 - + log.target 目标 - + new - + log.extra - 其他 + 额外 - + part.table.name 名称 - + - part.table.id - Id + part.table.si_value + SI值 - + + + part.table.id + ID + + + part.table.description 描述 - + part.table.category 类别 - + part.table.footprint 封装 - + part.table.manufacturer 制造商 - + part.table.storeLocations - 储存地点 + 存储位置 - + part.table.amount 数量 - + part.table.minamount 最小数量 - + part.table.partUnit 计量单位 - + part.table.partCustomState - 部件的自定义状态 + 自定义物料状态 - + part.table.addedDate - 创建时间 + 创建于 - + part.table.lastModified - 修改时间 + 最后修改时间 - + part.table.needsReview - 需要审查 + 需要检查 - + part.table.favorite 收藏 - + part.table.manufacturingStatus 状态 - + m_status.unknown 未知 - + m_status.announced - 公布 + 仅发布 - + m_status.active - 活动 + 可用 - + m_status.nrfnd 不推荐用于新设计 - + m_status.eol - 即将停产 + 生命周期结束 - + m_status.discontinued 停产 - + part.table.mpn MPN - + part.table.mass - 重量 + 质量 - + part.table.tags 标签 - + part.table.attachments 附件 - + - flash.login_successful - 登陆成功 + part.table.eda_status + EDA状态 - + + + eda.status.symbol_set + KICAD符号集 + + + + + eda.status.footprint_set + KICAD封装集 + + + + + eda.status.reference_set + 参考前缀集 + + + + + eda.status.complete + EDA字段完整(符号、封装、参考) + + + + + eda.status.partial + EDA字段部分设置 + + + + + flash.login_successful + 登录成功 + + + JSON JSON - + XML XML - + CSV CSV - + YAML YAML - + import.abort_on_validation.help - 遇到无效数据时停止导入 + 启用此选项后,如果检测到无效数据时整个导入过程将中止。如果未选择,将忽略无效数据并继续尝试导入其他元素。 - + import.csv_separator CSV分隔符 - + parent.label 父元素 - + import.file 文件 - + import.preserve_children 导入时保留子元素 - + import.abort_on_validation 遇到无效数据时中止 - + import.btn 导入 - + attachment.edit.secure_file.help - 私有附件只能通过授权的用户访问。私有附件不会生成缩略图,文件访问性能会降低。 + 标记为私有的附件只能由具有相应权限的已认证用户访问。如果启用此选项,将不会生成缩略图,文件访问性能也会降低。 - + attachment.edit.url.help - 可以在此处指定外部文件的URL,或输入用于搜索内置资源的关键字 + 在此指定外部文件URL地址,或输入用于在内置资源中搜索的关键词(例如封装) - + attachment.edit.name 名称 - + attachment.edit.attachment_type 附件类型 - + attachment.edit.show_in_table - 显示在表中 + 在表格中显示 - + attachment.edit.secure_file 私有附件 - + attachment.edit.url URL - + attachment.edit.download_url 下载外部文件 - + attachment.edit.file 上传文件 - + part.label - 部件 + 物料 - + part_lot.label - 部件批次 + 物料批号 - + label_options.barcode_type.none - + label_options.barcode_type.qr - 二维码(推荐) + 二维码(推荐) - + label_options.barcode_type.code128 - Code 128(推荐) + Code128(推荐) - + label_options.barcode_type.code39 - Code 39(推荐) + Code39(推荐) - + label_options.barcode_type.code93 - Code 93 + Code93 - + label_options.barcode_type.datamatrix 数据矩阵 - + label_options.lines_mode.html 占位符 - + label.options.lines_mode.twig Twig - + label_options.lines_mode.help - 如果您在此处选择Twig,则内容字段将被解释为Twig模板。前往 <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig文档</a> and <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a> 了解更多信息。 + 如果在此选择Twig,内容字段将解释为Twig模板。更多信息请参见<a href="https://twig.symfony.com/doc/3.x/templates.html">Twig文档</a>和<a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a>。 - + label_options.page_size.label - Label size + 标签尺寸 - + label_options.supported_elements.label 目标类型 - + label_options.barcode_type.label 条码 - + label_profile.lines.label 内容 - + label_options.additional_css.label - 附加样式(CSS) + 附加样式(CSS) - + label_options.lines_mode.label 解析器模式 - + label_options.width.placeholder 宽度 - + label_options.height.placeholder 高度 - + label_generator.target_id.range_hint - 可以在此处指定多个ID(1、2、3 或 1-3) ,为多个元素生成标签。 + 可以在此指定多个ID(1,2,3)或范围(1-3),以一次为多个元素生成标签。 - + label_generator.target_id.label - 目标 ID + 目标ID - + label_generator.update - Update + 更新 - + scan_dialog.input 输入 - + scan_dialog.submit - Submit + 提交 - + parameters.name.placeholder - + 例如直流电流增益(DCCurrentGain) - + parameters.symbol.placeholder - + 例如h_{FE} - + parameters.text.placeholder - + 例如测试条件(Testconditions) - + parameters.max.placeholder - + 例如350 - + parameters.min.placeholder - + 例如100 - + parameters.typical.placeholder - + 例如200 - + parameters.unit.placeholder - + 例如V - + parameter.group.placeholder - + 例如技术规格 - + orderdetails.edit.supplierpartnr - 供应商部件号 + 供应商物料编号 - + orderdetails.edit.supplier 供应商 - + orderdetails.edit.url - 供应商链接 + 报价链接 - + orderdetails.edit.obsolete - 不再可用 + 已停产 - + + + orderdetails.edit.eda_visibility + 在EDA中可见 + + + orderdetails.edit.supplierpartnr.placeholder - + 例如BC547 - + part.edit.name 名称 - + part.edit.description 描述 - + part.edit.mininstock 最小库存 - + part.edit.category 类别 - + part.edit.footprint 封装 - + part.edit.tags 标签 - + part.edit.manufacturer.label 制造商 - + part.edit.manufacturer_url.label - 制造商链接 + 产品链接 - + part.edit.mpn - 制造商部件号 + 制造商物料编号 - + part.edit.manufacturing_status 生产状态 - + part.edit.needs_review - 需要审查 + 需要检查 - + part.edit.is_favorite 收藏 - + part.edit.mass - 重量 + 质量 - + part.edit.partUnit 计量单位 - + part.edit.partCustomState - 部件的自定义状态 + 自定义物料状态 - + part.edit.comment - 注释 + 备注 - + part.edit.master_attachment 预览图像 - + part.edit.save 保存更改 - + part.edit.reset 重置更改 - + part.edit.name.placeholder - + 例如BC547 - + part.edit.description.placeholder - + 例如NPN45V,0,1A,0,5W - + part.editmininstock.placeholder - + 例如1 - + part_lot.edit.description 描述 - + part_lot.edit.location 存储位置 - + part_lot.edit.amount 数量 - + part_lot.edit.instock_unknown 数量未知 - + part_lot.edit.needs_refill - 需要补充 + 需要补货 - + part_lot.edit.expiration_date - 有效期 + 过期日期 - + part_lot.edit.comment - 注释 + 备注 - + perm.group.other 杂项 - + tfa_google.enable - 启用验证器应用 + 启用身份验证器应用 - + tfa_google.disable - 停用验证器应用 + 停用身份验证器应用 - + google_confirmation - 验证码 + 确认代码 - + user.timezone.label 时区 - + user.currency.label 首选货币 - + save 应用更改 - + reset 放弃更改 - + user_settings.language.placeholder - 默认语言 + 服务器范围语言 - + user_settings.timezone.placeholder - 默认时区 + 服务器范围时区 - + attachment.label 附件 - + attachment_type.label 附件类型 - + project.label 项目 - + measurement_unit.label 计量单位 - + part_custom_state.label - 部件自定义状态 + 自定义物料状态 - + currency.label 货币 - + orderdetail.label - 订单详情 + 订购详情 - + pricedetail.label 价格详情 - + user.label 用户 - + parameter.label 参数 - + label_profile.label - 标签配置 + 标签模板 - + new - + log.element_deleted.old_name.unknown 未知 - + markdown.loading - 正在加载 Markdown。如果此消息没有消失,请尝试重新加载页面。 + 正在加载Markdown。如果此消息未消失请尝试重新加载页面。 - + pw_reset.email.subject - 重置密码 + 重置Part-DB账号密码 - + tree.tools.tools 工具 - + tree.tools.edit 编辑 - + tree.tools.show - 统计 + 显示 - + tree.tools.system 系统 - + tree.tools.tools.label_dialog 标签生成器 - + tree.tools.tools.label_scanner 扫描器 - + tree.tools.edit.attachment_types 附件类型 - + tree.tools.edit.categories 类别 - + tree.tools.edit.projects 项目 - + tree.tools.edit.suppliers 供应商 - + tree.tools.edit.manufacturer 制造商 - + tree.tools.edit.storelocation - 储存位置 + 存储位置 - + tree.tools.edit.footprint 封装 - + tree.tools.edit.currency 货币 - + tree.tools.edit.measurement_unit 计量单位 - + tree.tools.edit.part_custom_state - 部件自定义状态 + 物料自定义状态 - + tree.tools.edit.label_profile - 标签配置 + 标签模板 - + tree.tools.edit.part - 新建部件 + 新建物料 - + tree.tools.show.all_parts - 所有部件 + 显示所有物料 - + tree.tools.show.all_attachments - 所有附件 + 附件 - + new - + tree.tools.show.statistics - 统计数据 + 统计 - + tree.tools.system.users 用户 - + tree.tools.system.groups - + 用户组 - + new - + tree.tools.system.event_log - 操作日志 + 事件日志 - + entity.tree.new - 新建 + 新元素 - + obsolete @@ -3800,7 +3818,7 @@ 编辑 - + obsolete @@ -3809,7 +3827,7 @@ 扫描条码 - + obsolete @@ -3818,96 +3836,96 @@ 主题 - + obsolete user_settings.theme.placeholder - 默认主题 + 服务器范围主题 - + new obsolete - + log.user_login.ip IP - + new obsolete - + log.undo_mode.undo - 更改已撤消 + 撤销更改 - + new obsolete - + log.undo_mode.revert - 元素已恢复 + 元素已还原 - + new obsolete - + log.element_created.original_instock - 旧库存 + 原始库存 - + new obsolete - + log.element_deleted.old_name 旧名称 - + new obsolete - + log.element_edited.changed_fields - 变更字段 + 已更改的字段 - + new obsolete - + log.instock_changed.comment - 批注 + 备注 - + new obsolete - + log.collection_deleted.deleted - 已删除元素: + 已删除元素 - + obsolete obsolete @@ -3917,7 +3935,7 @@ GO! - + obsolete obsolete @@ -3927,7 +3945,7 @@ 英语 - + obsolete obsolete @@ -3937,17 +3955,17 @@ 德语 - + obsolete obsolete flash.password_change_needed - 需要修改密码。 + 需要更改密码! - + obsolete obsolete @@ -3957,7 +3975,7 @@ 附件类型 - + obsolete obsolete @@ -3967,167 +3985,167 @@ 关联元素 - + obsolete obsolete attachment.edit.isPicture - 图片? + 是否为图片 - + obsolete obsolete attachment.edit.is3DModel - 3D模型? + 是否为3D模型 - + obsolete obsolete attachment.edit.isBuiltin - 内置? + 是否为内置 - + obsolete obsolete category.edit.default_comment.placeholder - + 例如适用于开关 - + obsolete obsolete tfa_backup.regenerate_codes - 生成新备份代码 + 生成新的备份代码 - + obsolete obsolete validator.noneofitschild.self - 子元素不能是它的父元素。 + 元素不能是它自己的父元素。 - + obsolete obsolete validator.noneofitschild.children - 父元素不能是它的子元素。 + 父级不能是其自身的子元素之一。 - + obsolete obsolete validator.part_lot.location_full - 存储位置已标记为已满,无法添加新部件。 + 储存位置被标记为已满,无法向其增加新物料。 - + obsolete obsolete validator.part_lot.only_existing - 存储位置被标记为 "仅现有",无法添加新部件。 + 储存位置被标记为仅现有,无法向其增加新物料。 - + obsolete obsolete validator.part_lot.single_part - 存储位置被标记为 "单部件", 无法添加新部件 + 储存位置被标记为单个物料,无法向其增加新物料。 - + obsolete obsolete m_status.active.help - 该部件在目前和预期未来都在生产中 + 物料当前和未来均在生产中 - + obsolete obsolete m_status.announced.help - 该部件已公布,但尚未发布。 + 物料已发布但尚未可用。 - + obsolete obsolete m_status.discontinued.help - 该部件已停产。 + 物料已停产,不再生产。 - + obsolete obsolete m_status.eol.help - 该部件即将停产。 + 产品已达到生命周期终点,将很快停止生产。 - + obsolete obsolete m_status.nrfnd.help - 不建议用于新设计。 + 物料当前在生产中,但不推荐用于新设计。 - + obsolete obsolete m_status.unknown.help - 生产状态未知。 + 物料的生产状态未知。 - + obsolete obsolete @@ -4137,7 +4155,7 @@ 成功 - + obsolete obsolete @@ -4147,7 +4165,7 @@ 错误 - + obsolete obsolete @@ -4157,17 +4175,17 @@ 警告 - + obsolete obsolete flash.notice - 注意 + 通知 - + obsolete obsolete @@ -4177,57 +4195,57 @@ 信息 - + obsolete obsolete validator.noLockout - 不能撤回自己的 "变更权限" 的权限, 以防止锁定自己。 + 不能自行撤销更改权限权限,以防止意外将自己锁定。 - + obsolete obsolete attachment_type.edit.filetype_filter - 允许的文件扩展名 + 允许的扩展名 - + obsolete obsolete attachment_type.edit.filetype_filter.help - 您可以指定以逗号分隔的文件扩展名或MIME类型,上传文件的类型在分配给此附件类型时必须在其中。要允许所有支持的图像文件,使用 image/*。 + 指定一个逗号分隔的文件扩展名或MIME类型列表,上传文件在分配到此附件类型时必须具有这些扩展名/类型。要允许所有支持的图像文件可以使用image/*。 - + obsolete obsolete attachment_type.edit.filetype_filter.placeholder - + 例如.txt,application/pdf,image/* - + obsolete obsolete part.name.placeholder - + 例如BC547 - + obsolete obsolete @@ -4237,27 +4255,27 @@ 不可选择 - + obsolete obsolete entity.edit.not_selectable.help - 禁止将此元素分配给部件。适用于将元素仅用于分组。 + 如果启用此选项,此元素不能在属性中被选择,仅用于分组。 - + obsolete obsolete bbcode.hint - 可以在此处使用BBCode + 可以在此使用BBCode(例如[b]粗体[/b]) - + obsolete obsolete @@ -4267,7 +4285,7 @@ 创建元素 - + obsolete obsolete @@ -4277,7 +4295,7 @@ 保存 - + obsolete obsolete @@ -4287,17 +4305,17 @@ 禁用封装 - + obsolete obsolete category.edit.disable_footprints.help - 禁用该类别中部件的封装属性。 + 如果启用此选项,则此类别的所有物料的封装属性将被禁用。 - + obsolete obsolete @@ -4307,37 +4325,37 @@ 禁用制造商 - + obsolete obsolete category.edit.disable_manufacturers.help - 禁用该类别中部件的制造商属性。 + 如果启用此选项,则此类别的所有物料的制造商属性将被禁用。 - + obsolete obsolete category.edit.disable_autodatasheets - 禁用自动数据文档链接 + 禁用自动数据表链接 - + obsolete obsolete category.edit.disable_autodatasheets.help - 禁用该类别中部件的 DataSheet 自动链接。 + 如果启用此选项,则不会为此类别的物料创建自动的数据表链接。 - + obsolete obsolete @@ -4347,53 +4365,53 @@ 禁用属性 - + obsolete obsolete category.edit.disable_properties.help - 禁用该类别中部件的属性。 + 如果启用此选项,则此类别的所有物料的所有属性将被禁用。 - + obsolete obsolete category.edit.partname_hint - 部件名称提示 + 物料名称提示 - + obsolete obsolete category.edit.partname_hint.placeholder - + 例如100nF - + obsolete obsolete category.edit.partname_regex - 名称过滤器 + 名称筛选 - + category.edit.part_ipn_prefix - 部件 IPN 前缀 + 物料IPN前缀 - + obsolete obsolete @@ -4403,27 +4421,27 @@ 默认描述 - + obsolete obsolete category.edit.default_description.placeholder - + 例如电容D10x10贴片 - + obsolete obsolete category.edit.default_comment - 默认注释 + 默认备注 - + obsolete obsolete @@ -4433,67 +4451,67 @@ 地址 - + obsolete obsolete company.edit.address.placeholder - + 例如ZZZ市XXX街YYYY号 - + obsolete obsolete company.edit.phone_number - 电话 + 电话号码 - + obsolete obsolete company.edit.phone_number.placeholder - + +XX 123456789 - + obsolete obsolete company.edit.fax_number - 传真 + 传真号码 - + obsolete obsolete company.edit.email - 邮件 + 电子邮箱 - + obsolete obsolete company.edit.email.placeholder - + 例如contact@foo.bar - + obsolete obsolete @@ -4503,47 +4521,47 @@ 网站 - + obsolete obsolete company.edit.website.placeholder - + 例如https://www.foo.bar - + obsolete obsolete company.edit.auto_product_url - 产品链接 + 产品URL - + obsolete obsolete company.edit.auto_product_url.help - 指向制造商网站的部件链接。 + 此字段用于自动生成在公司网站上的物料链接。占位字符%PARTNUMBER%将替换为相关编号。 - + obsolete obsolete company.edit.auto_product_url.placeholder - + 例如 https://foo.bar/product/%PARTNUMBER% - + obsolete obsolete @@ -4553,7 +4571,7 @@ ISO代码 - + obsolete obsolete @@ -4563,7 +4581,7 @@ 汇率 - + obsolete obsolete @@ -4573,7 +4591,7 @@ 3D模型 - + obsolete obsolete @@ -4583,22 +4601,25 @@ 输入 - + obsolete obsolete mass_creation.lines.placeholder - Element 1 - Element 1.1 - Element 1.1.1 - Element 1.2 -Element 2 -Element 3 + Element1 +Element1.1 +Element1.1.1 +Element1.2 +Element2 +Element3 + +Element1->Element1.1 +Element1->Element1.2 - + obsolete obsolete @@ -4608,7 +4629,7 @@ Element 3 创建 - + obsolete obsolete @@ -4618,17 +4639,17 @@ Element 3 整数 - + obsolete obsolete measurement_unit.edit.is_integer.help - 输入的值将四舍五入为整数 + 如果启用此选项,所有使用此单位的值将四舍五入为整数。 - + obsolete obsolete @@ -4638,17 +4659,17 @@ Element 3 使用SI前缀 - + obsolete obsolete measurement_unit.edit.use_si_prefix.help - 输出带有 SI 前缀的值(例如 1,2kg 而不是 1200g) + 如果启用此选项,值将使用SI前缀输出(例如1,2kg而不是1200g) - + obsolete obsolete @@ -4658,17 +4679,17 @@ Element 3 单位符号 - + obsolete obsolete measurement_unit.edit.unit_symbol.placeholder - + 例如mm - + obsolete obsolete @@ -4678,57 +4699,57 @@ Element 3 存储位置已满 - + obsolete obsolete storelocation.edit.is_full.help - 禁止添加新部件,禁止增加已有部件的数量。 + 如果选择此选项,则既不能向此存储位置增加新的物料,也不能增加现有物料的数量。 - + obsolete obsolete storelocation.limit_to_existing.label - 仅限当前部件 + 限制为现有物料 - + obsolete obsolete storelocation.limit_to_existing.help - 禁止添加新部件。 + 如果启用此选项,则无法向此存储位置增加新的物料,但可以增加现有物料的数量。 - + obsolete obsolete storelocation.only_single_part.label - 仅单个部分 + 仅单个物料 - + obsolete obsolete storelocation.only_single_part.help - 只允许存在一个部件 + 如果启用此选项,则只能将一个物料(任意数量) 分配给此储存位置。适用于小型SMD盒或送料器。 - + obsolete obsolete @@ -4738,17 +4759,17 @@ Element 3 存储类型 - + obsolete obsolete storelocation.storage_type.help - 选择计量单位,部件必须满足才能分配到该储存位置 + 可以在此选择计量单位,物料必须具有该计量单位才能分配到此储存位置 - + obsolete obsolete @@ -4758,67 +4779,67 @@ Element 3 默认货币 - + obsolete obsolete supplier.shipping_costs.label - 运输费 + 运费 - + obsolete obsolete user.username.placeholder - + 例如j.doe - + obsolete obsolete user.firstName.placeholder - + 例如John - + obsolete obsolete user.lastName.placeholder - + 例如Doe - + obsolete obsolete user.email.placeholder - + j.doe@ecorp.com - + obsolete obsolete user.department.placeholder - + 例如Development(开发) - + obsolete obsolete @@ -4828,7 +4849,7 @@ Element 3 新密码 - + obsolete obsolete @@ -4838,7 +4859,7 @@ Element 3 确认新密码 - + obsolete obsolete @@ -4848,17 +4869,17 @@ Element 3 用户需要更改密码 - + obsolete obsolete user.edit.user_disabled - 用户已禁用(无法登录) + 用户已禁用(无法登录) - + obsolete obsolete @@ -4868,7 +4889,7 @@ Element 3 创建用户 - + obsolete obsolete @@ -4878,7 +4899,7 @@ Element 3 保存 - + obsolete obsolete @@ -4888,7 +4909,7 @@ Element 3 放弃更改 - + obsolete obsolete @@ -4898,7 +4919,7 @@ Element 3 增加 - + obsolete obsolete @@ -4908,17 +4929,17 @@ Element 3 制造商链接 - + obsolete obsolete perm.group.parts - 部件 + 物料 - + obsolete obsolete @@ -4928,7 +4949,7 @@ Element 3 数据结构 - + obsolete obsolete @@ -4938,17 +4959,7 @@ Element 3 系统 - - - obsolete - obsolete - - - perm.parts - 部件 - - - + obsolete obsolete @@ -4958,7 +4969,7 @@ Element 3 查看 - + obsolete obsolete @@ -4968,7 +4979,7 @@ Element 3 编辑 - + obsolete obsolete @@ -4978,7 +4989,7 @@ Element 3 创建 - + obsolete obsolete @@ -4988,7 +4999,7 @@ Element 3 更改类别 - + obsolete obsolete @@ -4998,7 +5009,7 @@ Element 3 删除 - + obsolete obsolete @@ -5008,47 +5019,47 @@ Element 3 搜索 - + obsolete obsolete perm.part.all_parts - 列出所有部件 + 列出所有物料 - + obsolete obsolete perm.part.no_price_parts - 列出没有价格信息的部件 + 列出没有价格信息的物料 - + obsolete obsolete perm.part.obsolete_parts - 列出过时的部件 + 列出已停产的物料 - + obsolete obsolete perm.part.unknown_instock_parts - 显示库存未知的部件 + 显示库存未知的物料 - + obsolete obsolete @@ -5058,47 +5069,47 @@ Element 3 更改收藏状态 - + obsolete obsolete perm.part.show_favorite - 列出收藏的部件 + 列出收藏物料 - + obsolete obsolete perm.part.show_last_edit_parts - 显示最后编辑/添加的部件 + 显示最近编辑/增加的物料 - + obsolete obsolete perm.part.show_users - 显示最后修改的用户 + 显示最后修改用户 - + obsolete obsolete perm.part.show_history - 显示历史记录 + 显示历史 - + obsolete obsolete @@ -5108,7 +5119,7 @@ Element 3 名称 - + obsolete obsolete @@ -5118,7 +5129,7 @@ Element 3 描述 - + obsolete obsolete @@ -5128,7 +5139,7 @@ Element 3 在库 - + obsolete obsolete @@ -5138,17 +5149,17 @@ Element 3 最小库存 - + obsolete obsolete perm.part.comment - 注释 + 备注 - + obsolete obsolete @@ -5158,7 +5169,7 @@ Element 3 存储位置 - + obsolete obsolete @@ -5168,7 +5179,7 @@ Element 3 制造商 - + obsolete obsolete @@ -5178,7 +5189,7 @@ Element 3 订单信息 - + obsolete obsolete @@ -5188,17 +5199,17 @@ Element 3 价格 - + obsolete obsolete perm.part.attachments - 附件 + 文件附件 - + obsolete obsolete @@ -5208,17 +5219,7 @@ Element 3 订单 - - - obsolete - obsolete - - - perm.storelocations - 储存位置 - - - + obsolete obsolete @@ -5228,77 +5229,17 @@ Element 3 移动 - + obsolete obsolete perm.list_parts - 列出部件 + 列出物料 - - - obsolete - obsolete - - - perm.part.footprints - 封装 - - - - - obsolete - obsolete - - - perm.part.categories - 类别 - - - - - obsolete - obsolete - - - perm.part.supplier - 供应商 - - - - - obsolete - obsolete - - - perm.part.manufacturers - 制造商 - - - - - obsolete - obsolete - - - perm.projects - 项目 - - - - - obsolete - obsolete - - - perm.part.attachment_types - 附件类型 - - - + obsolete obsolete @@ -5308,7 +5249,7 @@ Element 3 导入 - + obsolete obsolete @@ -5318,7 +5259,7 @@ Element 3 标签 - + obsolete obsolete @@ -5328,7 +5269,7 @@ Element 3 电阻计算器 - + obsolete obsolete @@ -5338,27 +5279,27 @@ Element 3 封装 - + obsolete obsolete perm.tools.ic_logos - 芯片图标 + IC标志 - + obsolete obsolete perm.tools.statistics - 统计数据 + 统计 - + obsolete obsolete @@ -5368,7 +5309,7 @@ Element 3 编辑权限 - + obsolete obsolete @@ -5378,17 +5319,17 @@ Element 3 编辑用户名 - + obsolete obsolete perm.users.edit_change_group - 更改组 + 更改用户组 - + obsolete obsolete @@ -5398,7 +5339,7 @@ Element 3 编辑信息 - + obsolete obsolete @@ -5408,7 +5349,7 @@ Element 3 编辑权限 - + obsolete obsolete @@ -5418,7 +5359,7 @@ Element 3 设置密码 - + obsolete obsolete @@ -5428,7 +5369,7 @@ Element 3 更改用户设置 - + obsolete obsolete @@ -5438,7 +5379,7 @@ Element 3 显示状态 - + obsolete obsolete @@ -5448,7 +5389,7 @@ Element 3 更新数据库 - + obsolete obsolete @@ -5458,7 +5399,7 @@ Element 3 读取数据库设置 - + obsolete obsolete @@ -5468,7 +5409,7 @@ Element 3 写入数据库设置 - + obsolete obsolete @@ -5478,7 +5419,7 @@ Element 3 读取配置 - + obsolete obsolete @@ -5488,7 +5429,7 @@ Element 3 编辑配置 - + obsolete obsolete @@ -5498,7 +5439,7 @@ Element 3 服务器信息 - + obsolete obsolete @@ -5508,7 +5449,7 @@ Element 3 使用调试工具 - + obsolete obsolete @@ -5518,7 +5459,7 @@ Element 3 显示日志 - + obsolete obsolete @@ -5528,7 +5469,7 @@ Element 3 删除日志 - + obsolete obsolete @@ -5538,7 +5479,7 @@ Element 3 编辑信息 - + obsolete obsolete @@ -5548,7 +5489,7 @@ Element 3 编辑用户名 - + obsolete obsolete @@ -5558,7 +5499,7 @@ Element 3 查看权限 - + obsolete obsolete @@ -5568,7 +5509,7 @@ Element 3 显示自己的日志条目 - + obsolete obsolete @@ -5578,7 +5519,7 @@ Element 3 创建标签 - + obsolete obsolete @@ -5588,27 +5529,27 @@ Element 3 编辑选项 - + obsolete obsolete perm.self.delete_profiles - 删除配置 + 删除模板 - + obsolete obsolete perm.self.edit_profiles - 编辑配置 + 编辑模板 - + obsolete obsolete @@ -5618,17 +5559,17 @@ Element 3 工具 - + obsolete obsolete perm.groups - + 用户组 - + obsolete obsolete @@ -5638,7 +5579,7 @@ Element 3 用户 - + obsolete obsolete @@ -5648,7 +5589,7 @@ Element 3 数据库 - + obsolete obsolete @@ -5658,7 +5599,7 @@ Element 3 配置 - + obsolete obsolete @@ -5668,7 +5609,7 @@ Element 3 系统 - + obsolete obsolete @@ -5678,7 +5619,7 @@ Element 3 自己 - + obsolete obsolete @@ -5688,7 +5629,7 @@ Element 3 标签 - + obsolete obsolete @@ -5698,17 +5639,17 @@ Element 3 类别 - + obsolete obsolete perm.part.minamount - 最低数量 + 最小数量 - + obsolete obsolete @@ -5718,7 +5659,7 @@ Element 3 封装 - + obsolete obsolete @@ -5728,7 +5669,7 @@ Element 3 MPN - + obsolete obsolete @@ -5738,7 +5679,7 @@ Element 3 生产状态 - + obsolete obsolete @@ -5748,47 +5689,47 @@ Element 3 标签 - + obsolete obsolete perm.part.unit - 部件单位 + 物料单位 - + obsolete obsolete perm.part.mass - 重量 + 质量 - + obsolete obsolete perm.part.lots - 部件批次 + 物料批号 - + obsolete obsolete perm.show_users - 显示最后修改的用户 + 显示最后修改用户 - + obsolete obsolete @@ -5798,7 +5739,7 @@ Element 3 货币 - + obsolete obsolete @@ -5808,13 +5749,7 @@ Element 3 计量单位 - - - perm.part_custom_states - 部件的自定义状态 - - - + obsolete obsolete @@ -5824,27 +5759,27 @@ Element 3 旧密码 - + obsolete obsolete pw_reset.submit - 重设密码 + 重置密码 - + obsolete obsolete u2f_two_factor - 安全密钥 (U2F) + 安全密钥(U2F) - + obsolete obsolete @@ -5854,158 +5789,139 @@ Element 3 Google - + tfa.provider.webauthn_two_factor_provider 安全密钥 - + obsolete obsolete tfa.provider.google - 验证器应用 + 身份验证器应用 - + obsolete obsolete - - Login successful - 登陆成功 - - - - - obsolete - obsolete - - + log.type.exception - 未处理的异常(已过时) + 未处理的异常(已弃用) - + obsolete obsolete - + log.type.user_login 用户登录 - + obsolete obsolete - + log.type.user_logout - 用户注销 + 用户登出 - + obsolete obsolete - + log.type.unknown 未知 - + obsolete obsolete - + log.type.element_created 元素已创建 - + obsolete obsolete - + log.type.element_edited 元素已编辑 - + obsolete obsolete - + log.type.element_deleted 元素已删除 - + obsolete obsolete - + log.type.database_updated 数据库已更新 - + obsolete - + perm.revert_elements - 恢复元素 + 还原元素 - + obsolete - + perm.show_history - 显示历史记录 + 显示历史 - + obsolete - + perm.tools.lastActivity - 显示最近活动 + 显示最后活动事件 - + obsolete - + perm.tools.timeTravel - 显示旧元素版本(时间旅行) + 显示旧版本元素(回溯) - - - obsolete - - - Username - 用户名 - - - + obsolete @@ -6014,34 +5930,34 @@ Element 3 身份验证器应用已禁用 - + obsolete log.type.security.u2f_removed - 已移除安全密钥 + 安全密钥已移除 - + obsolete log.type.security.u2f_added - 已添加安全密钥 + 安全密钥已增加 - + obsolete log.type.security.backup_keys_reset - 重新生成备份密钥 + 备份密钥已重新生成 - + obsolete @@ -6050,7 +5966,7 @@ Element 3 身份验证器应用已启用 - + obsolete @@ -6059,43 +5975,43 @@ Element 3 密码已更改 - + obsolete log.type.security.trusted_device_reset - 已重置可信设备 + 受信任的设备已重置 - + obsolete log.type.collection_element_deleted - 集合元素已删除 + 已删除集合中的元素 - + obsolete log.type.security.password_reset - 重设密码 + 重置密码 - + obsolete log.type.security.2fa_admin_reset - 管理员进行了2FA重置 + 管理员重置双因素认证 - + obsolete @@ -6104,7 +6020,7 @@ Element 3 未经授权的访问尝试 - + obsolete @@ -6113,7 +6029,7 @@ Element 3 成功 - + obsolete @@ -6122,7 +6038,7 @@ Element 3 2D - + obsolete @@ -6131,7 +6047,7 @@ Element 3 1D - + obsolete @@ -6140,7 +6056,7 @@ Element 3 参数 - + obsolete @@ -6149,3448 +6065,7626 @@ Element 3 查看私有附件 - + obsolete perm.tools.label_scanner - 标签扫描仪 + 标签扫描器 - + obsolete perm.self.read_profiles - 读取配置 + 读取模板 - + obsolete perm.self.create_profiles - 创建配置 + 创建模板 - + obsolete perm.labels.use_twig - 使用TWIG模式 + 使用Twig模式 - + label_profile.showInDropdown 在快速选择中显示 - + group.edit.enforce_2fa - 实施2FA身份验证 + 强制2FA双因素认证 - + group.edit.enforce_2fa.help - 该组的每个直接成员都必须配置至少一个的第二因素进行身份验证。 + 如果启用此选项,此组的每个直接成员必须至少配置一个第二因素进行认证。建议用于具有大量权限的管理组。 - + selectpicker.nothing_selected 未选择任何内容 - + entity.delete.must_not_contain_parts - "%PATH%" 仍然包含部件。所有移除所有关联才能删除 + 元素%PATH%包含物料。移动所有物料后,才能删除此元素。 - + entity.delete.must_not_contain_attachments - 附件类型仍在被使用。必须移除所有关联才能删除 + 有附件在使用此附件类型。移除所有的使用后,才能删除此附件类型。 - + entity.delete.must_not_contain_prices - 货币仍在被使用。必须移除所有关联才能删除 + 有价格详情在使用此货币。移除所有的使用后,才能删除此货币。 - + entity.delete.must_not_contain_users - 组仍在被使用。必须移除所有关联才能删除 + 有用户在使用此用户组。移除所有的使用后,才能删除此用户组。 - + part.table.edit 编辑 - + part.table.edit.title - 编辑部件 + 编辑物料 - + + + part_list.action.scrollable_hint + 滚动以查看所有操作 + + + part_list.action.action.title 选择操作 - + part_list.action.action.group.favorite 收藏状态 - + part_list.action.action.favorite 收藏 - + part_list.action.action.unfavorite 取消收藏 - + part_list.action.action.group.change_field 更改字段 - + part_list.action.action.change_category 更改类别 - + part_list.action.action.change_footprint 更改封装 - + part_list.action.action.change_manufacturer 更改制造商 - + part_list.action.action.change_unit - 更改部件单位 + 更改物料单位 - + part_list.action.action.delete 删除 - + part_list.action.submit 提交 - + part_list.action.part_count - 选定 %count% 个部件 + 已选择 %count% 个物料 - + company.edit.quick.website 打开网站 - + company.edit.quick.email - 发送邮件 + 发送电子邮件 - + company.edit.quick.phone 拨打电话 - + company.edit.quick.fax 发送传真 - + company.fax_number.placeholder - + 例如+XX1234567890 - + part.edit.save_and_clone 保存并克隆 - + validator.file_ext_not_allowed - 该文件扩展名不属于此附件类型。 + 此附件类型不允许此文件扩展名。 - + tools.reel_calc.title - 卷盘计算器 + SMD卷盘计算器 - + tools.reel_calc.inner_dia 内径 - + tools.reel_calc.outer_dia 外径 - + tools.reel_calc.tape_thick - 编带厚度 + 胶带厚度 - + tools.reel_calc.part_distance - 元件距离 + 物料间距 - + tools.reel_calc.update 更新 - + tools.reel_calc.parts_per_meter - 每米元件数 + 每米物料数 - + tools.reel_calc.result_length - 编带长度 + 胶带长度 - + tools.reel_calc.result_amount - 大概的元件数量 + 近似物料数量 - + tools.reel_calc.outer_greater_inner_error - 错误:外径必须大于内径。 + 错误:外径必须大于内径! - + tools.reel_calc.missing_values.error - 请填写所有值。 + 请填写所有值! - + tools.reel_calc.load_preset 加载预设 - + tools.reel_calc.explanation - 该计算器可估算SMD卷轴上剩余的零件数量。测量卷轴上注明的尺寸(或使用一些预设),然后单击 "更新" 获得结果。 + 此计算器可估算SMD卷盘上还剩余多少物料。测量卷盘上标注的尺寸(或使用预设),然后点击更新获取结果。 - + perm.tools.reel_calculator SMD卷盘计算器 - + tree.tools.tools.reel_calculator SMD卷盘计算器 - + user.pw_change_needed.flash - 密码需要更改。请设置新密码 + 密码需要更改!请设置新密码。 - + part_list.action.select_null 空元素 - + part_list.action.delete-title - 确认删除这些部件? + 确定要删除这些物料? - + part_list.action.delete-message - 这些部件及任何属性信息将被删除。操作不能被撤消 + 这些物料及所有关联信息(如附件、价格信息等)将被删除。此操作无法撤消! - + part.table.actions.success - 操作成功完成。 + 操作已成功完成。 - + attachment.edit.delete.confirm - 确实删除此附件? + 确定要删除此附件? - + filter.text_constraint.value.operator.EQ 等于 - + filter.text_constraint.value.operator.NEQ 不等于 - + filter.text_constraint.value.operator.STARTS - 以开头 + 开头为 - + filter.text_constraint.value.operator.CONTAINS 包含 - + filter.text_constraint.value.operator.ENDS - 以结尾 + 结尾为 - + filter.text_constraint.value.operator.LIKE - 相似匹配 + LIKE操作符 - + filter.text_constraint.value.operator.REGEX 正则表达式 - + filter.number_constraint.value.operator.BETWEEN - 之间 + 介于 - + filter.number_constraint.AND - AND + - + filter.entity_constraint.operator.EQ - 等于(不包括子项) + 等于(不包含子元素) - + filter.entity_constraint.operator.NEQ - 不等于(不包括子项) + 不等于(不包含子元素) - + filter.entity_constraint.operator.INCLUDING_CHILDREN - 等于(含子项) + 等于(包含子元素) - + filter.entity_constraint.operator.EXCLUDING_CHILDREN - 不等于(含子项) + 不等于(包含子元素) - + part.filter.dbId 数据库ID - + filter.tags_constraint.operator.ANY - 任何标签 + 任意标签 - + filter.tags_constraint.operator.ALL 所有标签 - + filter.tags_constraint.operator.NONE - 无标签 + 不包含标签 - + part.filter.lot_count - 批次数量 + 批号数量 - + part.filter.attachments_count 附件数量 - + part.filter.orderdetails_count - 订单明细数量 + 订购详情数量 - + part.filter.lotExpirationDate - 批次的有效期 + 批号过期日期 - + part.filter.lotNeedsRefill - 任何需要补充的批次 + 任意批号需要补货 - + part.filter.lotUnknwonAmount - 未知金额 + 任何批号数量未知 - + part.filter.attachmentName 附件名称 - + + + filter.bulk_import_job.label + 批量导入任务 + + + + + filter.bulk_import_job.job_status + 任务状态 + + + + + filter.bulk_import_job.part_status_in_job + 任务中的物料状态 + + + + + filter.bulk_import_job.status.pending + 待处理 + + + + + filter.bulk_import_job.status.in_progress + 进行中 + + + + + filter.bulk_import_job.status.completed + 已完成 + + + + + filter.bulk_import_job.status.stopped + 已停止 + + + + + filter.bulk_import_job.status.failed + 失败 + + + + + filter.bulk_import_job.part_status.pending + 待处理 + + + + + filter.bulk_import_job.part_status.completed + 已完成 + + + + + filter.bulk_import_job.part_status.skipped + 已跳过 + + + filter.choice_constraint.operator.ANY 任意 - + filter.choice_constraint.operator.NONE - + 不包含 - + part.filter.amount_sum 总数量 - + filter.submit 更新 - + filter.discard 放弃更改 - + filter.clear_filters - 清除所有过滤器 + 清除所有筛选条件 - + filter.title - 过滤器 + 筛选器 - + filter.parameter_value_constraint.operator.= - 标称值 等于 + 标称值= - + filter.parameter_value_constraint.operator.!= - 标称值 不等于 + 标称值!= - + filter.parameter_value_constraint.operator.< - 标称值 小于 + 标称值< - + filter.parameter_value_constraint.operator.> - 标称值 大于 + 标称值> - + filter.parameter_value_constraint.operator.<= - 标称值 小于等于 + 标称值<= - + filter.parameter_value_constraint.operator.>= - 标称值 大于等于 + 标称值>= - + filter.parameter_value_constraint.operator.BETWEEN - 标称值 之间 + 标称值介于 - + filter.parameter_value_constraint.operator.IN_RANGE - 范围 内 + 值范围介于 - + filter.parameter_value_constraint.operator.NOT_IN_RANGE - 范围 外 + 值范围之外 - + filter.parameter_value_constraint.operator.GREATER_THAN_RANGE - 范围 大于 + 值范围> - + filter.parameter_value_constraint.operator.GREATER_EQUAL_RANGE - 范围 大于等于 + 值范围>= - + filter.parameter_value_constraint.operator.LESS_THAN_RANGE - 范围 小于 + 值范围<= - + filter.parameter_value_constraint.operator.LESS_EQUAL_RANGE - 范围 小于等于 + 值范围<= - + filter.parameter_value_constraint.operator.RANGE_IN_RANGE - 范围 包含 + 值范围包含(值范围) - + filter.parameter_value_constraint.operator.RANGE_INTERSECT_RANGE - 范围 相交 + 值范围相交(值范围) - + filter.text_constraint.value - 无值 + 未设置值 - + filter.number_constraint.value1 - 无值 + 未设置值 - + filter.number_constraint.value2 最大值 - + filter.datetime_constraint.value1 未设置日期时间 - + filter.datetime_constraint.value2 最大日期时间 - + filter.constraint.add - 添加约束 + 增加约束 - + part.filter.parameters_count - 参数的数量 + 参数数量 - + part.filter.lotDescription - 批次的说明 + 批号描述 - + parts_list.search.searching_for - 搜索部件关键字 <b>%keyword%</b> + 正在搜索关键词为 <b>%keyword%</b> 的物料 - + parts_list.search_options.caption - 启用搜索选项 + 已启用的搜索选项 - + attachment.table.element_type 关联元素类型 - + log.level.debug 调试 - + log.level.info 信息 - + log.level.notice - 注意 + 通知 - + log.level.warning 警告 - + log.level.error 错误 - + log.level.critical - 关键 + 严重 - + log.level.alert 警报 - + log.level.emergency 紧急 - + log.type.security - 安全事件 + 安全相关事件 - + log.type.instock_changed - [旧版] 库存已更改 + 遗留库存变更 - + log.target_id 目标元素ID - + entity.info.parts_count_recursive - 具有该元素或其子元素的部件数 + 具有此元素或其子元素的物料数量 - + tools.server_infos.title 服务器信息 - + permission.preset.read_only 只读 - + permission.preset.read_only.desc - 只允许进行读取操作 + 仅允许对数据进行读操作 - + permission.preset.all_inherit 全部继承 - + permission.preset.all_inherit.desc 将所有权限设置为继承 - + permission.preset.all_forbid 全部禁止 - + permission.preset.all_forbid.desc 将所有权限设置为禁止 - + permission.preset.all_allow 全部允许 - + permission.preset.all_allow.desc 将所有权限设置为允许 - + perm.server_infos 服务器信息 - + permission.preset.editor 编辑器 - + permission.preset.editor.desc - 允许更改部件和数据结构 + 允许更改物料和数据结构 - + permission.preset.admin 管理员 - + permission.preset.admin.desc - 允许执行管理操作 + 允许管理操作 - + permission.preset.button 应用预设 - + perm.attachments.show_private 显示私有附件 - + perm.attachments.list_attachments - 所有附件列表 + 显示所有附件列表 - + user.edit.permission_success - 权限预设应用成功。检查新的权限是否满足 + 权限预设已成功应用。请检查新权限是否符合需求。 - + perm.group.data 数据 - + part_list.action.action.group.needs_review - 要求审查 + 需要检查 - + part_list.action.action.set_needs_review - 设置要求审核状态 + 设置需要检查状态 - + part_list.action.action.unset_needs_review - 设置要求审核状态 + 取消需要检查状态 - + part.edit.ipn - 内部零件号 (IPN) + 内部物料编号(IPN) - + part.ipn.not_defined - 没有定义 + 未定义 - + part.table.ipn IPN - + currency.edit.update_rate - 更新汇率 + 获取汇率 - + currency.edit.exchange_rate_update.unsupported_currency - 该货币不受汇率提供商支持。检查汇率提供商配置 + 汇率提供商不支持此货币。请检查汇率提供商配置。 - + currency.edit.exchange_rate_update.generic_error - 无法更新汇率。检查汇率提供商配置 + 无法获取汇率。请检查汇率提供商配置。 - + currency.edit.exchange_rate_updated.success - 成功更新汇率。 + 成功获取汇率。 - + project.bom.quantity - 数量 + 物料清单数量 - + project.bom.mountnames - 装配名称 + 安装名称 - + project.bom.name 名称 - + project.bom.comment - 注释 + 备注 - + project.bom.part - 部件 + 物料 - + project.bom.add_entry - 添加条目 + 增加条目 - + part_list.action.group.projects 项目 - + part_list.action.projects.add_to_project - 将部件添加到项目中 + 增加物料到项目 - + project.bom.delete.confirm - 确实删除此BOM条目? + 确定要删除此物料清单条目? - + project.add_parts_to_project - 将部件添加到项目中 + 将物料增加到项目物料清单 - + part.info.add_part_to_project - 将部件添加到项目中 + 将此物料增加到项目 - + project_bom_entry.label - BOM条目 + 物料清单条目 - + project.edit.status 项目状态 - + project.status.draft 草稿 - + project.status.planning - 策划 + 规划中 - + project.status.in_production 生产中 - + project.status.finished 已完成 - + project.status.archived - 已存档 + 已归档 - + part.new_build_part.error.build_part_already_exists - 已映射到部件 + 项目组装已存在物料! - + project.edit.associated_build_part - 映射到部件 + 关联的组装物料 - + project.edit.associated_build_part.add - 创建生产成果部件 + 增加组装物料 - + project.edit.associated_build.hint - 该部件映射到该项目的生产成果,使项目成果可纳入储存管理中。 + 此物料代表此项目的组装,这些组装存储在某个位置。 - + part.info.projectBuildPart.hint - 该部件为生产成果,映射到项目 + 此物料代表以下项目的组装并与之关联 - + part.is_build_part - 是项目生产的部件 + 属于项目组装的物料 - + project.info.title 项目信息 - + project.info.bom_entries_count - BOM条目 + 物料清单条目 - + project.info.sub_projects_count 子项目 - + - project.info.bom_add_parts - 添加BOM条目 + project.info.total_build_price + 组装总价 - + + + project.info.per_unit_price + 每单位 + + + + + project.info.bom_add_parts + 增加物料清单条目 + + + project.info.info.label 信息 - + project.info.sub_projects.label 子项目 - + project.bom.price 价格 - - + + project.bom.ext_price - Extended Price + 合计金额 - + part.info.withdraw_modal.title.withdraw - 从批次中取出部件 + 从批号中取出物料 - + part.info.withdraw_modal.title.add - 添加部件到批次中 + 增加物料到批号 - + part.info.withdraw_modal.title.move - 移动部件到另一个批次 + 将物料从一个批号移动到另一个批号 - + part.info.withdraw_modal.amount 数量 - + part.info.withdraw_modal.move_to 移动到 - + part.info.withdraw_modal.comment - 批注/目的 + 备注 - + part.info.withdraw_modal.comment.hint - 描述您执行此操作的原因。此信息将保存在日志中。 + 可以在此设置备注,说明为何执行此操作。此信息将保存在日志中。 - + modal.close 关闭 - + modal.submit 提交 - + part.withdraw.success - 已成功添加/移动/撤回部件。 + 成功增加/移动/取出物料。 - + perm.parts_stock - 部件库存 + 物料库存 - + perm.parts_stock.withdraw - 从库存中提取部件 + 从库存中提取物料 - + perm.parts_stock.add - 添加部件到库存 + 增加物料到库存 - + perm.parts_stock.move - 在批次之间移动部件 + 在批号间移动物料 - + user.permissions_schema_updated - 该用户权限架构已升级到最新版本。 + 用户权限架构已升级到最新版本。 - + log.type.part_stock_changed - 部件库存已更改 + 物料库存已更改 - + log.part_stock_changed.withdraw - 部件库存提取已更改 + 库存已取出 - + log.part_stock_changed.add - 库存已添加 + 已增加库存 - + log.part_stock_changed.move 库存已移动 - + log.part_stock_changed.comment - 批注/目的 + 备注 - + log.part_stock_changed.change 更改 - + log.part_stock_changed.move_target 移动目标 - + tools.builtin_footprints_viewer.title - 内置封装图像库 + 内置封装图片库 - + tools.builtin_footprints_viewer.hint - 所有可用的内置封装图像。在附件的路径字段中输入名称或关键字,然后从下拉列表中选择图像。 + 此图库列出了所有可用的内置封装图片。如果要在附件中使用它们,请在附件的路径字段中输入名称(或关键词),然后从下拉选择中选择图像。 - + tools.ic_logos.title - 芯片图标 + IC标志 - + part_list.action.group.labels 标签 - + part_list.action.projects.generate_label - 生成标签(针对部件) + 生成标签(用于物料) - + part_list.action.projects.generate_label_lot - 生成标签(针对部件批次) + 生成标签(用于物料批号) - + part_list.action.generate_label.empty 空标签 - + project.info.builds.label - 生产 + 组装 - + project.builds.build_not_possible - 无法生产。部件没有库存 + 无法组装:物料库存不足 - + project.builds.following_bom_entries_miss_instock - 以下部件没有足够的库存,构建至少一次该项目: + 以下物料的库存不足以组装此项目一次: - + project.builds.stocked 在库 - + project.builds.needed - 所需 + 需求量 - + project.builds.build_possible - 可生产 + 可组装 - + project.builds.number_of_builds_possible - 与足够的库存生产 <b>%max_builds%</b> 个该项目 + 库存足够组装此项目共 <b>%max_builds%</b> 次。 - + project.builds.check_project_status - 当前项目状态为 <b>"%project_status%"</b>。检查是否以该状态生产项目 + 当前项目状态为<b>%project_status%</b>。检查是否真的要以此状态组装项目! - + project.builds.following_bom_entries_miss_instock_n - 没有足够的部件生产该项目 %number_of_builds% 次。 以下部件需要补充: + 没有足够的物料库存来组装此项目共 %number_of_builds% 次。以下物料库存不足: - + project.build.flash.invalid_input - 无法生产项目。 检查输入 + 无法组装项目。请检查输入! - + project.build.required_qty 所需数量 - + project.build.btn_build - 生产 + 组装 - + project.build.help - 选择应该从哪个部件批次中,获取用于生产该项目的库存(以及数量)。完成提取部件后,请选中每个BOM条目的复选框或使用顶部全选。 + 选择从哪个物料批号提取库存来组装此项目(以及数量)。完成物料的提取后,勾选每个物料清单条目的复选框,或使用顶部复选框一次性勾选所有。 - + project.build.buildsPartLot.new_lot - 创建新批次 + 创建新批号 - + project.build.add_builds_to_builds_part - Add builds to project builds part + 增加组装到项目组装物料 - + project.build.builds_part_lot - 目标批次 + 目标批号 - + project.builds.number_of_builds - 生产数量 + 组装数量 - + project.builds.no_stocked_builds - 库存生产数量 + 有库存的组装数量 - + user.change_avatar.label - 更改配置图片 + 更改头像 - + user_settings.change_avatar.label - 更改配置图片 + 更改头像 - + user_settings.remove_avatar.label - 移除配置图片 + 移除头像 - + part.edit.name.category_hint 来自类别的提示 - + category.edit.partname_regex.placeholder - + 例如"/电容\d+nF/i" - + category.edit.part_ipn_prefix.placeholder - 例如:"B12A" + 例如"B12A" - + category.edit.partname_regex.help - 与PCRE兼容的正则表达式,部分名称必须匹配。 + 物料名称必须匹配的PCRE兼容正则表达式。 - + category.edit.part_ipn_prefix.help - 输入零件IPN时建议的前缀。 + 在输入物料的IPN时建议添加的前缀。 - + entity.select.add_hint - 使用 -> 创建嵌套结构,例如 "Node 1->Node 1.1" + 使用->创建嵌套结构,例如NodeA->NodeB - + entity.select.group.new_not_added_to_DB - 新建(尚未添加到数据库) + 新建(尚未增加到数据库) - + part.edit.save_and_new - 保存并创建新的空部件 + 保存并创建新的空物料 - + homepage.first_steps.title 第一步 - + homepage.first_steps.introduction - 数据库仍是空的。浏览 <a href="%url%">文档</a> 或创建以下数据结构: + 数据库仍为空。阅读 <a href="%url%">文档</a> 或开始创建以下数据结构: - + homepage.first_steps.create_part - 或可以直接 <a href="%url%">创建新部件</a>. + 或者可以直接 <a href="%url%">创建新物料</a> 。 - + homepage.first_steps.hide_hint - 一旦创建了第一个部件,此框就会隐藏。 + 此框将在创建第一个物料后隐藏。 - + homepage.forum.text - 有关 Part-DB 的问题请访问 <a href="%href%" class="link-external" target="_blank">讨论</a> + 有关Part-DB的问题,请使用 <a href="%href%"class="link-external"target="_blank">讨论论坛</a> - + log.element_edited.changed_fields.category 类别 - + log.element_edited.changed_fields.footprint 封装 - + log.element_edited.changed_fields.manufacturer 制造商 - + log.element_edited.changed_fields.value_typical 标称值 - + log.element_edited.changed_fields.pw_reset_expires 重置密码 - + log.element_edited.changed_fields.comment - 注释 + 备注 - + log.element_edited.changed_fields.supplierpartnr - 供应商部件号 + 供应商物料编号 - + log.element_edited.changed_fields.supplier_product_url - 供应商链接 + 报价链接 - + log.element_edited.changed_fields.price 价格 - + log.element_edited.changed_fields.min_discount_quantity - 最低折扣数量 + 最小折扣金额 - + log.element_edited.changed_fields.original_filename 原始文件名 - + log.element_edited.changed_fields.path 文件路径 - + log.element_edited.changed_fields.description 描述 - + log.element_edited.changed_fields.manufacturing_status 生产状态 - + log.element_edited.changed_fields.options.barcode_type 条码类型 - + log.element_edited.changed_fields.status 状态 - + log.element_edited.changed_fields.quantity - 数量 + 物料清单数量 - + log.element_edited.changed_fields.mountnames 装配名称 - + log.element_edited.changed_fields.name 名称 - + log.element_edited.changed_fields.part - 部件 + 物料 - + log.element_edited.changed_fields.price_currency - 价格币种 + 价格货币 - + log.element_edited.changed_fields.partname_hint - 部件名称提示 + 物料名称提示 - + log.element_edited.changed_fields.partname_regex - 名称过滤器 + 名称筛选 - + log.element_edited.changed_fields.disable_footprints 禁用封装 - + log.element_edited.changed_fields.disable_manufacturers 禁用制造商 - + log.element_edited.changed_fields.disable_autodatasheets - 禁用自动 DataSheet 链接 + 禁用自动数据表链接 - + log.element_edited.changed_fields.disable_properties 禁用属性 - + log.element_edited.changed_fields.default_description 默认描述 - + log.element_edited.changed_fields.default_comment - 默认注释 + 默认备注 - + log.element_edited.changed_fields.filetype_filter - 允许的文件扩展名 + 允许的扩展名 - + log.element_edited.changed_fields.not_selectable 未选择 - + log.element_edited.changed_fields.parent 父元素 - + log.element_edited.changed_fields.shipping_costs - 运输费 + 运费 - + log.element_edited.changed_fields.default_currency 默认货币 - + log.element_edited.changed_fields.address 地址 - + log.element_edited.changed_fields.phone_number 电话号码 - + log.element_edited.changed_fields.fax_number 传真号码 - + log.element_edited.changed_fields.email_address - 邮件 + 电子邮箱 - + log.element_edited.changed_fields.website 网站 - + log.element_edited.changed_fields.auto_product_url - 产品链接 + 产品URL - + log.element_edited.changed_fields.is_full - 储存位置已满 + 存储位置已满 - + log.element_edited.changed_fields.limit_to_existing_parts - 仅限当前部件 + 限制为现有物料 - + log.element_edited.changed_fields.only_single_part - 仅单部件 + 仅单个物料 - + log.element_edited.changed_fields.storage_type - 储存类型 + 存储类型 - + log.element_edited.changed_fields.footprint_3d 3D模型 - + log.element_edited.changed_fields.master_picture_attachment 预览图像 - + log.element_edited.changed_fields.exchange_rate 汇率 - + log.element_edited.changed_fields.iso_code 汇率 - + log.element_edited.changed_fields.unit 单位符号 - + log.element_edited.changed_fields.is_integer 整数 - + log.element_edited.changed_fields.use_si_prefix - 使用 SI 前缀 + 使用SI前缀 - + log.element_edited.changed_fields.options.width - + 宽度 - + log.element_edited.changed_fields.options.height - + 高度 - + log.element_edited.changed_fields.options.supported_element 目标类型 - + log.element_edited.changed_fields.options.additional_css - 附加样式(CSS) + 附加样式(CSS) - + log.element_edited.changed_fields.options.lines 内容 - + log.element_edited.changed_fields.permissions.data 权限 - + log.element_edited.changed_fields.disabled - 禁用 + 已禁用 - + log.element_edited.changed_fields.theme 主题 - + log.element_edited.changed_fields.timezone 时区 - + log.element_edited.changed_fields.language 语言 - + log.element_edited.changed_fields.email - 邮件 + 电子邮箱 - + log.element_edited.changed_fields.department 部门 - + log.element_edited.changed_fields.last_name - + 姓氏 - + log.element_edited.changed_fields.first_name - + 名字 - + log.element_edited.changed_fields.group - + 用户组 - + log.element_edited.changed_fields.currency 首选货币 - + log.element_edited.changed_fields.enforce2FA - 执行 2FA + 强制2FA - + log.element_edited.changed_fields.symbol 符号 - + log.element_edited.changed_fields.value_min 最小值 - + log.element_edited.changed_fields.value_max 最大值 - + log.element_edited.changed_fields.value_text 文本值 - + log.element_edited.changed_fields.show_in_table - 显示在表中 + 在表格中显示 - + log.element_edited.changed_fields.attachment_type - 显示在表中 + 在表格中显示 - + log.element_edited.changed_fields.needs_review - 需要审查 + 需要检查 - + log.element_edited.changed_fields.tags 标签 - + log.element_edited.changed_fields.mass - 重量 + 质量 - + log.element_edited.changed_fields.ipn IPN - + log.element_edited.changed_fields.favorite 收藏 - + log.element_edited.changed_fields.minamount 最小库存 - + log.element_edited.changed_fields.manufacturer_product_url 产品链接 - + log.element_edited.changed_fields.manufacturer_product_number MPN - + log.element_edited.changed_fields.partUnit 计量单位 - + log.element_edited.changed_fields.partCustomState - 部件的自定义状态 + 自定义物料状态 - + log.element_edited.changed_fields.expiration_date - 有效期 + 过期日期 - + log.element_edited.changed_fields.amount 数量 - + log.element_edited.changed_fields.storage_location 存储位置 - + attachment.max_file_size 最大文件大小 - + user.saml_user - SSO/SAML 用户 + SSO/SAML用户 - + user.saml_user.pw_change_hint - 该用户使用单点登录 (SSO),无法在此处更改密码和2FA设置,请在SSO提供商上配置。 + 用户使用单点登录(SSO)。无法在此更改密码和2FA设置。请在中央SSO供应商处进行配置! - + login.sso_saml_login - 单点登录 (SSO) + 单点登录(SSO) - + login.local_login_hint - 下面的表单仅适用于本地用户登录。如果要通过单点登录进行登录请使用上面的按钮。 + 以下表单仅用于本地用户登录。如果要通过单点登录进行登录,请点击上方按钮。 - + part_list.action.action.export - 导出部件 + 导出物料 - + part_list.action.export_json - 导出 JSON + 导出为JSON - + part_list.action.export_csv - 导出 CSV + 导出为CSV - + part_list.action.export_yaml - 导出 YAML + 导出为YAML - + part_list.action.export_xml - 导出 XML + 导出为XML - + + + part_list.action.export_xlsx + 导出为XLSX + + + parts.import.title - 导入部件 + 导入物料 - + parts.import.errors.title - 导入违规 + 导入错误 - + parts.import.flash.error - 导入出错。可能存在无效数据 + 导入时出错。这很可能是由无效数据引起的。 - + parts.import.format.auto - 自动(基于文件扩展名) + 自动(基于文件扩展名) - + parts.import.flash.error.unknown_format - 无法判断给定文件的格式。 + 无法确定文件格式! - + parts.import.flash.error.invalid_file - 文件无效。请检查格式选择 + 文件无效请检查格式! - + parts.import.part_category.label 类别覆盖 - + parts.import.part_category.help - 强制导入所有的部件到此类别,忽略文件中设置的类别。 + 如果选择了分类,所有导入的物料将被强制分配到此类别。 - + import.create_unknown_datastructures - 创建未知的数据结构 + 创建未知数据结构 - + import.create_unknown_datastructures.help - 自动创建数据库中尚不存在的数据结构。如果不自动创建,不会导入未匹配的数据 + 如果选择此选项,数据库中尚不存在的数据结构(如类别、封装等)将自动创建。如果未选择则仅使用现有数据,如果未找到匹配的数据结构,物料不会创建任何内容 - + import.path_delimiter 路径分隔符 - + import.path_delimiter.help - 分隔符用于标记数据结构的路径。 + 用于标记数据表格中列(如类别、封装等)的分隔符。 - + parts.import.help_documentation - 有关文件格式的更多信息请查看 <a href="%link%">文档</a> + 有关文件格式的更多信息,请参见 <a href="%link%">文档</a> 。 - + parts.import.help - 使用此工具从文件导入部件。操作将直接写入数据库,请确保文件内容正确。 + 可以使用此工具从现有文件导入物料。在上传前请检查文件内容是否正确,物料将直接写入数据库。 - + parts.import.flash.success - 部件导入成功! + 物料导入成功! - + parts.import.errors.imported_entities - 已导入部件 + 已导入的物料 - + perm.import 导入数据 - + parts.import.part_needs_review.label - 强制 "需要审核" + 将所有导入的物料标记为需要检查 - + parts.import.part_needs_review.help - 将所有部件配置为 "需要审查" (忽略导入文件内的部件属性) + 如果启用此选项,所有导入的物料将被强制标记为需要检查。 - + project.bom_import.flash.success - 已成功导入 %count% 个BOM条目。 + 已成功导入 %count% 个物料清单条目。 - + project.bom_import.type - Type + 类型 - + project.bom_import.type.kicad_pcbnew - KiCAD PCB编辑器 BOM(.CSV) + KICAD电路图物料清单(CSV文件) - + project.bom_import.clear_existing_bom - 导入前删除现有BOM条目 + 导入前清除现有物料清单条目 - + project.bom_import.clear_existing_bom.help - 删除项目中所有旧的BOM条目,再从文件导入新的 + 选择此选项将删除项目中所有物料清单条目,并用导入的物料清单文件覆盖! - + project.bom_import.flash.invalid_file - 无法导入文件,请检查文件类型。错误信息:%message% + 文件无法导入吗,请检查文件类型。错误消息:%message% - + project.bom_import.flash.invalid_entries - 验证错误。请检查数据 + 验证错误!请检查数据! - + project.import_bom - 为项目导入BOM + 为项目导入物料清单 - + project.edit.bom.import_bom - 导入BOM + 导入物料清单 - + measurement_unit.new - 新建度量单位 + 新建计量单位 - + measurement_unit.edit - 编辑度量单位 + 编辑计量单位 - + part_custom_state.new - 部件的新自定义状态 + 新建自定义物料状态 - + part_custom_state.edit - 编辑部件的自定义状态 + 编辑自定义物料状态 - + user.aboutMe.label 关于我 - + storelocation.owner.label 所有者 - + storelocation.part_owner_must_match.label - 部件批次所有者 必须与 存储位置所有者 匹配 + 物料批号所有者必须与储存位置所有者匹配 - + part_lot.owner 所有者 - + part_lot.owner.help - 只有所有者可以提取或添加该批次的库存。 + 只有所有者可以从此批号提取或增加库存。 - + log.element_edited.changed_fields.owner 所有者 - + log.element_edited.changed_fields.instock_unknown - 数量不明 + 数量未知 - + log.element_edited.changed_fields.needs_refill - 需要补充 + 需要补货 - + part.withdraw.access_denied - 拒绝操作。请检查权限 + 不允许执行所需操作。请检查权限和物料批号的所有者。 - + part.info.amount.less_than_desired - 低于预期 + 低于期望 - + log.cli_user - 命令行用户 + CLI用户 - + log.element_edited.changed_fields.part_owner_must_match - 部件所有者 必须与 存储位置所有者 匹配 + 物料所有者必须与储存位置所有者匹配 - + part.filter.lessThanDesired - 库存低于预期 + 库存低于期望(总量<最小数量) - + part.filter.lotOwner - 批次所有者 + 批号所有者 - + user.show_email_on_profile.label - 在公共个人资料页面上显示电子邮件 + 在公开个人资料页面上显示电子邮件 - + log.details.title 日志详情 - + log.user_login.login_from_ip - 从IP地址登录 + 来自IP地址的登录 - + log.user_login.ip_anonymize_hint - 如果IP地址的最后一位丢失,则启用 GDPR 模式,其中IP地址将被匿名化。 + 如果IP地址的最后几位缺失,则表示GDPR模式已启用,IP地址将被匿名化。 - + log.user_not_allowed.unauthorized_access_attempt_to - 访问尝试未授权的页面 + 未经授权的页面访问尝试 - + log.user_not_allowed.hint - 请求被拒绝。 + 请求已被阻止。无需操作。 - + log.no_comment - 无注释 + 无备注 - + log.element_changed.field 字段 - + log.element_changed.data_before - 变更前数据 + 更改前的数据 - + error_table.error - 请求期间发生了错误。 + 请求期间发生错误。 - + part.table.invalid_regex - 无效的正则表达式(regex) + 无效的正则表达式 - + log.element_changed.data_after - 变更后数据 + 更改后的数据 - + log.element_changed.diff 差异 - + log.undo.undo.short - 撤销 + 撤消 - + log.undo.revert.short - 恢复到此时间戳 + 还原到此时间戳 - + log.view_version 查看版本 - + log.undo.undelete.short 取消删除 - + log.element_edited.changed_fields.id ID - + log.element_edited.changed_fields.id_owner 所有者 - + log.element_edited.changed_fields.parent_id - 父元素 + 父级 - + log.details.delete_entry 删除日志条目 - + log.delete.message.title - 确实删除该日志条目? + 确定要删除此日志条目? - + log.delete.message - 如果这是元素历史记录条目,则会破坏元素历史记录!使用时间旅行功能时,这可能会导致意外结果。 + 如果这是元素的历史记录条目,这将破坏元素历史记录!这在使用回溯功能时可能导致意外结果。 - + log.collection_deleted.on_collection - 收藏中 + 在集合中 - + log.element_edited.changed_fields.attachments 附件 - + tfa_u2f.add_key.registration_error - 注册安全密钥期间发生错误。再试一次或使用另一个安全密钥 + 注册安全密钥时发生错误。请重试或使用其他安全密钥! - + log.target_type.none - + ui.darkmode.light - 亮色 + 浅色 - + ui.darkmode.dark - 暗色 + 深色 - + ui.darkmode.auto - 自动(跟随系统设置) + 自动(根据系统设置决定) - + label_generator.no_lines_given - 没有文字内容。标签将保持为空 + 未提供文本内容!标签将保持为空。 - + perm.users.impersonate - 模仿其他用户 + 模拟其他用户 - + user.impersonated_by.label - 模仿用户 + 被模拟者 - + user.stop_impersonation - 停止模仿 + 停止模拟 - + user.impersonate.btn - 模仿 + 模拟 - + user.impersonate.confirm.title - 确认模仿该用户? + 确定要模拟此用户? - + user.impersonate.confirm.message - 他将被登录。确保在理由充分的情况执行该操作。 + 此操作将被记录。应在有充分理由的情况下执行此操作。 -请注意不能模仿禁用的用户。如果尝试会收到 "拒绝访问" 消息。 +请注意,无法模拟已禁用的用户。如果尝试将收到访问被拒绝消息。 - + log.type.security.user_impersonated - 用户被模仿 + 用户被模拟 - + info_providers.providers_list.title - 信息提供者 + 信息供应商 - + info_providers.providers_list.active - 活动 + 已启用 - + info_providers.providers_list.disabled - 禁用 + 已禁用 - + info_providers.capabilities.basic - 基本 + 基础 - + info_providers.capabilities.footprint 封装 - + info_providers.capabilities.picture 图片 - + info_providers.capabilities.datasheet - 数据文档 + 数据表 - + info_providers.capabilities.price 价格 - + part.info_provider_reference.badge - 用于创建此部件的信息提供者。 + 用于创建此物料的的信息供应商。 - + part.info_provider_reference - 由信息提供者创建 + 由信息供应商创建 - + oauth_client.connect.btn - 连接 OAuth + 连接OAuth - + info_providers.table.provider.label - 提供者 + 供应商 - + info_providers.search.keyword 关键词 - + info_providers.search.submit 搜索 - + info_providers.search.providers.help - 选择被搜索的提供商。 + 选择要搜索的供应商。 - + info_providers.search.providers - 提供者 + 供应商 - + info_providers.search.info_providers_list - 显示所有可用的信息提供者 + 显示所有可用的信息供应商 - + info_providers.search.title - 从信息提供者创建部件 + 从信息供应商创建物料 - + oauth_client.flash.connection_successful - 已成功连接到 OAuth 应用程序 + 已成功连接到OAuth应用程序! - + perm.part.info_providers - 信息提供者 + 信息供应商 - + perm.part.info_providers.create_parts - 从信息提供者创建部件 + 从信息供应商创建物料 - + entity.edit.alternative_names.label - 替代名称 + 别名 - + entity.edit.alternative_names.help - 此处给出的替代名称用于根据信息提供者的结果查找该元素。 + 别名用于根据信息供应商的结果查找此元素。 - + info_providers.form.help_prefix - 提供者 + 供应商 - + update_manager.new_version_available.title 新版本可用 - + update_manager.new_version_available.text - Part-DB 新版本,已推出 + Part-DB新版本可用。点击此处查看 - + update_manager.new_version_available.only_administrators_can_see - 只有管理员才能看到此消息。 + 只有管理员可以看到此消息。 - + perm.system.show_available_updates - 显示可用的 Part-DB 更新 + 显示可用的Part-DB更新 - + user.settings.api_tokens - API 令牌 + API令牌 - + user.settings.api_tokens.description - 使用 API 令牌,第三方软件可以以特定用户的权限访问 Part-DB,使用 REST API 执行各种操作。如果删除 API 令牌,则使用该令牌的软件将无法访问 Part-DB。 + 使用API令牌,其他应用程序可以使用该用户的权限访问Part-DB,通过Part-DB的RESTAPI执行各种操作。如果删除API令牌,使用该令牌的应用程序将无法访问Part-DB。 - + api_tokens.name 名称 - + api_tokens.access_level - 访问权限 + 访问等级 - + api_tokens.expiration_date - 有效期 + 过期日期 - + api_tokens.last_time_used - 上次使用时间 + 最后使用时间 - + datetime.never - 未使用过 + 永不 - + api_token.valid 有效 - + api_token.expired - 已到期 + 已过期 - + user.settings.show_api_documentation 显示API文档 - + api_token.create_new - 创建新的 API 令牌 + 创建新的API令牌 - + api_token.level.read_only 只读 - + api_token.level.edit 编辑 - + api_token.level.admin 管理员 - + api_token.level.full - 所有权限 + 完整 - + api_tokens.access_level.help - API令牌访问始终受用户权限限制。 + 限制API令牌可以访问的内容。访问权限始终受所属用户的权限限制。 - + api_tokens.expiration_date.help - 在此日期之后,令牌将不再可用。如果需要令牌永不过期,请保留为空。 + 在此日期之后令牌将不再可用。留空为永不过期。 - + api_tokens.your_token_is - API令牌: + 生成API令牌为 - + api_tokens.please_save_it - 请保存。以后将无法查看到完整的API令牌 + 请保存它,因为只会显示一次! - + api_tokens.create_new.back_to_user_settings 返回用户设置 - + project.build.dont_check_quantity 不检查数量 - + project.build.dont_check_quantity.help - 无论生产该项目实际需要更多或更少的部件,都将按给定的数量进行提取。 + 如果选择此选项,库存不足也将允许提取指定数量。 - + part_list.action.invert_selection - 反转选择 + 反向选择 - + perm.api API - + perm.api.access_api - 访问 API + 访问API - + perm.api.manage_tokens - 管理 API 令牌 + 管理API令牌 - + user.settings.api_tokens.delete.title - 确实删除此API令牌? + 确定要删除此API令牌? - + user.settings.api_tokens.delete 删除 - + user.settings.api_tokens.delete.message - 使用此 API 令牌的第三方软件将无法再访问 Part-DB。该操作无法撤消 + 使用此API令牌的应用程序将无法再访问Part-DB。此操作无法撤消! - + api_tokens.deleted - API令牌删除成功 + API令牌已成功删除! - + user.settings.api_tokens.no_api_tokens_yet - 无任何 API 令牌。 + 尚未配置API令牌。 - + api_token.ends_with 结尾为 - + entity.select.creating_new_entities_not_allowed - 不能创建这种类型的新实体。请选择一个现有的 + 无权创建此类型的新元素! - + scan_dialog.mode 条码类型 - + scan_dialog.mode.auto 自动检测 - + scan_dialog.mode.ipn IPN条码 - + scan_dialog.mode.internal Part-DB条码 - + part_association.label - 部件关联 + 物料关联 - + part.edit.tab.associations - 相关部件 + 关联物料 - + part_association.edit.other_part - 相关的部件 + 关联物料 - + part_association.edit.type - 类型 + 关系类型 - + part_association.edit.comment - 注释 + 备注 - + part_association.edit.type.help - 选择所选部件与该部件的关联方式。 + 可以在此选择所选物料与此物料的关联方式。 - + part_association.table.from_this_part - 从该部件关联到其他部件 + 从此物料到其他物料的关联 - + part_association.table.from - 来自 + - + part_association.table.type 关系 - + part_association.table.to - + part_association.type.compatible 兼容 - + part_association.table.to_this_part - 其他与该部分的关联 + 从其他物料到此物料的关联 - + part_association.type.other 其他(自定义值) - + part_association.type.supersedes - 代替 + 取代 - + part_association.edit.other_type 自定义类型 - + part_association.edit.delete.confirm - 确实删除该关联? 操作不能被撤消 + 确定要删除此关联?此操作无法撤消。 - + part_lot.edit.advanced 展开高级选项 - + part_lot.edit.vendor_barcode - 供应商条形码 + 供应商条码 - + part_lot.edit.vendor_barcode.help - 如果该批次已有条形码,可以在此处输入其内容,以便轻松扫描。 + 如果此批号已有条码(例如供应商附带),可以在此输入其内容以便于扫描。 - + scan_dialog.mode.vendor - 供应商条形码(配置于部件批次) + 供应商条码(在物料批号中配置) - + project.bom.instockAmount - 库存数量 + 在库数量 - + collection_type.new_element.tooltip - 该元素是新创建的,尚未写入到数据库中。 + 此元素是新建的,尚未写入数据库。 - + part.merge.title - 合并部件 + 合并物料 - + part.merge.title.into - + part.merge.confirm.title - 确实要合并 <b>%other%</b> 到 <b>%target%</b> ? + 确定要将 <b>%other%</b> 合并到 <b>%target%</b> ? - + part.merge.confirm.message - 将删除 <b>%other%</b>。部件将以显示的信息保存。 + <b>%other%</b>将被删除,将当前显示的信息保存到物料。 - + part.info.merge_modal.title - 合并部件 + 合并物料 - + part.info.merge_modal.other_part - 其他部件 + 其他物料 - + part.info.merge_modal.other_into_this - 将其他部件合并到此部件(删除其他,保留自己) + 将其他物料合并到此物料中(删除其他物料,保留此物料) - + part.info.merge_modal.this_into_other - 将此部件合并到其他部件(删除自己,保留其他) + 将此物料合并到其他物料中(删除此物料,保留其他物料) - + part.info.merge_btn - 合并部件 + 合并物料 - + part.update_part_from_info_provider.btn - 从信息提供者更新部件 + 从信息供应商更新物料 - + info_providers.update_part.title - 从信息提供者更新现有部件 + 从信息供应商更新现有物料 - + part.merge.flash.please_review - 数据尚未保存。查看更改并单击 保存 以保留新数据 + 数据尚未保存。请检查更改并点击保存以写入数据库。 - + user.edit.flash.permissions_fixed - 权限缺失,已更正。请检查权限是否正确 + 其他权限所需的权限缺失。已自动更正。请检查权限是否符合预期。 - + permission.legend.dependency_note - 请注意,有些权限操作是相互依赖的。如果遇到权限缺失并已更正的警告,并且某个权限被设置为允许,则必须同时将依赖操作也设置为禁止。依赖通常位于操作的右侧。 + 请注意,某些权限操作相互依赖。如果遇到警告称缺少的权限已更正且权限已重新设置为允许,也必须将依赖操作设置为禁止。依赖项通常位于操作的右侧。 - + log.part_stock_changed.timestamp 时间戳 - + part.info.withdraw_modal.timestamp 操作时间戳 - + part.info.withdraw_modal.timestamp.hint - 该字段允许指定真实日期,即实际执行库存操作的日期,而不仅仅是记录日期。该值将保存在日志条目的额外字段中。 + 此字段允许指定库存操作实际执行的真实日期,而不仅仅是记录时间。该值保存在日志条目的额外字段中。 - + part.info.withdraw_modal.delete_lot_if_empty - 如果该批次是空的,请删除 + 如果批号变空则删除此批号 - + info_providers.search.error.client_exception - 与信息提供者通信时发生错误。检查此提供程序的配置并刷新 OAuth 令牌(如果可能)。 + 与信息供应商通信时发生错误。请检查此供应商配置或刷新OAuth令牌。 - + eda_info.reference_prefix.placeholder - e + 例如C - + eda_info.reference_prefix 参考前缀 - + eda_info.kicad_section.title - KiCad 设置 + KICAD特殊设置 - + eda_info.value - + eda_info.value.placeholder - + 例如100nF - + eda_info.exclude_from_bom - 从BOM中排除 + 从物料清单中移除 - + eda_info.exclude_from_board - 从PCB中排除 + 不在PCB中进行绘制 - + eda_info.exclude_from_sim - 从仿真中排除 + 不参与电路仿真 - + eda_info.kicad_symbol - KiCad 符号名 + KICAD原理图符号 - + eda_info.kicad_symbol.placeholder - + 例如XXX:Cap - + eda_info.kicad_footprint - KiCad 封装名 + KICAD封装 - + eda_info.kicad_footprint.placeholder - + 例如XXX:0402 - + part.edit.tab.eda EDA信息 - + api.api_endpoints.title API端点 - + api.api_endpoints.partdb - Part-DB API + Part-DBAPI - + api.api_endpoints.kicad_root_url - KiCad API 根链接 + KICADAPI根URL - + eda_info.visibility - 保持可见 + 强制可见性 - + eda_info.visibility.help - 强制零件可见。默认情况下,EDA软件将自动确定可见性。 + 默认情况下,EDA软件会自动判断可见性。通过此复选框,可以强制物料可见或不可见。 - + part.withdraw.zero_amount - 尝试提取/添加的数量为零。未执行任何操作 + 尝试取用/增加的数量为零!未执行任何操作。 - + login.flash.access_denied_please_login - 拒绝访问。请登录 + 访问被拒绝!请登录后继续。 - + attachment.upload_multiple_files 上传文件 - + entity.mass_creation_flash - 成功创建 %COUNT% 个元素。 + 已成功创建%COUNT%个元素。 - - - attachment_type.labelp - 附件类型 + + + info_providers.search.number_of_results + %number% 个结果 - - - currency.labelp + + + info_providers.search.no_results + 未找到结果 + + + + + tfa.check.code.confirmation + 生成的代码 + + + + + info_providers.search.show_existing_part + 显示现有物料 + + + + + info_providers.search.edit_existing_part + 编辑现有物料 + + + + + info_providers.search.existing_part_found.short + 物料已存在 + + + + + info_providers.search.existing_part_found + 此物料(或高度相似物料)已在数据库中找到。请检查是否为同一物料以及是否要再次创建! + + + + + info_providers.search.update_existing_part + 从信息供应商更新现有物料 + + + + + part.create_from_info_provider.no_category_yet + 信息供应商无法自动确定类别。请检查数据并手动选择类别。 + + + + + part_lot.edit.user_barcode + 用户条码 + + + + + scan_dialog.mode.user + 用户自定义条码(在物料批号中配置) + + + + + scan_dialog.mode.eigp + EIGP114条码(数据矩阵码) + + + + + scan_dialog.mode.lcsc + LCSC条码 + + + + + scan_dialog.info_mode + 信息模式(解码条码并显示其内容,但不重定向到物料) + + + + + label_scanner.decoded_info.title + 解码信息 + + + + + label_scanner.target_found + 在数据库中找到项目 + + + + + label_scanner.scan_result.title + 扫描结果 + + + + + label_scanner.no_locations + 物料未存储在任何位置。 + + + + + label_generator.edit_profiles + 编辑模板 + + + + + label_generator.profile_name_empty + 模板名称不能为空! + + + + + label_generator.save_profile_name + 模板名称 + + + + + label_generator.save_profile + 另存为新模板 + + + + + label_generator.profile_saved + 模板已保存! + + + + + settings.ips.element14 + Element14/Farnell + + + + + settings.ips.element14.apiKey + API密钥 + + + + + settings.ips.element14.apiKey.help + 可以在<a href="https://partner.element14.com/">https://partner.element14.com/</a>注册API密钥。 + + + + + settings.ips.element14.storeId + 商店域名 + + + + + settings.ips.element14.storeId.help + 获取数据的商店域名。这决定了结果的语言和货币。有关有效域名列表,请参见<a href="https://partner.element14.com/docs/Product_Search_API_REST__Description">此处</a>。 + + + + + settings.ips.tme + TME + + + + + settings.ips.tme.token + API令牌 + + + + + settings.ips.tme.token.help + 可以在<a href="https://developers.tme.eu/en/">https://developers.tme.eu/en/</a>获取API令牌和密钥。 + + + + + settings.ips.tme.secret + API密钥 + + + + + settings.ips.tme.currency 货币 - - - group.labelp - + + + settings.ips.tme.language + 语言 - - - label_profile.labelp - 标签配置 + + + settings.ips.tme.country + 国家 - - - measurement_unit.labelp - 计量单位 + + + settings.ips.tme.grossPrices + 获取含税总价 - - - orderdetail.labelp - 订单详情 + + + settings.ips.mouser + Mouser - - - parameter.labelp - 参数 + + + settings.ips.mouser.apiKey + API密钥 - - - part.labelp - 部件 + + + settings.ips.mouser.apiKey.help + 可以在<a href="https://eu.mouser.com/api-hub/">https://eu.mouser.com/api-hub/</a>注册API密钥。 - - - part_association.labelp - 部件关联 + + + settings.ips.mouser.searchLimit + 搜索限制 - - - part_custom_state.labelp - 部件自定义状态 + + + settings.ips.mouser.searchLimit.help + 单次搜索的最大结果数。不能超过50。 - - - part_lot.labelp - 部件批次 + + + settings.ips.mouser.searchOptions + 搜索筛选 - - - pricedetail.labelp - 价格详情 + + + settings.ips.mouser.searchOptions.help + 这允许只显示具有一定可用性和/或合规性的物料。 - - - project_bom_entry.labelp - BOM条目 + + + settings.ips.mouser.searchOptions.none + 无筛选 + + + + + settings.ips.mouser.searchOptions.rohs + 仅符合RoHS的物料 + + + + + settings.ips.mouser.searchOptions.inStock + 仅库存物料 + + + + + settings.ips.mouser.searchOptions.rohsAndInStock + 仅库存且符合RoHS的物料 + + + + + settings.ips.lcsc + LCSC + + + + + settings.ips.lcsc.help + 警告:LCSC不提供官方API。此供应商利用网上商城API。LCSC未授权使用此API并可能随时失效,请自行承担使用风险。 + + + + + settings.ips.lcsc.enabled + 启用 + + + + + settings.ips.lcsc.currency + 货币 + + + + + settings.system.attachments + 附件与文件 + + + + + settings.system.attachments.maxFileSize + 最大文件大小 + + + + + settings.system.attachments.maxFileSize.help + 可上传文件的最大大小。请注意这也受PHP配置限制。 + + + + + settings.system.attachments.allowDownloads + 允许下载外部文件 + + + + + settings.system.attachments.allowDownloads.help + 使用此选项,用户可以通过提供URL将外部文件下载到Part-DB。<b>注意:这是安全问题,因为它允许用户通过Part-DB访问所在的内部网络!</b> + + + + + settings.system.attachments.downloadByDefault + 默认下载新附件URL + + + + + settings.system.customization + 自定义 + + + + + settings.system.customization.instanceName + 实例名称 + + + + + settings.system.customization.instanceName.help + 此Part-DB安装的名称。该值显示在导航栏和标题中。 + + + + + settings.system.customization.banner + 首页横幅 + + + + + settings.system.history + 历史日志 + + + + + settings.system.history.saveChangedFields + 在日志条目中保存元素更改了哪些字段 + + + + + settings.system.history.saveOldData + 在元素更改时,在日志条目中保存旧数据 + + + + + settings.system.history.saveNewData + 在元素更改/创建时,在日志条目中保存新数据 + + + + + settings.system.history.saveRemovedData + 在元素删除时,在日志条目中保存已移除的数据 + + + + + settings.system.customization.theme + 全局主题 + + + + + settings.system.history.enforceComments + 强制操作类型的备注 + + + + + settings.system.history.enforceComments.description + 使用此选项,可以指定哪些操作需要用户强制提供原因,该原因将记录在历史日志中。 + + + + + settings.system.history.enforceComments.type.part_edit + 物料编辑 + + + + + settings.system.history.enforceComments.type.part_create + 物料创建 + + + + + settings.system.history.enforceComments.type.part_delete + 物料删除 + + + + + settings.system.history.enforceComments.type.part_stock_operation + 物料库存操作 + + + + + settings.system.history.enforceComments.type.datastructure_edit + 数据结构编辑 + + + + + settings.system.history.enforceComments.type.datastructure_create + 数据结构创建 + + + + + settings.system.history.enforceComments.type.datastructure_delete + 数据结构删除 + + + + + settings.system.privacy.useGravatar + 使用Gravatar头像 + + + + + settings.system.privacy.useGravatar.description + 如果用户未设置头像,则根据用户电子邮件使用Gravatar头像。这会导致浏览器从第三方加载图片! + + + + + settings.system.privacy.checkForUpdates + 检查Part-DB更新 + + + + + settings.system.privacy.checkForUpdates.description + Part-DB定期检查GitHub上是否有新版本。如果不使用此功能或服务器无法连接互联网,请在此禁用它。 + + + + + settings.system.localization.locale + 默认语言/区域设置 + + + + + settings.system.localization + 本地化 + + + + + settings.system.localization.timezone + 默认时区 + + + + + settings.system.localization.base_currency + 基础货币 + + + + + settings.system.localization.base_currency_description + 用于存储价格信息和汇率的货币。当价格信息未设置货币时,假定为此货币。<b>请注意,更改此值时货币不会转换。在已增加价格信息后更改默认货币将导致价格错误!</b> + + + + + settings.system.privacy + 隐私 + + + + + settings.title + 服务器设置 + + + + + settings.misc.kicad_eda + KICAD集成 + + + + + settings.misc.kicad_eda.category_depth + 信息供应商无法自动确定类别。请审核数据并手动选择类别。 + + + + + settings.misc.kicad_eda.category_depth.help + 此值确定在KICAD中可见的类别树深度。0表示只显示顶级类别。>0以显示更多层级。-1以单个类别显示Part-DB的所有物料。 + + + + + settings.misc.kicad_eda.datasheet_link + 数据表字段链接到PDF + + + + + settings.misc.kicad_eda.datasheet_link.help + 启用后,KICAD中的数据表字段将链接到实际的PDF文件(如果找到)。禁用时它将链接到Part-DB页面。Part-DB页面链接始终可作为单独的Part-DB URL字段使用。 + + + + + settings.misc.kicad_eda.editor.title + KICAD自动补全列表 + + + + + settings.misc.kicad_eda.editor.link + 自动补全设置 + + + + + settings.misc.kicad_eda.editor.description + 配置KICAD自动补全是使用自动生成的默认列表还是自定义覆盖文件。自定义文件可在此编辑,默认文件以只读方式显示供参考。 + + + + + settings.misc.kicad_eda.editor.footprints + 封装列表 + + + + + settings.misc.kicad_eda.editor.footprints.help + 每行一个条目。用作KICAD封装字段的自动补全建议。 + + + + + settings.misc.kicad_eda.editor.symbols + 符号列表 + + + + + settings.misc.kicad_eda.editor.symbols.help + 每行一个条目。用作KICAD符号字段的自动补全建议。 + + + + + settings.misc.kicad_eda.use_custom_list + 使用自定义自动补全列表 + + + + + settings.misc.kicad_eda.use_custom_list.help + 启用后KICAD自动补全使用public/KICAD/parts_custom.txt和public/KICAD/symbols_custom.txt代替自动生成的默认文件。 + + + + + settings.misc.kicad_eda.editor.custom_footprints + 自定义封装列表 + + + + + settings.misc.kicad_eda.editor.custom_symbols + 自定义符号列表 + + + + + settings.misc.kicad_eda.editor.default_footprints + 默认封装列表 + + + + + settings.misc.kicad_eda.editor.default_symbols + 默认符号列表 + + + + + settings.misc.kicad_eda.editor.default_files_help + 自动生成的文件仅供参考。更改必须在自定义列表中进行。 + + + + + settings.behavior.sidebar + 侧边栏 + + + + + settings.behavior.sidebar.items + 侧边栏项目 + + + + + settings.behavior.sidebar.items.help + 默认显示在侧边栏的菜单。项目的顺序可以通过拖放更改。 + + + + + settings.behavior.sidebar.rootNodeEnabled + 使用根节点 + + + + + settings.behavior.sidebar.rootNodeEnabled.help + 如果启用,所有顶级类别、封装等将放在单个根节点下。如果禁用,顶级类别将直接放入菜单中。 + + + + + settings.behavior.sidebar.rootNodeExpanded + 默认展开根节点 + + + + + settings.behavior.table + 表格 + + + + + settings.behavior.table.default_page_size + 默认页面大小 + + + + + settings.behavior.table.default_page_size.help + 全页表格上的默认页面大小。设置为-1以默认显示所有项目而不分页。 + + + + + settings.behavior.table.parts_default_columns + 物料表的默认列 + + + + + settings.behavior.table.parts_default_columns.help + 物料表中默认显示的列。项目的顺序可以通过拖放更改。 + + + + + settings.ips.oemsecrets + OEMSecrets + + + + + settings.ips.oemsecrets.keepZeroPrices + 保留零价格的经销商 + + + + + settings.ips.oemsecrets.keepZeroPrices.help + 如果未设置,价格为0的经销商将被视为无效而丢弃 + + + + + settings.ips.oemsecrets.parseParams + 从描述中提取参数 + + + + + settings.ips.oemsecrets.parseParams.help + 如果启用,供应商会尝试将OEMSecrets的非结构化描述转换为结构化参数。描述中的每个参数应具有...;名称1:值1;名称2:值2的格式。 + + + + + settings.ips.oemsecrets.sortMode + 结果排序模式 + + + + + settings.ips.oemsecrets.sortMode.N + + + + + + settings.ips.oemsecrets.sortMode.C + 完整度(优先显示有详细信息的项目) + + + + + settings.ips.oemsecrets.sortMode.M + 完整度和制造商名称 + + + + + entity.export.flash.error.no_entities + 没有可导出的元素! + + + + + attachment.table.internal_file + 内部文件 + + + + + attachment.table.external_link + 外部链接 + + + + + attachment.view_external.view_at + 在 %host% 查看 + + + + + attachment.view_external + 查看外部版本 + + + + + part.table.actions.error + 执行操作时发生 %count% 个错误: + + + + + part.table.actions.error_detail + %part_name%(ID=%part_id%):%message% + + + + + part_list.action.action.change_location + 更改位置(仅适用于单批号的物料) + + + + + parts.table.action_handler.error.part_lots_multiple + 此物料包含多个库存。请手动更改位置以选择要使用的库存。 + + + + + settings.ips.reichelt + Reichelt + + + + + settings.ips.reichelt.help + Reichelt.com没有官方API,因此此信息供应商通过网页抓取网站来提取信息。它可能随时失效,请自行承担使用风险。 + + + + + settings.ips.reichelt.include_vat + 价格包含增值税 + + + + + settings.ips.pollin + Pollin + + + + + settings.ips.pollin.help + Pollin.de没有官方API,因此此信息供应商通过网页抓取网站来提取信息。它可能随时失效,请自行承担使用风险。 + + + + + settings.behavior.sidebar.rootNodeRedirectsToNewEntity + 根节点重定向到新建元素页面 + + + + + settings.ips.digikey + DigiKey + + + + + settings.ips.digikey.client_id + 客户端ID + + + + + settings.ips.digikey.secret + 密钥 + + + + + settings.ips.octopart + Octopart/Nexar + + + + + settings.ips.octopart.searchLimit + 结果数量 + + + + + settings.ips.octopart.searchLimit.help + 从Octopart获取的结果数量(请注意,这会计入API限制) + + + + + settings.ips.octopart.onlyAuthorizedSellers + 仅授权卖家 + + + + + settings.ips.octopart.onlyAuthorizedSellers.help + 设置为FALSE以在结果中包括未授权的报价 + + + + + settings.misc.exchange_rate + 货币汇率 + + + + + settings.misc.exchange_rate.fixer_api_key + Fixer.ioAPI密钥 + + + + + settings.misc.exchange_rate.fixer_api_key.help + 如果需要非欧元货币之间的汇率,在此输入fixer.io的API密钥。 + + + + + settings.misc.ipn_suggest + 物料IPN建议 + + + + + settings.misc.ipn_suggest.regex + 正则表达式 + + + + + settings.misc.ipn_suggest.regex_help + 帮助文本 + + + + + settings.misc.ipn_suggest.regex_help_description + 为正则表达式格式规范定义自己的用户帮助文本。 + + + + + settings.misc.ipn_suggest.autoAppendSuffix + 如果IPN值已被其他物料使用,则增加递增后缀 + + + + + settings.misc.ipn_suggest.suggestPartDigits + 增量位数 + + + + + settings.misc.ipn_suggest.useDuplicateDescription + 使用物料描述查找下一个可用IPN + + + + + settings.misc.ipn_suggest.suggestPartDigits.help + 用于IPN(内部物料编号)建议系统中物料增量编号的位数。 + + + + + settings.behavior.part_info + 物料信息页面 + + + + + settings.behavior.part_info.show_part_image_overlay + 显示图像叠加层 + + + + + settings.behavior.part_info.show_part_image_overlay.help + 在悬停于物料图片库上时显示带有附件详细信息的图像叠加。 + + + + + settings.behavior.keybindings + 快捷键 + + + + + settings.behavior.keybindings.enable_special_characters + 启用特殊字符的键位绑定 + + + + + settings.behavior.keybindings.enable_special_characters.help + 启用Alt+快捷键在文本输入字段中插入特殊字符(希腊字母、数学符号等)。如果快捷键与键盘布局或系统快捷键冲突,请禁用此功能。 + + + + + perm.config.change_system_settings + 更改系统设置 + + + + + tree.tools.system.settings + 系统设置 + + + + + tree.tools.system.update_manager + 更新管理器 + + + + + settings.tooltip.overrideable_by_env + 此参数的值可以通过设置环境变量%env%来覆盖。 + + + + + settings.flash.saved + 设置已成功保存。 + + + + + settings.flash.invalid + 设置无效。请检查输入! + + + + + info_providers.settings.title + 信息供应商设置 + + + + + form.apikey.redacted + 出于安全原因已编辑 + + + + + project.bom_import.map_fields + 映射字段 + + + + + project.bom_import.map_fields.help + 配置CSV列如何映射到物料清单字段 + + + + + project.bom_import.delimiter + 分隔符 + + + + + project.bom_import.delimiter.comma + 逗号(,) + + + + + project.bom_import.delimiter.semicolon + 分号(;) + + + + + project.bom_import.delimiter.tab + 制表符 + + + + + project.bom_import.field_mapping.title + 字段映射 + + + + + project.bom_import.field_mapping.csv_field + CSV字段 + + + + + project.bom_import.field_mapping.maps_to + 映射到 + + + + + project.bom_import.field_mapping.suggestion + 建议 + + + + + project.bom_import.field_mapping.priority + 优先级 + + + + + project.bom_import.field_mapping.priority_help + 优先级(数字越小=优先级越高) + + + + + project.bom_import.field_mapping.priority_short + P + + + + + project.bom_import.field_mapping.priority_note + 优先级提示:数字越小=优先级越高。默认优先级为10。最重要的字段使用优先级1-9,普通优先级使用10以上。 + + + + + project.bom_import.field_mapping.summary + 字段映射摘要 + + + + + project.bom_import.field_mapping.select_to_see_summary + 选择字段映射以查看摘要 + + + + + project.bom_import.field_mapping.no_suggestion + 无建议 + + + + + project.bom_import.preview + 预览 + + + + + project.bom_import.flash.session_expired + 导入会话已过期。请重新上传文件。 + + + + + project.bom_import.field_mapping.ignore + 忽略 + + + + + project.bom_import.type.kicad_schematic + KICAD原理图物料清单(CSV文件) + + + + + common.back + 返回 + + + + + project.bom_import.validation.errors.required_field_missing + 第 %line% 行:必填字段%field%缺失或为空。 + + + + + project.bom_import.validation.errors.no_valid_designators + 第 %line% 行:位号字段不包含有效的元件引用。 + + + + + project.bom_import.validation.warnings.unusual_designator_format + 第 %line% 行:部分元件引用格式可能异常:%designators%。 + + + + + project.bom_import.validation.errors.duplicate_designators + 第 %line% 行:重复的元件引用:%designators%。每行每个元件只能引用一次。 + + + + + project.bom_import.validation.errors.invalid_quantity + 第 %line% 行:数量%quantity%无效。 + + + + + project.bom_import.validation.errors.quantity_zero_or_negative + 第 %line% 行:数量必须大于0,输入为 %quantity%。 + + + + + project.bom_import.validation.warnings.quantity_unusually_high + 第 %line% 行:数量 %quantity% 过多。 + + + + + project.bom_import.validation.warnings.quantity_not_whole_number + 第 %line% 行:数量 %quantity% 不是整数,但有 %count% 个元件引用。 + + + + + project.bom_import.validation.errors.quantity_designator_mismatch + 第 %line% 行:数量与元件引用数量不匹配。数量为 %quantity% 个,引用 %count% (%designators%) 个。 + + + + + project.bom_import.validation.errors.invalid_partdb_id + 第 %line% 行:Part-DBID%id%无效。 + + + + + project.bom_import.validation.errors.partdb_id_zero_or_negative + 第 %line% 行:Part-DBID必须大于0,输入为 %id% 。 + + + + + project.bom_import.validation.warnings.partdb_id_not_found + 第 %line% 行:数据库中未找到Part-DB物料(ID=%id%)。元件将在不链接到现有物料的情况下导入。 + + + + + project.bom_import.validation.info.partdb_link_success + 第 %line% 行:成功链接到Part-DB物料%name%(ID=%id%)。 + + + + + project.bom_import.validation.warnings.no_component_name + 第 %line% 行:未提供元件名称/标识(MPN、名称或值),将被命名为未知元件。 + + + + + project.bom_import.validation.warnings.package_name_too_long + 第 %line% 行:封装名称%package%过长。 + + + + + project.bom_import.validation.info.library_prefix_detected + 第 %line% 行:封装%package%包含库前缀。导入时将自动移除。 + + + + + project.bom_import.validation.errors.non_numeric_field + 第 %line% 行:字段%field%包含非数字值%value%。 + + + + + project.bom_import.validation.info.import_summary + 导入摘要:共 %total% 条,有效 %valid% 条,有问题 %invalid% 条。 + + + + + project.bom_import.validation.errors.summary + 发现%count%个验证错误,必须在导入前修复。 + + + + + project.bom_import.validation.warnings.summary + 发现%count%个警告。请继续前先审核这些问题。 + + + + + project.bom_import.validation.info.all_valid + 所有条目均通过验证! + + + + + project.bom_import.validation.summary + 验证摘要 + + + + + project.bom_import.validation.total_entries + 总条目数 + + + + + project.bom_import.validation.valid_entries + 有效条目 + + + + + project.bom_import.validation.invalid_entries + 无效条目 + + + + + project.bom_import.validation.success_rate + 成功率 + + + + + project.bom_import.validation.errors.title + 验证错误 + + + + + project.bom_import.validation.errors.description + 导入继续前必须修复以下错误: + + + + + project.bom_import.validation.warnings.title + 验证警告 + + + + + project.bom_import.validation.warnings.description + 继续前应审核以下警告: + + + + + project.bom_import.validation.info.title + 信息 + + + + + project.bom_import.validation.details.title + 详细验证结果 + + + + + project.bom_import.validation.details.line + + + + + + project.bom_import.validation.details.status + 状态 + + + + + project.bom_import.validation.details.messages + 消息 + + + + + project.bom_import.validation.details.valid + 有效 + + + + + project.bom_import.validation.details.invalid + 无效 + + + + + project.bom_import.validation.all_valid + 所有条目均有效可导入! + + + + + project.bom_import.validation.fix_errors + 请在继续导入前修复验证错误。 + + + + + project.bom_import.type.generic_csv + 通用CSV + + + + + label_generator.update_profile + 使用当前设置更新模板 + + + + + label_generator.profile_updated + 标签模板已成功更新。 + + + + + settings.behavior.hompepage.items + 首页项目 + + + + + settings.behavior.homepage.items.help + 要在首页显示的项目。顺序可以通过拖放更改。 + + + + + settings.system.customization.showVersionOnHomepage + 在首页上显示Part-DB版本 + + + + + settings.behavior.part_info.extract_params_from_description + 从物料描述中提取参数 + + + + + settings.behavior.part_info.extract_params_from_notes + 从物料备注中提取参数 + + + + + settings.ips.default_providers + 默认搜索供应商 + + + + + settings.ips.general + 通用设置 + + + + + settings.ips.default_providers.help + 这些供应商将在物料供应商搜索中被预选。 + + + + + settings.behavior.table.preview_image_max_width + 预览图像最大宽度(像素) + + + + + settings.behavior.table.preview_image_min_width + 预览图像最小宽度(像素) + + + + + info_providers.bulk_import.step1.title + 批量信息供应商导入-步骤1 + + + + + info_providers.bulk_import.parts_selected + 已选物料 + + + + + info_providers.bulk_import.step1.global_mapping_description + 配置将在所有选定物料上应用的字段映射。例如"MPN→LCSC+Mouser"表示使用每个物料的MPN字段搜索LCSC和Mouser供应商。 + + + + + info_providers.bulk_import.selected_parts + 已选物料 + + + + + info_providers.bulk_import.field_mappings + 字段映射 + + + + + info_providers.bulk_import.field_mappings_help + 定义哪些物料字段使用哪些信息供应商进行搜索。多个映射将组合使用。 + + + + + info_providers.bulk_import.add_mapping + 增加映射 + + + + + info_providers.bulk_import.search_results.title + 搜索结果 + + + + + info_providers.bulk_import.errors + 错误 + + + + + info_providers.bulk_import.results_found + 找到 %count% 个结果 + + + + + info_providers.bulk_import.source_field + 源字段 + + + + + info_providers.bulk_import.view_existing + 查看现有 + + + + + info_providers.bulk_search.search_field + 搜索字段 + + + + + info_providers.bulk_search.providers + 信息供应商 + + + + + info_providers.bulk_import.actions.label + 操作 + + + + + info_providers.bulk_search.providers.help + 选择物料有此字段时要搜索哪些信息供应商。 + + + + + info_providers.bulk_search.submit + 搜索所有物料 + + + + + info_providers.bulk_search.field.select + 选择要搜索的字段 + + + + + info_providers.bulk_search.field.mpn + 制造商物料编号(MPN) + + + + + info_providers.bulk_search.field.name + 物料名称 + + + + + part_list.action.action.info_provider + 信息供应商 + + + + + part_list.action.bulk_info_provider_import + 批量信息供应商导入 + + + + + part_list.action.group.eda + EDA/KICAD + + + + + part_list.action.batch_edit_eda + 批量编辑EDA字段 + + + + + batch_eda.title + 批量编辑EDA字段 + + + + + batch_eda.description + 为 %count% 个选定物料编辑EDA/KICAD字段。在要更改的每个字段旁勾选应用复选框。 + + + + + batch_eda.show_parts + 显示已选物料 + + + + + batch_eda.apply_hint + 只有勾选了应用复选框的字段才会被更改。未勾选的字段保持不变。 + + + + + batch_eda.apply + 应用 + + + + + batch_eda.field + 字段 + + + + + batch_eda.value + + + + + + batch_eda.submit + 应用于已选物料 + + + + + batch_eda.cancel + 取消 + + + + + batch_eda.success + EDA字段已成功更新。 + + + + + batch_eda.no_parts_selected + 未选择任何物料进行批量编辑。 + + + + + info_providers.bulk_import.step1.spn_recommendation + 建议使用SPN(供应商物料编号)以获得更好的结果。为每个供应商增加映射以使用其SPN。 + + + + + info_providers.bulk_import.update_part + 更新物料 + + + + + info_providers.bulk_import.back_to_jobs + 返回任务列表 + + + + + info_providers.bulk_import.back_to_parts + 返回物料列表 + + + + + info_providers.bulk_import.job_completed + 任务完成! + + + + + info_providers.bulk_import.job_completed.description + 所有物料已处理完毕。可以在下方查看结果,或返回物料列表。 + + + + + info_providers.bulk_import.recommended + 回到顶部 + + + + + info_providers.bulk_import.exact_match + 精确名称匹配 + + + + + info_providers.bulk_import.mpn_match + MPN匹配 + + + + + info_providers.bulk_import.active_jobs + 当前任务 + + + + + info_providers.bulk_import.finished_jobs + 历史 + + + + + info_providers.bulk_import.spn_match + SPN匹配 + + + + + info_providers.bulk_import.match + 匹配 + + + + + info_providers.bulk_import.quick_apply + 快速应用 + + + + + info_providers.bulk_import.quick_apply.tooltip + 将此供应商结果应用到物料,无需打开编辑表单 + + + + + info_providers.bulk_import.quick_apply_all + 全部应用(最佳结果) + + + + + info_providers.bulk_import.quick_apply_all.tooltip + 将排名最高的搜索结果应用到所有待处理物料,无需逐个审核 + + + + + info_providers.bulk_import.prefetch_details + 预取详情 + + + + + info_providers.bulk_import.prefetch_details_help + 预取所有结果的详细信息。这需要更长时间,但会加快更新物料的工作流程。 + + + + + info_providers.bulk_import.step2.title + 从信息供应商批量导入 + + + + + info_providers.bulk_import.step2.card_title + 批量导入%count%个物料-%date% + + + + + info_providers.bulk_import.parts + 物料 + + + + + info_providers.bulk_import.results + 结果 + + + + + info_providers.bulk_import.created_at + 创建于 + + + + + info_providers.bulk_import.status.in_progress + 进行中 + + + + + info_providers.bulk_import.status.completed + 已完成 + + + + + info_providers.bulk_import.status.failed + 失败 + + + + + info_providers.bulk_import.table.name + 名称 + + + + + info_providers.bulk_import.table.description + 描述 + + + + + info_providers.bulk_import.table.manufacturer + 制造商 + + + + + info_providers.bulk_import.table.provider + 供应商 + + + + + info_providers.bulk_import.table.source_field + 源字段 + + + + + info_providers.bulk_import.back + 返回 + + + + + info_providers.bulk_import.progress + 进度: + + + + + info_providers.bulk_import.status.pending + 待处理 + + + + + info_providers.bulk_import.completed + 已完成 + + + + + info_providers.bulk_import.skipped + 已跳过 + + + + + info_providers.bulk_import.mark_completed + 标记为已完成 + + + + + info_providers.bulk_import.mark_skipped + 标记为已跳过 + + + + + info_providers.bulk_import.mark_pending + 标记为待处理 + + + + + info_providers.bulk_import.skip_reason + 跳过原因 + + + + + info_providers.bulk_import.editing_part + 作为批量导入的一部分编辑物料 + + + + + info_providers.bulk_import.complete + 完成 + + + + + info_providers.bulk_import.existing_jobs + 现有任务 + + + + + info_providers.bulk_import.job_name + 任务名称 + + + + + info_providers.bulk_import.parts_count + 物料数量 + + + + + info_providers.bulk_import.results_count + 结果数量 + + + + + info_providers.bulk_import.progress_label + 进度:%current% / %total% + + + + + info_providers.bulk_import.manage_jobs + 管理批量导入任务 + + + + + info_providers.bulk_import.view_results + 查看结果 + + + + + info_providers.bulk_import.status + 状态 + + + + + info_providers.bulk_import.manage_jobs_description + 查看并管理所有批量导入任务。要创建新任务,请选择物料并点击从信息供应商批量导入。 + + + + + info_providers.bulk_import.no_jobs_found + 未找到批量导入任务。 + + + + + info_providers.bulk_import.create_first_job + 通过在物料表中选择多个物料并选择批量信息供应商导入选项来创建第一个批量导入任务。 + + + + + info_providers.bulk_import.confirm_delete_job + 确定要删除此任务? + + + + + info_providers.bulk_import.job_name_template + 批量导入%count%个物料 + + + + + info_providers.bulk_import.step2.instructions.title + 如何使用批量导入 + + + + + info_providers.bulk_import.step2.instructions.description + 按照以下步骤高效更新物料: + + + + + info_providers.bulk_import.step2.instructions.step1 + 点击更新物料以使用供应商数据编辑物料 + + + + + info_providers.bulk_import.step2.instructions.step2 + 审核/修改物料信息。注意:需要点击两次保存以保存更改。 + + + + + info_providers.bulk_import.step2.instructions.step3 + 点击完成标记物料为已完成并返回此概览 + + + + + info_providers.bulk_import.created_by + 创建者 + + + + + info_providers.bulk_import.completed_at + 完成于 + + + + + info_providers.bulk_import.action.label + 操作 + + + + + info_providers.bulk_import.action.delete + 删除 + + + + + info_providers.bulk_import.status.active + 活动 + + + + + info_providers.bulk_import.progress.title + 进度 + + + + + info_providers.bulk_import.progress.completed_text + %completed%/%total% 已完成 + + + + + info_providers.bulk_import.status.stopped + 已停止 + + + + + info_providers.bulk_import.action.stop + 停止 + + + + + info_providers.bulk_import.confirm_stop_job + 确定要停止此任务? + + + + + part.filter.in_bulk_import_job + 在批量导入任务中 + + + + + part.filter.bulk_import_job_status + 批量导入任务状态 + + + + + part.filter.bulk_import_part_status + 批量导入物料状态 + + + + + part.edit.tab.bulk_import + 批量导入任务 + + + + + bulk_import.status.pending + 待处理 + + + + + bulk_import.status.in_progress + 进行中 + + + + + bulk_import.status.completed + 已完成 + + + + + bulk_import.status.stopped + 已停止 + + + + + bulk_import.status.failed + 失败 + + + + + bulk_import.part_status.pending + 待处理 + + + + + bulk_import.part_status.completed + 已完成 + + + + + bulk_import.part_status.skipped + 已跳过 + + + + + bulk_import.part_status.failed + 失败 + + + + + bulk_info_provider_import_job.label + 批量信息供应商导入 + + + + + bulk_info_provider_import_job_part.label + 批量导入任务物料 + + + + + info_providers.bulk_search.priority + 优先级 + + + + + info_providers.bulk_search.priority.help + 数字越小=优先级越高。相同优先级=合并结果。不同优先级=先尝试最高优先级,无结果则回退。 + + + + + info_providers.bulk_import.priority_system.title + 优先级系统 + + + + + info_providers.bulk_import.priority_system.description + 数字越小=优先级越高。相同优先级=合并结果。不同优先级=先尝试最高优先级,无结果则回退。 + + + + + info_providers.bulk_import.priority_system.example + 示例:优先级1-"LCSCSPN→LCSC",优先级2-"MPN→LCSC+Mouser",优先级3-"XXX供应商名称→所有供应商" + + + + + info_providers.bulk_import.search.submit + 搜索供应商 + + + + + info_providers.bulk_import.research.title + 重新搜索物料 + + + + + info_providers.bulk_import.research.description + 使用更新后的信息(例如新的MPN)重新搜索物料。使用与原始搜索相同的字段映射。 + + + + + info_providers.bulk_import.research.all_pending + 重新搜索所有待处理物料 + + + + + info_providers.bulk_import.research.part + 重新搜索 + + + + + info_providers.bulk_import.research.part_tooltip + 使用更新后的信息重新搜索此物料 + + + + + info_providers.bulk_import.max_mappings_reached + 已达到最大映射数量 + + + + + settings.system + 系统 + + + + + settings.behavior + 行为 + + + + + settings.ips + 信息供应商 + + + + + settings.misc + 杂项 + + + + + settings.system.localization.language_menu_entries + 语言菜单条目 + + + + + settings.system.localization.language_menu_entries.description + 要在语言下拉菜单中显示的语言。顺序可以通过拖放更改。留空以显示所有可用语言。 + + + + + project.builds.no_bom_entries + 项目没有物料清单条目 + + + + + settings.behavior.sidebar.data_structure_nodes_table_include_children + 表格默认包含子节点 + + + + + settings.behavior.sidebar.data_structure_nodes_table_include_children.help + 如果选中,类别/封装等的物料表将包含子类别的所有物料。如果未选中,表格仅显示直属的物料。 + + + + + info_providers.search.error.oauth_reconnect + 需要重新连接以下供应商的OAuth:%provider% +可以在供应商信息列表中执行此操作。 + + + + + settings.misc.ipn_suggest.useDuplicateDescription.help + 启用后,物料的描述用于查找具有相同描述的现有物料,并通过增加其数字后缀来确定建议列表的下一个可用IPN。 + + + + + settings.misc.ipn_suggest.regex.help + 每个IPN必须满足的PCRE兼容正则表达式。留空则允许任何内容作为IPN。 - + user.labelp 用户 + + + currency.labelp + 货币 + + + + + measurement_unit.labelp + 计量单位 + + + + + attachment_type.labelp + 附件类型 + + + + + label_profile.labelp + 标签模板 + + + + + part_custom_state.labelp + 自定义物料状态 + + + + + group.labelp + 用户组 + + + + + settings.synonyms.type_synonym.type + 类型 + + + + + settings.synonyms.type_synonym.language + 语言 + + + + + settings.synonyms.type_synonym.translation_singular + 翻译单数 + + + + + settings.synonyms.type_synonym.translation_plural + 翻译复数 + + + + + settings.synonyms.type_synonym.add_entry + 增加条目 + + + + + settings.synonyms.type_synonym.remove_entry + 删除条目 + + + + + settings.synonyms + 同义词 + + + + + settings.synonyms.help + 同义词系统允许覆盖Part-DB对某些事物的称呼。这很有用,特别是当Part-DB在电子以外的环境中使用时。请注意此系统目前处于实验阶段,此处定义的同义词可能不会在所有地方显示。 + + + + + settings.synonyms.type_synonyms + 类型同义词 + + + + + settings.synonyms.type_synonyms.help + 类型同义词允许替换内置数据类型的标签。例如,可以将封装重命名为其他。 + + + + + log.element_edited.changed_fields.part_ipn_prefix + IPN前缀 + + + + + part.labelp + 物料 + + + + + project_bom_entry.labelp + 物料清单条目 + + + + + part_lot.labelp + 物料批号 + + + + + orderdetail.labelp + 订购详情 + + + + + pricedetail.labelp + 价格详情 + + + + + parameter.labelp + 参数 + + + + + part_association.labelp + 物料关联 + + + + + bulk_info_provider_import_job.labelp + 批量信息供应商导入 + + + + + bulk_info_provider_import_job_part.labelp + 批量导入任务物料 + + + + + password_toggle.hide + 隐藏 + + + + + password_toggle.show + 显示 + + + + + settings.misc.ipn_suggest.regex.help.placeholder + 例如格式:3-4个由-分隔的字母数字段(任意数量),后跟-和4位数字,如PCOM-RES-0001 + + + + + part.edit.tab.advanced.ipn.prefix.global_prefix + 全局IPN前缀 + + + + + settings.misc.ipn_suggest.fallbackPrefix + 回退前缀 + + + + + settings.misc.ipn_suggest.fallbackPrefix.help + 如果类别未定义前缀时应使用的IPN前缀。 + + + + + settings.misc.ipn_suggest.numberSeparator + 数字分隔符 + + + + + settings.misc.ipn_suggest.numberSeparator.help + 用于将IPN编号与前缀分隔开的字符。 + + + + + settings.misc.ipn_suggest.categorySeparator + 类别前缀分隔符 + + + + + settings.misc.ipn_suggest.categorySeparator.help + 用于分隔不同层级类别前缀的分隔符。 + + + + + settings.misc.ipn_suggest.globalPrefix + 全局前缀 + + + + + settings.misc.ipn_suggest.globalPrefix.help + 生成具有此全局前缀的IPN选项,所有类别的物料共享。 + + - - Do not remove! Used for datatables rendering. - - - datatable.datatable.lengthMenu - _MENU_ - + + Do not remove! Used for datatables rendering. + + + datatable.datatable.lengthMenu + _MENU_ + + + + + settings.ips.buerklin + Buerklin + + + + + settings.ips.buerklin.username + 用户名 + + + + + settings.ips.buerklin.help + BuerklinAPI访问限制:每分钟100次请求/IP地址 +BuerklinAPI认证服务器:每分钟10次请求/IP地址 + + + + + project.bom.part_id + 物料ID + + + + + info_providers.search.error.general_exception + 从信息供应商检索物料时发生未知错误: %type% 。请检查供应商配置以及访问密钥。有关详细信息请查看服务器日志。 + + + + + info_providers.search.error.transport_exception + 从供应商检索信息时发生传输错误。请检查服务器是否有互联网访问权限。有关详细信息请查看服务器日志。 + + + + + update_manager.title + 更新管理器 + + + + + update_manager.new + 新建 + + + + + update_manager.current_installation + 当前安装 + + + + + update_manager.version + 版本 + + + + + update_manager.installation_type + 安装类型 + + + + + update_manager.git_branch + Git分支 + + + + + update_manager.git_commit + Git提交 + + + + + update_manager.local_changes + 本地更改 + + + + + update_manager.commits_behind + 提交落后于分支 + + + + + update_manager.auto_update_supported + 支持自动更新 + + + + + update_manager.refresh + 刷新 + + + + + update_manager.latest_release + 最新版本 + + + + + update_manager.tag + 标签 + + + + + update_manager.released + 已发布 + + + + + update_manager.release_notes + 发布说明 + + + + + update_manager.view + 查看 + + + + + update_manager.view_on_github + 在GitHub上查看 + + + + + update_manager.view_release + 查看发布 + + + + + update_manager.could_not_fetch_releases + 无法获取发布信息。请检查网络连接。 + + + + + update_manager.how_to_update + 如何更新 + + + + + update_manager.cli_instruction + 要更新Part-DB,请在终端中运行以下命令之一: + + + + + update_manager.check_for_updates + 检查更新 + + + + + update_manager.update_to_latest + 更新到最新版本 + + + + + update_manager.update_to_specific + 更新到特定版本 + + + + + update_manager.cli_recommendation + 为了安全性和可靠性,应通过命令行界面执行更新。更新过程将自动创建备份、启用维护模式并处理迁移。 + + + + + update_manager.up_to_date + 已是最新 + + + + + update_manager.newer + 较新 + + + + + update_manager.current + 当前 + + + + + update_manager.older + 较旧 + + + + + update_manager.prerelease + 预发布 + + + + + update_manager.status + 状态 + + + + + update_manager.available_versions + 可用版本 + + + + + update_manager.no_releases_found + 未找到发布 + + + + + update_manager.view_release_notes + 查看发布说明 + + + + + update_manager.update_logs + 更新日志 + + + + + update_manager.backups + 备份 + + + + + update_manager.date + 日期 + + + + + update_manager.log_file + 日志文件 + + + + + update_manager.no_logs_found + 未找到更新日志 + + + + + update_manager.file + 文件 + + + + + update_manager.size + 尺寸 + + + + + update_manager.no_backups_found + 未找到备份 + + + + + update_manager.validation_issues + 验证问题 + + + + + update_manager.maintenance_mode_active + 维护模式已激活 + + + + + update_manager.update_in_progress + 更新正在进行中 + + + + + update_manager.started_at + 开始于 + + + + + update_manager.new_version_available.message + Part-DB版本 %version% 现已可用!请考虑更新以获取最新功能和安全修复。 + + + + + update_manager.changelog + 更新日志 + + + + + update_manager.no_release_notes + 此版本没有发布说明。 + + + + + update_manager.back_to_update_manager + 返回更新管理器 + + + + + update_manager.download_assets + 下载 + + + + + update_manager.update_to_this_version + 更新到此版本 + + + + + update_manager.run_command_to_update + 在终端中运行以下命令以更新到此版本: + + + + + update_manager.log_viewer + 日志查看器 + + + + + update_manager.update_log + 更新日志 + + + + + update_manager.bytes + 字节 + + + + + perm.system.manage_updates + 管理Part-DB更新 + + + + + update_manager.create_backup + 更新前创建备份(推荐) + + + + + update_manager.confirm_update + 确定要更新Part-DB?更新前将创建备份。 + + + + + update_manager.already_up_to_date + 正在运行最新版本Part-DB。 + + + + + update_manager.progress.title + 更新进度 + + + + + update_manager.progress.updating + 正在更新Part-DB... + + + + + update_manager.progress.completed + 更新完成! + + + + + update_manager.progress.failed + 更新失败 + + + + + update_manager.progress.initializing + 正在初始化... + + + + + update_manager.progress.updating_to + 正在更新到版本 %version% + + + + + update_manager.progress.downgrading_to + 正在降级到版本 %version% + + + + + update_manager.progress.error + 错误 + + + + + update_manager.progress.success_message + Part-DB已成功更新!可能需要刷新页面以查看新版本。 + + + + + update_manager.progress.steps + 更新步骤 + + + + + update_manager.progress.waiting + 等待更新开始... + + + + + update_manager.progress.back + 返回更新管理器 + + + + + update_manager.progress.refresh_page + 刷新页面 + + + + + update_manager.progress.warning + 重要 + + + + + update_manager.progress.do_not_close + 更新进行中,请勿关闭此页面或导航离开。即使关闭此页面,更新也会继续,但将无法查看进度。 + + + + + update_manager.progress.auto_refresh + 此页面将每2秒自动刷新以显示进度。 + + + + + update_manager.progress.downgrade_title + 降级进度 + + + + + update_manager.progress.downgrade_completed + 降级完成! + + + + + update_manager.progress.downgrade_failed + 降级失败 + + + + + update_manager.progress.downgrade_success_message + Part-DB已成功降级!可能需要刷新页面以查看新版本。 + + + + + update_manager.progress.downgrade_steps + 降级步骤 + + + + + update_manager.progress.downgrade_do_not_close + 降级进行中,请勿关闭此页面或导航离开。即使关闭此页面,降级也会继续,但将无法查看进度。 + + + + + update_manager.confirm_downgrade + 确定要降级Part-DB?这将还原到旧版本。降级前将创建备份。 + + + + + update_manager.downgrade_removes_update_manager + 警告:此版本不包含更新管理器。降级后需要使用命令行手动更新(gitcheckout、composerinstall等)。 + + + + + update_manager.restore_backup + 恢复备份 + + + + + update_manager.restore_confirm_title + 从备份恢复 + + + + + update_manager.restore_confirm_message + 确定要从此备份恢复数据库? + + + + + update_manager.restore_confirm_warning + 警告:这将用备份数据覆盖当前的数据库。此操作无法撤消!请确保在继续前有当前备份。 + + + + + update_manager.web_updates_disabled + 基于Web的更新已禁用 + + + + + update_manager.web_updates_disabled_hint + 基于Web的更新已被服务器管理员禁用。请使用CLI命令php bin/console partdb:update执行更新。 + + + + + update_manager.backup_restore_disabled + 服务器配置已禁用备份恢复功能。 + + + + + update_manager.backup.create + 创建备份 + + + + + update_manager.backup.create.confirm + 立即创建完整备份?这可能需要等待一段时间。 + + + + + update_manager.backup.created + 备份创建成功。 + + + + + update_manager.backup.delete.confirm + 确定要删除此备份? + + + + + update_manager.backup.deleted + 备份删除成功。 + + + + + update_manager.backup.delete_error + 删除备份失败。 + + + + + update_manager.log.delete.confirm + 确定要删除此日志? + + + + + update_manager.log.deleted + 日志已成功删除。 + + + + + update_manager.log.delete_error + 删除日志失败。 + + + + + update_manager.view_log + 查看日志 + + + + + update_manager.delete + 删除 + + + + + update_manager.backup.download + 下载备份 + + + + + update_manager.backup.download.password_label + 确认密码以下载 + + + + + update_manager.backup.download.security_warning + 备份包含敏感数据,包括密码哈希和密钥。请确认密码以继续下载。 + + + + + update_manager.backup.download.invalid_password + 密码无效。备份下载被拒绝。 + + + + + update_manager.backup.docker_warning + 检测到Docker安装。备份存储在/var/backups/中,这不是持久卷。请使用下载按钮将备份保存在外部,或在docker-compose.yml中将挂载。 + + + + + settings.ips.conrad + Conrad + + + + + settings.ips.conrad.shopID + 商店ID + + + + + settings.ips.conrad.shopID.description + 希望从中获取结果的Conrad商店版本。这决定了结果的语言、价格和货币。如果同时有B2B和B2C版本可用,如果希望价格包含增值税,应选择B2C版本。 + + + + + settings.ips.conrad.attachment_language_filter + 附件的语言筛选 + + + + + settings.ips.conrad.attachment_language_filter.description + 仅在结果中包括选定语言的附件。 + + + + + settings.ips.generic_web_provider + 通用网页URL供应商 + + + + + settings.ips.generic_web_provider.description + 此信息供应商允许从许多商店页面URL中检索基本物料信息。 + + + + + settings.ips.generic_web_provider.enabled.help + 启用供应商后,用户可以代表Part-DB服务器向任意网站发出请求。只有在了解潜在后果的情况下才启用此功能。 + + + + + info_providers.from_url.title + 通过URL创建物料 + + + + + info_providers.from_url.url.label + URL + + + + + info_providers.from_url.no_part_found + 在给定的URL未找到物料。确定这是有效的商店URL? + + + + + info_providers.from_url.help + 根据给定的URL创建物料。如果可能,会尝试调用现有的信息供应商获取数据,否则将从网页的元数据中提取基本数据。 + + + + + update_manager.cant_auto_update + 无法从WebUI自动更新 + + + + + update_manager.switch_to + 切换到 + + + + + update_manager.update_to + 更新到 + + + + + part.gtin + GTIN/EAN + + + + + info_providers.capabilities.gtin + GTIN/EAN + + + + + part.table.gtin + GTIN + + + + + scan_dialog.mode.gtin + GTIN/EAN条码 + + + + + attachment_type.edit.allowed_targets + 仅用于 + + + + + attachment_type.edit.allowed_targets.help + 使此附件类型仅对某些元素类可用。留空则对所有元素类显示此附件类型。 + + + + + orderdetails.edit.prices_includes_vat + 价格包含增值税 + + + + + prices.incl_vat + 含增值税 + + + + + prices.excl_vat + 不含增值税 + + + + + settings.system.localization.prices_include_tax_by_default + 价格默认包含增值税 + + + + + settings.system.localization.prices_include_tax_by_default.description + 新建采购信息中价格是否包含增值税的默认值。 + + + + + part_lot.edit.last_stocktake_at + 最后盘点 + + + + + perm.parts_stock.stocktake + 盘点 + + + + + part.info.stocktake_modal.title + 盘点批号 + + + + + part.info.stocktake_modal.expected_amount + 预期数量 + + + + + part.info.stocktake_modal.actual_amount + 实际数量 + + + + + log.part_stock_changed.stock_take + 盘点 + + + + + log.element_edited.changed_fields.last_stocktake_at + 最后盘点 + + + + + part.table.eda_reference + EDA参考 + + + + + part.table.eda_value + EDA值 + + + + + settings.misc.kicad_eda.default_parameter_visibility + 参数的默认EDA可见性 + + + + + settings.misc.kicad_eda.default_parameter_visibility.help + 所有未明确设置可见性的物料参数的EDA可见性。启用后,所有参数默认在EDA软件中可见。 + + + + + settings.misc.kicad_eda.default_orderdetails_visibility + 采购信息的默认EDA可见性 + + + + + settings.misc.kicad_eda.default_orderdetails_visibility.help + 所有未明确设置可见性的采购信息的EDA可见性。启用后,所有采购信息默认在EDA软件中可见。 + + + + + label_scanner.open + 查看详情 + + + + + label_scanner.db_part_found + 数据库中找到条码对应的物料 + + + + + label_scanner.part_can_be_created + 物料可被创建 + + + + + label_scanner.part_can_be_created.help + 数据库中未找到匹配的物料,但可以基于此条码创建新的物料。 + + + + + label_scanner.part_create_btn + 通过条码创建物料 + + + + + parts.create_from_scan.title + 通过标签扫描创建物料 + + + + + scan_dialog.mode.amazon + Amazon条码 + + + + + scan_dialog.mode.tme + TME条码 + + + + + settings.ips.canopy + Canopy + + + + + settings.ips.canopy.alwaysGetDetails + 始终获取详细信息 + + + + + settings.ips.canopy.alwaysGetDetails.help + 选中后,在创建物料时会从Canopy获取更多详细信息。这会导致额外的API请求,但会提供产品要点和类别信息。 + + + + + attachment.sandbox.warning + 警告:正在查看用户上传的附件。这是未信任的内容,请谨慎操作。 + + + + + attachment.sandbox.back_to_partdb + 返回Part-DB + + + + + settings.system.attachments.showHTMLAttachments + 显示上传的HTML文件附件(沙盒模式) + + + + + settings.system.attachments.showHTMLAttachments.help + ⚠️启用后,用户上传的HTML附件可以直接在浏览器中查看。许多潜在的恶意功能已被限制,但这仍然存在安全风险,仅应在信任可上传文件的用户时启用。 + + + + + attachment.sandbox.title + HTML附件 + + + + + attachment.sandbox.as_plain_text + 以纯文本查看 + + + + + modal.cancel + 取消 + + + + + update_manager.web_updates_allowed + 允许Web更新 + + + + + update_manager.backup_restore_allowed + 允许恢复备份 + + + + + update_manager.backup_download_allowed + 允许下载备份 + + + + + update_manager.docker.setup_title + 启用Watchtower一键Docker更新 + + + + + update_manager.docker.setup_description + Part-DB可以使用Watchtower(一个开源容器更新程序)自动更新Docker容器。增加Watchtower作为配套容器并在下方配置连接。 + + + + + update_manager.docker.setup_step1 + 1.将Watchtower增加到docker-compose.yml: + + + + + update_manager.docker.setup_step2 + 2.将环境变量增加到Part-DB容器配置中: + + + + + update_manager.docker.setup_network_hint + 确保Part-DB和Watchtower在同一Docker网络中。如果Watchtower使用基于标签的筛选(WATCHTOWER_LABEL_ENABLE=true),请将标签com.centurylinklabs.watchtower.enable=true增加到Part-DB容器配置中。 + + + + + update_manager.docker.watchtower_unreachable_title + 无法访问Watchtower + + + + + update_manager.docker.watchtower_unreachable_description + Watchtower已配置但无法访问。请验证Watchtower容器是否正在运行以及API的URL和令牌是否正确。 + + + + + update_manager.docker.confirm_update + 确定要通过Watchtower更新Part-DB?容器将使用新镜像重新启动。与Git更新不同,Docker更新无法自动回滚。 + + + + + update_manager.docker.update_via_watchtower + 通过Watchtower更新到 + + + + + update_manager.docker.no_rollback_warning + Docker更新无法自动回滚。更新前将创建数据库备份,以便在需要时恢复数据。 + + + + + update_manager.docker.progress_title + Docker更新正在进行中 + + + + + update_manager.docker.waiting_for_watchtower + 等待Watchtower拉取新镜像... + + + + + update_manager.docker.elapsed + 已用时间 + + + + + update_manager.docker.waiting_title + 已触发更新 + + + + + update_manager.docker.waiting_description + Watchtower已被通知。它将拉取最新的Docker镜像并重新启动Part-DB容器。 + + + + + update_manager.docker.watchtower_working + Watchtower正在处理更新... + + + + + update_manager.docker.watchtower_working_hint + 这可能需要几分钟,具体取决于网络速度和映像大小。 + + + + + update_manager.docker.restarting_title + 容器正在重启 + + + + + update_manager.docker.restarting_description + Watchtower已拉取新镜像并正在重新启动Part-DB容器。 + + + + + update_manager.docker.restarting_hint + 页面将自动检测服务器何时重新上线。这通常需要10-30秒。 + + + + + update_manager.docker.success_title + 更新完成! + + + + + update_manager.docker.success_message + Part-DB已通过Watchtower成功更新。 + + + + + update_manager.docker.previous_version + 上一版本 + + + + + update_manager.docker.new_version + 新版本 + + + + + update_manager.docker.back_to_update_manager + 返回更新管理器 + + + + + update_manager.docker.go_to_homepage + 前往首页 + + + + + update_manager.docker.timeout_title + 更新耗时超出预期 + + + + + update_manager.docker.timeout_message + 更新耗时超出预期。请查看Watchtower容器日志以了解详情。更新可能仍在进行中。 + + + + + update_manager.docker.retry + 重试 + + + + + update_manager.docker.warning + 警告 + + + + + update_manager.docker.do_not_close + 请勿关闭此页面。它将在更新完成时自动检测。 + + + + + update_manager.docker.updating_via_watchtower + 正在通过Watchtower更新 + + + + + update_manager.docker.step_waiting + 正在拉取镜像 + + + + + update_manager.docker.steps + 更新步骤 + + + + + update_manager.docker.step_trigger + 触发更新 + + + + + update_manager.docker.step_trigger_desc + Watchtower已被通知检查更新 + + + + + update_manager.docker.step_pull + 拉取新镜像 + + + + + update_manager.docker.step_pull_desc + 正在从注册表下载最新的Docker镜像 + + + + + update_manager.docker.step_restart + 重启容器 + + + + + update_manager.docker.step_restart_desc + 停止旧容器并启动新容器 + + + + + update_manager.docker.step_verify + 验证 + + + + + update_manager.docker.step_verify_desc + 确认Part-DB正在新版本上运行 + + + + + update_manager.docker.watchtower_status + Watchtower + + + + + update_manager.docker.watchtower_connected + 已连接 + + + + + update_manager.docker.watchtower_unreachable_short + 不可达 + + + + + update_manager.docker.watchtower_not_configured + 未配置 + + + + + update_manager.docker.step_stop + 停止容器 + + + + + update_manager.docker.step_stop_desc + 在重新创建前优雅地停止当前容器 + + + + + update_manager.docker.step_health + 健康检查 + + + + + update_manager.docker.step_health_desc + 等待新容器通过健康检查 + + + + + update_manager.docker.updating + 正在通过Docker更新Part-DB... + + + + + part.create_from_info_provider.lot_filled_from_barcode + 物料批号通过条码创建:请检查数据是否正确。 + + + + + project.bom_import.field_mapping.error.check_delimiter + 映射错误:请检查选择的分隔符是否正确! + + + + + settings.ai + AI + + + + + settings.ai.openrouter + OpenRouter + + + + + settings.ai.lmstudio + LMStudio + + + + + settings.ips.ai_extractor.model + AI模型 + + + + + settings.ips.ai_extractor.ai_platform + AI平台 + + + + + settings.ips.ai_extractor.model.help + 用于提取的AI模型。必须支持结构化输出。 + + + + + settings.ips.ai_extractor.max_content_length + 最大网页内容长度 + + + + + settings.ips.ai_extractor.max_content_length.description + 发送到AI服务的网站最大字符数。 + + + + + settings.ips.ai_extractor.output_language + 输出语言 + + + + + settings.ips.ai_extractor.output_language.description + 默认情况下,供应商以网站相同的语言返回信息。通过此选项可以要求AI翻译。可能仅适用于某些模型。 + + + + + settings.ips.ai_extractor.additional_instructions + 附加说明 + + + + + settings.ips.ai_extractor.additional_instructions.description + 附加说明将附加到系统提示中。 + + + + + info_providers.search.advanced_options + 高级选项 + + + + + info_providers.no_cache_search + 不缓存搜索结果/强制重新搜索 + + + + + info_providers.no_cache_details + 不缓存结果详情/强制重新获取物料详情 + + + + + info_providers.from_url.method.generic_web + 经典网页抓取器 + + + + + info_providers.from_url.method.ai_web + AI网页抓取器 + + + + + info_providers.from_url.method + 方法 + + + + + info_providers.from_url.no_cache + 忽略缓存/强制重新获取信息 + + + + + info_providers.from_url.skip_delegation + 不调用信息供应商 + + + + + settings.ips.ai_extractor + AI网页提取器 + + + + + settings.ips.ai_extractor.description + 此信息供应商使用大型语言模型(LLM)从任意商店URL中提取详细的物料信息。 + + + + + settings.ai.openrouter.help + 通过openrouter.ai访问多种AI模型 + + + + + settings.ai.lmstudio.hosturl + 主机URL + + + + + settings.ai.ollama + Ollama + + + + + settings.ai.ollama.endpoint + 端点URL + + + + + settings.ai.ollama.apiKey + API密钥 + + + + + settings.ai.timeout + Timeout + + + + + settings.ai.timeout.help + Maximum time in seconds to wait for a response. Local AI inference might take multiple minutes, cloud inference is normally faster. + + + + + browser_plugin.recent_pages.title + 最近的浏览器扩展提交 + + + + + browser_plugin.recent_pages.help + 最近从浏览器扩展提交的页面。点击使用捕获的HTML创建物料。 + + + + + settings.ips.browser_plugin + 浏览器插件 + + + + + settings.ips.browser_plugin.description + 浏览器插件允许直接从浏览器向Part-DB提交页面以创建新物料。提交HTML内容,因此即使在受DDOS保护的页面或需要JavaScript才能正确渲染的页面上也能进行提取。需要启用通用网页URL供应商或AI网页提取器才能使用。 + + + + + settings.ips.browser_plugin.enabled.help + 启用后,具有信息供应商权限的用户可以将页面提交到Part-DB并稍后检索。 + + + + + system.app_secret.insecure.title + 不安全的APP_SECRET + + + + + system.app_secret.insecure.message + <code>APP_SECRET</code>环境变量设置为Part-DB附带的默认值。这是安全风险!请在<code>.env.local</code>或<code>docker-compose.yaml</code>文件中将其设置为新的随机值。 + + + + + system.app_secret.insecure.suggestion + 可以使用这个随机生成的值(请勿公开): + - \ No newline at end of file + diff --git a/translations/security.zh.xlf b/translations/security.zh.xlf index 58fbb26f..be1dbb00 100644 --- a/translations/security.zh.xlf +++ b/translations/security.zh.xlf @@ -4,19 +4,19 @@ user.login_error.user_disabled - 账户已被禁用。请联系管理员 + 此账户已被禁用!如果这是个错误请联系管理员。 saml.error.cannot_login_local_user_per_saml - 无法通过 SSO 以本地用户身份登录。请使用本地用户密码 + 无法通过SSO以本地用户身份登录!请使用本地用户和密码登录。 saml.error.cannot_login_saml_user_locally - 无法使用本地身份验证器以SAML用户身份登录!请改用SSO登录 + 禁止使用本地认证以SAML用户身份登录!请使用SSO登录。 diff --git a/translations/validators.de.xlf b/translations/validators.de.xlf index 270ee62e..4cb0caca 100644 --- a/translations/validators.de.xlf +++ b/translations/validators.de.xlf @@ -253,5 +253,23 @@ Dies ist keine gültige GTIN / EAN! + + + info_providers.validation.provider_id_without_key + Wenn Sie eine Anbieter-ID angeben, müssen Sie auch einen Info-Anbieter angeben oder beide entfernen. + + + + + info_providers.validation.provider_url_without_key + Wenn Sie eine Anbieter-URL angeben, müssen Sie auch einen Info-Anbieter angeben. + + + + + info_providers.validation.provider_key_without_id + Wenn Sie einen Info-Anbieter angeben, müssen Sie auch eine Anbieter-ID angeben oder beides entfernen. + + diff --git a/translations/validators.en.xlf b/translations/validators.en.xlf index 624c6a89..cc062ad2 100644 --- a/translations/validators.en.xlf +++ b/translations/validators.en.xlf @@ -253,5 +253,23 @@ This is not an valid GTIN / EAN! + + + info_providers.validation.provider_id_without_key + If you specify an provider ID, you also need to specify an info provider or remove both. + + + + + info_providers.validation.provider_url_without_key + If you specify an provider URL, you also need to specify an info provider. + + + + + info_providers.validation.provider_key_without_id + If you specify an info provider, you also need to provide an provider id, or remove both. + + diff --git a/translations/validators.zh.xlf b/translations/validators.zh.xlf index 75491a97..f6363fe0 100644 --- a/translations/validators.zh.xlf +++ b/translations/validators.zh.xlf @@ -4,31 +4,31 @@ part.master_attachment.must_be_picture - 预览附件必须是有效的图片 + 预览附件必须是有效的图片! structural.entity.unique_name - 相同层下已存在同名元素 + 当前层级已存在同名元素! parameters.validator.min_lesser_typical - 值必须小于或等于标称值 ({{compare_value}})。 + 值必须小于或等于标称值({{ compared_value }})。 parameters.validator.min_lesser_max - 值必须小于最大值 ({{compare_value}})。 + 值必须小于最大值({{ compared_value }})。 parameters.validator.max_greater_typical - 值必须大于或等于标称值 ({{compare_value}})。 + 值必须大于或等于标称值({{ compared_value }})。 @@ -40,7 +40,7 @@ user.invalid_username - 用户名只能包含字母、数字、下划线、点、加号或减号。 + 用户名只能包含字母、数字、下划线、点、加号或减号,且不能以@开头! @@ -49,7 +49,7 @@ validator.noneofitschild.self - 一个元素不能是它自己的父元素。 + 元素不能成为自生的父级! @@ -58,199 +58,199 @@ validator.noneofitschild.children - 不能将子元素指定为父元素(会导致循环)。 + 不能将子元素指定为自身父级,这会导致循环引用! validator.select_valid_category - 请选择一个有效的类别。 + 请选择有效的分类! validator.part_lot.only_existing - 无法将新部件添加到此位置,因为它被标记为 "仅现有" + 无法向此位置增加新物料,因为它被标记为"仅限已有物料" validator.part_lot.location_full.no_increase - 位置已满。数量无法增加(增加值必须小于 {{ old_amount }})。 + 位置已满。数量无法增加(要求必须小于 {{ old_amount }})。 validator.part_lot.location_full - 位置已满。无法添加新部件。 + 位置已满。无法向其中增加新物料。 validator.part_lot.single_part - 该位置只能储存一个部件。 + 此位置只能包含单个物料并且已满! validator.attachment.must_not_be_null - 必须选择附件类型。 + 必须选择附件类型! validator.orderdetail.supplier_must_not_be_null - 必须选择供应商。 + 必须选择供应商! validator.measurement_unit.use_si_prefix_needs_unit - 要启用 SI 前缀,必须设置单位符号。 + 要启用SI前缀,必须设置单位符号! part.ipn.must_be_unique - 内部部件号是唯一的。{{ value }} 已被使用! + 内部物料号必须唯一。{{ value }} 已被使用! validator.project.bom_entry.name_or_part_needed - 您必须为 BOM 条目选择部件,或为非部件 BOM 条目设置名称。 + 必须为[物料BOM条目]选择一个物料,或为[非物料BOM条目]设定名称。 project.bom_entry.name_already_in_bom - 已存在具有该名称的 BOM 条目。 + 已存在同名BOM条目! project.bom_entry.part_already_in_bom - 该部件已存在于 BOM 中。 + 此物料已存在于BOM中! project.bom_entry.mountnames_quantity_mismatch - 挂载名称的数量必须与 BOM 数量匹配。 + 装配名称数量必须与BOM数量匹配! project.bom_entry.can_not_add_own_builds_part - 您无法将项目自己的生产映射部件添加到 BOM 中。 + 不能将[项目自身]的[组装输出物料]增加到BOM中。 project.bom_has_to_include_all_subelement_parts - 项目 BOM 必须包括所有子项目生产的部件。项目 %project_name% 的 %part_name% 部件丢失。 + 项目BOM必须包含所有子项目的组装物料。缺少项目 %project_name% 的物料 %part_name%! project.bom_entry.price_not_allowed_on_parts - 与部件关联的 BOM 条目上不允许有价格。请在部件上定义价格。 + 与物料关联的BOM条目不允许设置价格。请在物料上定义价格。 validator.project_build.lot_bigger_than_needed - 选择的提取数量超出所需数量。 + 选择的数量超过所需数量!请减少到所需数量。 validator.project_build.lot_smaller_than_needed - 选择的提取数量少于所需数量。 + 选择的数量少于所需数量!请增加到所需数量。 part.name.must_match_category_regex - 部件名称与类别指定的正则表达式不匹配:%regex% + 物料名称与分类指定的正则表达式不匹配:%regex% validator.attachment.name_not_blank - 手动设置值,或上传文件使用其文件名作为附件的名称。 + 在此处设置值,或上传文件后自动使用其文件名作为附件名称。 validator.part_lot.owner_must_match_storage_location_owner - 该 批次的所有者 必须与 所选存储位置的所有者(%owner_name%) 匹配! + 此物料批号的所有者必须与所选存储位置的所有者(%owner_name%)匹配! validator.part_lot.owner_must_not_be_anonymous - 批次所有者不能是匿名用户。 + 物料批号所有者不能是匿名用户! validator.part_association.must_set_an_value_if_type_is_other - 如果将类型设置为 "other" 则必须为其设置一个描述性值。 + 当类型设置为"其他"时必须为其设定描述性值! validator.part_association.part_cannot_be_associated_with_itself - 部件不能与自己关联。 + 物料不能与自身关联! validator.part_association.already_exists - 与此部件的关联已存在。 + 与此物料的关联已存在! validator.part_lot.vendor_barcode_must_be_unique - 该供应商条码已在另一批次中使用。条形码必须是唯一的 + 此供应商条码值已在另一物料批号中使用。条码必须唯一! validator.year_2038_bug_on_32bit - 由于技术限制,在32位系统中无法选择2038年1月19日之后的日期! + 由于技术限制,在32位系统上无法选择2038-01-19之后的日期! validator.fileSize.invalidFormat - 文件大小格式无效。请使用整数并以 K、M 或 G 作为后缀,分别代表 KB、MB 或 GB。 + 无效的文件大小格式。请使用整数后加 K(KByte)、M(MByte)、G(GByte)的后缀。 validator.invalid_range - 给定的范围无效 + 指定的范围无效! validator.google_code.wrong_code - 验证码无效。请检查验证器应用设置是否正确,并确保服务器与认证设备的时间均已同步。 + 验证码无效。请检查验证器应用是否正确设置,并且切薄服务器和验证设备的时间均正确。 settings.synonyms.type_synonyms.collection_type.duplicate - 该类型在此语言下已存在翻译定义! + 已为此类型和语言定义了翻译! validator.invalid_gtin - 无效的GTIN / EAN 码。 + 这不是有效的GTIN/EAN! diff --git a/yarn.lock b/yarn.lock index 7589ce13..168c98f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,58 +2,58 @@ # yarn lockfile v1 -"@algolia/autocomplete-core@1.19.8": - version "1.19.8" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.8.tgz#7c84c771d28643fb00d09026c05013fb97aeea23" - integrity sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA== +"@algolia/autocomplete-core@1.19.9": + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.9.tgz#bbed371e56aeea4a31a3af239f16733e1b8aedca" + integrity sha512-4U2JKLMWlDu0CotYyUkWakDxr8AIav3QtIUXXRpfavYN29aVWfzlwJp9T0rPKEf/dO2QCPAUc0Kq1Tj1GJxo2A== dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.19.8" - "@algolia/autocomplete-shared" "1.19.8" + "@algolia/autocomplete-plugin-algolia-insights" "1.19.9" + "@algolia/autocomplete-shared" "1.19.9" -"@algolia/autocomplete-js@1.19.8", "@algolia/autocomplete-js@^1.17.0": - version "1.19.8" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-js/-/autocomplete-js-1.19.8.tgz#35960525442d741a0a4ee5ac4e1fcd6c550355ff" - integrity sha512-9Sfr9Un3vObdtnj6IqzxoD9XisjFJxA9WAyVxmOkwTD9aVluyNwDeEWeGLy12xhRyILjA5C7byto159cZcdEEA== +"@algolia/autocomplete-js@1.19.9", "@algolia/autocomplete-js@^1.17.0": + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-js/-/autocomplete-js-1.19.9.tgz#b41ac9bdda41503e3766e430ab4e66adc5854737" + integrity sha512-AXtqH+BBjDrTeoqCqOom082umhMtL/RF3+DVQSkoukh/1aaFdevNAtCqxwQSUCKQFLo0YLcDsB0cBItnl1X+bg== dependencies: - "@algolia/autocomplete-core" "1.19.8" - "@algolia/autocomplete-preset-algolia" "1.19.8" - "@algolia/autocomplete-shared" "1.19.8" + "@algolia/autocomplete-core" "1.19.9" + "@algolia/autocomplete-preset-algolia" "1.19.9" + "@algolia/autocomplete-shared" "1.19.9" htm "^3.1.1" preact "^10.13.2" -"@algolia/autocomplete-plugin-algolia-insights@1.19.8": - version "1.19.8" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.8.tgz#f60d21edbe2a42e6d4e2215430733e3f51641471" - integrity sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA== +"@algolia/autocomplete-plugin-algolia-insights@1.19.9": + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.9.tgz#f799737d13bf0c4ec8421619c7107fa05c836535" + integrity sha512-6mExC6X7762s2SV3eJy3QOkB8bdMmnUhQ2agvGVDuzwoGyr3PquGSY/0vPQXCfiAiCaXUz1rXn+lwghgSi0l0w== dependencies: - "@algolia/autocomplete-shared" "1.19.8" + "@algolia/autocomplete-shared" "1.19.9" "@algolia/autocomplete-plugin-recent-searches@^1.17.0": - version "1.19.8" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-recent-searches/-/autocomplete-plugin-recent-searches-1.19.8.tgz#74c1d64bea603cc29ac14a4ee8e6d7ccd4d1423d" - integrity sha512-Y8bLNJcdMCjSp4Mp6pfcdfl1kGCwogzlaJFUtREK3kInwDL4Ea7Fx0DO8eg8sHBkcsxq7XGHD23OH5+AmYQsKw== + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-recent-searches/-/autocomplete-plugin-recent-searches-1.19.9.tgz#f17d46a7909effdea7763489e32f06867f498449" + integrity sha512-SSUAULhKXK8IFZQoRlBoKLYso3s+i5R62ALxcec8MX44y2cHSmWFyWVOMOKYiywtOmpYW5XLLLVZUWststszWw== dependencies: - "@algolia/autocomplete-core" "1.19.8" - "@algolia/autocomplete-js" "1.19.8" - "@algolia/autocomplete-preset-algolia" "1.19.8" - "@algolia/autocomplete-shared" "1.19.8" + "@algolia/autocomplete-core" "1.19.9" + "@algolia/autocomplete-js" "1.19.9" + "@algolia/autocomplete-preset-algolia" "1.19.9" + "@algolia/autocomplete-shared" "1.19.9" -"@algolia/autocomplete-preset-algolia@1.19.8": - version "1.19.8" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.19.8.tgz#1bfffba816d497193d89692e17aa31cba875e96a" - integrity sha512-5XhJe5uXXLrt+C1MjIv1/BfGNHZyD1xkAYMVANTjdY+PXwO4o+3YIK2XGU0MxHTGryy70G6+xVO9TB7xA+3hGQ== +"@algolia/autocomplete-preset-algolia@1.19.9": + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.19.9.tgz#6f5138118b8cf55c2c2a543ebcc5bf3b7c381fc2" + integrity sha512-x/vKrHNy2Swp83AJ+PX0hhxhkgUqWVNV6bk440LkqQOwT8CfK4EN3M/gHIt8L9YAwbJvOgviE/Vr3g3AOyDwsA== dependencies: - "@algolia/autocomplete-shared" "1.19.8" + "@algolia/autocomplete-shared" "1.19.9" -"@algolia/autocomplete-shared@1.19.8": - version "1.19.8" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz#5d723d8bdb448efbb1b0e1c7ff94cc18e5b1dc0e" - integrity sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ== +"@algolia/autocomplete-shared@1.19.9": + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.9.tgz#c5b05e23c71027e4e45a301f286593dffdcdfbdf" + integrity sha512-YosP9Uoek6y/Ur1r1qeogk4biMe/hzkyNcgMCciw0//3XpCM7VlYLSHnyt/vOnEOGhCCc0+3v+unEiH6zz+Z1A== "@algolia/autocomplete-theme-classic@^1.17.0": - version "1.19.8" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.19.8.tgz#33706300a2f711ac9386ec8008a0f119ffdccd7b" - integrity sha512-FYmpeOyL5Wy444ZGp1IW57fevpMSBMewN37j+0WULMTJZGobnvTgVEKjYIgtv5Ku4/RNNp54rtEx2/OU6l8GYA== + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.19.9.tgz#27a22f3047b248d7ef4082e562f47e73ee64c815" + integrity sha512-MWCQXWC1qbDDXE1W0fPPGRLNNRLy8zupd6pRCabBuI6gyjR0aJaah5m3S1MucJcmXRqV9/ErkMBjnw7iKGCrvA== "@babel/code-frame@^7.29.7": version "7.29.7" @@ -1570,9 +1570,9 @@ es-toolkit "1.45.1" "@colordx/core@^5.4.3": - version "5.4.3" - resolved "https://registry.yarnpkg.com/@colordx/core/-/core-5.4.3.tgz#35a8d239b324a6cdf9a16de9970a32c8abc24824" - integrity sha512-kIxYSfA5T8HXjav55UaaH/o/cKivF6jCCGIb8eqtcsfI46wsvlSiT8jMDyrl779qLec3c2c2oHBZo4oAhvbjrQ== + version "5.5.0" + resolved "https://registry.yarnpkg.com/@colordx/core/-/core-5.5.0.tgz#d786dfde8781bbe56a0be9f862f9ab5d1ab4629d" + integrity sha512-3PxTH8itZzltK0U9jTwVVnjLXvnDYuq3m+QXsHkENxWiPRh4WaoLcs1SQjqgZ55kS+QyirpH5BVwzP2gMVG6EQ== "@discoveryjs/json-ext@^0.6.1", "@discoveryjs/json-ext@^0.6.3": version "0.6.3" @@ -1621,9 +1621,9 @@ tslib "^2.8.0" "@fortawesome/fontawesome-free@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz#188c1053ce422ad1f934d7df242a973fcb89636d" - integrity sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg== + version "7.3.0" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-7.3.0.tgz#c26db8baad037c5dff9d88980757cb5d90540d8a" + integrity sha512-Yw4Qa43P6e4Xwh0TwEUkHQNRJInWaqIBo73VJmns3j2AIlZPAvUcR4yGIxCPqPRCgyJ5KIVIalF/I1GxhZ/Kgw== "@hotwired/stimulus-webpack-helpers@^1.0.1": version "1.0.1" @@ -1887,9 +1887,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "26.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-26.0.0.tgz#d4aece9e9412e9f2008d59bc2d74f5279316b665" - integrity sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA== + version "26.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.0.1.tgz#4a60e2c7a6d68bd261e265f8983bfe1601263ce3" + integrity sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw== dependencies: undici-types "~8.3.0" @@ -1921,9 +1921,9 @@ "@types/yargs-parser" "*" "@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.3.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.1.tgz#0e8f34854df7966b09304a18e808b23997bb9fc1" - integrity sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.2.tgz#a03ad82cd5676414d068ba86f880c5681194aadf" + integrity sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA== "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" @@ -2251,10 +2251,10 @@ base64-js@^1.1.2, base64-js@^1.3.0: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -baseline-browser-mapping@^2.10.12: - version "2.10.38" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.38.tgz#c84d093c4bf7325c5053c279d90f153c66526042" - integrity sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw== +baseline-browser-mapping@^2.10.38: + version "2.10.40" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.40.tgz#f372c8eb36ff4ad0b5e7ae467014abef124554ba" + integrity sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw== big.js@^5.2.2: version "5.2.2" @@ -2281,13 +2281,6 @@ bootswatch@^5.1.3: resolved "https://registry.yarnpkg.com/bootswatch/-/bootswatch-5.3.8.tgz#534538ce50285e52cb715823f8b4d734f73956e7" integrity sha512-88mnH9tv+x6DV+scBxYFOpM4YSDVhyfEgbhqaEfvkHNctKI9qRcACxIP9nmBZ5mSeLXtsgax1VsRkUs1eWjlAQ== -braces@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - brotli@^1.3.2: version "1.3.3" resolved "https://registry.yarnpkg.com/brotli/-/brotli-1.3.3.tgz#7365d8cc00f12cf765d2b2c898716bcf4b604d48" @@ -2303,14 +2296,14 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@^4.0.0, browserslist@^4.24.0, browserslist@^4.28.1, browserslist@^4.28.2: - version "4.28.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2" - integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg== + version "4.28.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.4.tgz#dd8b8167a32845ff5f8cd6ce13f5abba16cd04c9" + integrity sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw== dependencies: - baseline-browser-mapping "^2.10.12" - caniuse-lite "^1.0.30001782" - electron-to-chromium "^1.5.328" - node-releases "^2.0.36" + baseline-browser-mapping "^2.10.38" + caniuse-lite "^1.0.30001799" + electron-to-chromium "^1.5.376" + node-releases "^2.0.48" update-browserslist-db "^1.2.3" bs-custom-file-input@^1.3.4: @@ -2333,7 +2326,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001782: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001799: version "1.0.30001799" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz#5c909138c27f1a61219d3e092071c1cc7d32dc55" integrity sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw== @@ -2925,10 +2918,10 @@ domutils@^3.0.1: domelementtype "^2.3.0" domhandler "^5.0.3" -electron-to-chromium@^1.5.328: - version "1.5.376" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.376.tgz#16a9d4b72cb16c416aa73a879d92b047b96797ac" - integrity sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA== +electron-to-chromium@^1.5.376: + version "1.5.380" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.380.tgz#6dbe112f22b35ccdf627f894ad7515cdd35f6388" + integrity sha512-W6d5AbuEoRayO447cqrg6lKJIlscgRnnxOZl/08kfV71BQDoEBC7Wwis68z87LjyK6f4kWyTaubuDbhHKrZkbA== emoji-regex@^8.0.0: version "8.0.0" @@ -2940,10 +2933,10 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -enhanced-resolve@^5.0.0, enhanced-resolve@^5.22.0: - version "5.24.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.0.tgz#cf14b9768a774cb6a5087220c0dc6e55df6ec35a" - integrity sha512-SkE2t82KlkkxQRVMVLAGKxLfORGQfrkx5dkj+vlgXRVNEdPc4eZcR+J/Fvj8C+yKSFH5L0q3NFlyufOVQnCcYQ== +enhanced-resolve@^5.22.2: + version "5.24.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.1.tgz#b2439adf5d31d7e4764de1f9ecf942d6cd3fc874" + integrity sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw== dependencies: graceful-fs "^4.2.4" tapable "^2.3.3" @@ -3057,13 +3050,6 @@ fastest-levenshtein@1.0.16, fastest-levenshtein@^1.0.12, fastest-levenshtein@^1. resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -3120,11 +3106,6 @@ github-slugger@^2.0.0: resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-2.0.0.tgz#52cf2f9279a21eb6c59dd385b410f0c0adda8f1a" integrity sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw== -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - good-listener@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" @@ -3375,11 +3356,6 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - is-plain-obj@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" @@ -4049,14 +4025,6 @@ micromark@^4.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromatch@^4.0.0: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - mime-db@^1.54.0: version "1.54.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" @@ -4070,6 +4038,16 @@ mini-css-extract-plugin@^2.6.0: schema-utils "^4.0.0" tapable "^2.2.1" +minimizer-webpack-plugin@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz#289922a4c96c4ed1ddb76b8a00bd8074e89a2f7f" + integrity sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + terser "^5.31.1" + mrmime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc" @@ -4081,9 +4059,9 @@ ms@^2.1.3: integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== nanoid@^3.3.12: - version "3.3.14" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.14.tgz#02d7e019f05dd8eeee2779c6f42206c06542ab33" - integrity sha512-U9kYi5bpVMEI31yC8iw4bJJp0avcHXA0W8/wNfLfnvJYzihQo2ZRPYPvpAAd570HAcCBjCTN7vnr+v4StKl1IQ== + version "3.3.15" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.15.tgz#36c490fad8c6e86c824c940dfdde999b69ed4316" + integrity sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA== neo-async@^2.6.2: version "2.6.2" @@ -4102,10 +4080,10 @@ node-notifier@^9.0.0: uuid "^8.3.0" which "^2.0.2" -node-releases@^2.0.36: - version "2.0.48" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.48.tgz#4da73d040ada751fc9959d993f27de48792e3b7d" - integrity sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA== +node-releases@^2.0.48: + version "2.0.50" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.50.tgz#597197a852071ce42fc2550e58e223242bcba969" + integrity sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg== nth-check@^2.0.1: version "2.1.1" @@ -4203,12 +4181,7 @@ picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601" - integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA== - -picomatch@^4.0.3: +picomatch@^4.0.0, picomatch@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== @@ -4475,18 +4448,18 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.2.14, postcss@^8.4.40: - version "8.5.15" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.15.tgz#d1eaf677a324e9ec02196da2d3fecf4a0b9a735c" - integrity sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A== + version "8.5.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.16.tgz#1230ce0b5df354c24c0ea45f99ce5f6a88279d28" + integrity sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg== dependencies: nanoid "^3.3.12" picocolors "^1.1.1" source-map-js "^1.2.1" preact@^10.13.2: - version "10.29.2" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.29.2.tgz#3e6069c471718b8d124d1cd67565114532e88d70" - integrity sha512-7tNmwg/7mzzAoB/8kSg6Hl37JraAZw3Z3A0JSY7VXlZwo82Xn0G7wKbNNs2qoF4ZEEsQGTwDAroNdqKs1ofJxQ== + version "10.29.3" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.29.3.tgz#36f96b7a8edc2fccea76daa5e7545597dc15ab28" + integrity sha512-D9NL1GAnJZhc3RndVs4gDdxEeU9TcHgywMrhhOsnpdlvFjdbx0gAsLUnH6JEhlJH5giL7Tx5biWPUSEXE/HPzw== pretty-error@^4.0.0: version "4.0.0" @@ -4744,7 +4717,7 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.4, semver@^7.6.3: +semver@^7.3.2, semver@^7.6.3: version "7.8.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.5.tgz#39b646037dd50c14fb451e7e4cac58ed8b863f69" integrity sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA== @@ -4926,7 +4899,7 @@ tapable@^2.0.0, tapable@^2.2.1, tapable@^2.3.0, tapable@^2.3.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160" integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A== -terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.5.0: +terser-webpack-plugin@^5.3.0: version "5.6.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz#47bc41bd8b8fab8383b62ec763b7394829097e7b" integrity sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ== @@ -4961,13 +4934,6 @@ tmp@^0.2.5: resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.7.tgz#26f4db11d1601ce8012dcb8a798ece1c06a99059" integrity sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw== -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - tom-select@^2.1.0: version "2.6.1" resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.6.1.tgz#54be5c4431d5d59c8c4897e6e051963bac11f44a" @@ -4997,14 +4963,12 @@ trough@^2.0.0: integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== ts-loader@^9.2.6: - version "9.6.1" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.6.1.tgz#4a5e87a24c2f9f0e6f1fee3e844e4591f2628e55" - integrity sha512-8FMHnmxtpncUAu0ZjkqpXnOTlwc9eY95esH8WVN94guTPPdkg2ofVdiVM5j8L2lmjiGerXd56zXb/D2JyVQPLg== + version "9.6.2" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.6.2.tgz#a08f4935ddb87edbd58ce33b7b2558c2a77fdd47" + integrity sha512-R4iuczmtgxvtuI556s+hTZ6/7Ee03VCAk/l/M8LY1OAsUgB7YydsCxkgq9D9pKRaD7GJqUi2u8fp9zZP/ufjKA== dependencies: chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" + picomatch "^4.0.0" source-map "^0.7.4" tslib@^2.8.0: @@ -5180,7 +5144,7 @@ vfile@^6.0.0: "@types/unist" "^3.0.0" vfile-message "^4.0.0" -watchpack@^2.5.1: +watchpack@^2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.2.tgz#e12e82d84674266fc1c6dbfe38891b92ff0522ec" integrity sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg== @@ -5266,9 +5230,9 @@ webpack-sources@^3.5.0: integrity sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ== webpack@^5.74.0: - version "5.107.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.107.2.tgz#dea14dcb177b46b29de15f952f7303691ee2b596" - integrity sha512-v7RhXaJbpMlV0D7hC7lb2EbnxkoeUqf9qhKr6lozx3Q48pmFrqqNRmZFUEGmi7pSwm6fCQ2H1IjvCkHqdpVdjQ== + version "5.108.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.108.1.tgz#cd5856f9a88e55f344d64a6623c09bf34446cc9d" + integrity sha512-UUCihHQK3O7483Woa0SulNLDeAiOhHI2PN2PAPU4fVWJqbzhv04EJ8FaWtB9WWh3i8fRt28543U7VfuJTOrpgQ== dependencies: "@types/estree" "^1.0.8" "@types/json-schema" "^7.0.15" @@ -5279,19 +5243,18 @@ webpack@^5.74.0: acorn-import-phases "^1.0.3" browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.22.0" + enhanced-resolve "^5.22.2" es-module-lexer "^2.1.0" eslint-scope "5.1.1" events "^3.2.0" - glob-to-regexp "^0.4.1" graceful-fs "^4.2.11" loader-runner "^4.3.2" mime-db "^1.54.0" + minimizer-webpack-plugin "^5.6.1" neo-async "^2.6.2" schema-utils "^4.3.3" tapable "^2.3.0" - terser-webpack-plugin "^5.5.0" - watchpack "^2.5.1" + watchpack "^2.5.2" webpack-sources "^3.5.0" which@^2.0.1, which@^2.0.2: