mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-01-12 21:29:33 +00:00
Rebase auf Part-DB v2.1.2
This commit is contained in:
parent
7abc37fc9a
commit
360fed1f5e
33 changed files with 1020 additions and 162 deletions
13
.env
13
.env
|
|
@ -35,9 +35,6 @@ DATABASE_EMULATE_NATURAL_SORT=0
|
|||
# This must end with a slash!
|
||||
DEFAULT_URI="https://partdb.changeme.invalid/"
|
||||
|
||||
# Use an %%ipn%% placeholder in the name of a assembly. Placeholder is replaced with the ipn input while saving.
|
||||
CREATE_ASSEMBLY_USE_IPN_PLACEHOLDER_IN_NAME=0
|
||||
|
||||
###################################################################################
|
||||
# Email settings
|
||||
###################################################################################
|
||||
|
|
@ -63,16 +60,6 @@ ERROR_PAGE_ADMIN_EMAIL=''
|
|||
# If this is set to true, solutions to common problems are shown on error pages. Disable this, if you do not want your users to see them...
|
||||
ERROR_PAGE_SHOW_HELP=1
|
||||
|
||||
##################################################################################
|
||||
# Part table settings
|
||||
##################################################################################
|
||||
|
||||
# Configure which columns will be visible by default in the specific table (and in which order).
|
||||
# This is a comma separated list of column names. See documentation for available values.
|
||||
TABLE_PARTS_DEFAULT_COLUMNS=name,description,category,footprint,manufacturer,storage_location,amount
|
||||
TABLE_ASSEMBLIES_DEFAULT_COLUMNS=id,ipn,name,description,referencedAssemblies,edit
|
||||
TABLE_ASSEMBLIES_BOM_DEFAULT_COLUMNS=quantity,id,ipn,name,description
|
||||
|
||||
###################################################################################
|
||||
# SAML Single sign on-settings
|
||||
###################################################################################
|
||||
|
|
|
|||
|
|
@ -59,12 +59,6 @@ parameters:
|
|||
######################################################################################################################
|
||||
partdb.saml.enabled: '%env(bool:SAML_ENABLED)%' # If this is set to true, SAML authentication is enabled
|
||||
|
||||
######################################################################################################################
|
||||
# Table settings
|
||||
######################################################################################################################
|
||||
partdb.table.assemblies.default_columns: '%env(trim:string:TABLE_ASSEMBLIES_DEFAULT_COLUMNS)%' # The default columns in assembly tables and their order
|
||||
partdb.table.assemblies_bom.default_columns: '%env(trim:string:TABLE_ASSEMBLIES_BOM_DEFAULT_COLUMNS)%' # The default columns in assembly bom tables and their order
|
||||
|
||||
######################################################################################################################
|
||||
# Miscellaneous
|
||||
######################################################################################################################
|
||||
|
|
|
|||
|
|
@ -164,10 +164,6 @@ services:
|
|||
arguments:
|
||||
$saml_enabled: '%partdb.saml.enabled%'
|
||||
|
||||
App\Form\AdminPages\AssemblyAdminForm:
|
||||
arguments:
|
||||
$useAssemblyIpnPlaceholder: '%partdb.create_assembly_use_ipn_placeholder_in_name%'
|
||||
|
||||
App\Validator\Constraints\AssemblySystem\AssemblyCycleValidator:
|
||||
tags: [ 'validator.constraint_validator' ]
|
||||
|
||||
|
|
@ -177,12 +173,6 @@ services:
|
|||
|
||||
App\DataTables\Helpers\ColumnSortHelper:
|
||||
shared: false # Service has a state so not share it between different tables
|
||||
App\DataTables\AssemblyDataTable:
|
||||
arguments:
|
||||
$visible_columns: '%partdb.table.assemblies.default_columns%'
|
||||
App\DataTables\AssemblyBomEntriesDataTable:
|
||||
arguments:
|
||||
$visible_columns: '%partdb.table.assemblies_bom.default_columns%'
|
||||
|
||||
####################################################################################################################
|
||||
# Label system
|
||||
|
|
@ -206,8 +196,6 @@ services:
|
|||
####################################################################################################################
|
||||
App\Services\Trees\TreeViewGenerator:
|
||||
arguments:
|
||||
$rootNodeExpandedByDefault: '%partdb.sidebar.root_expanded%'
|
||||
$rootNodeEnabled: '%partdb.sidebar.root_node_enable%'
|
||||
$dataSourceSynonyms: '%partdb.data_sources.synonyms%'
|
||||
App\Services\Trees\ToolsTreeBuilder:
|
||||
arguments:
|
||||
|
|
|
|||
|
|
@ -18,42 +18,42 @@ final class Version20250304081039 extends AbstractMultiPlatformMigration
|
|||
{
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE assemblies (
|
||||
id INT AUTO_INCREMENT NOT NULL,
|
||||
parent_id INT DEFAULT NULL,
|
||||
id_preview_attachment INT DEFAULT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
comment LONGTEXT NOT NULL,
|
||||
not_selectable TINYINT(1) NOT NULL,
|
||||
alternative_names LONGTEXT DEFAULT NULL,
|
||||
order_quantity INT NOT NULL,
|
||||
status VARCHAR(64) DEFAULT NULL,
|
||||
order_only_missing_parts TINYINT(1) NOT NULL,
|
||||
description LONGTEXT NOT NULL,
|
||||
last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
INDEX IDX_5F3832C0727ACA70 (parent_id),
|
||||
INDEX IDX_5F3832C0EA7100A1 (id_preview_attachment),
|
||||
id INT AUTO_INCREMENT NOT NULL,
|
||||
parent_id INT DEFAULT NULL,
|
||||
id_preview_attachment INT DEFAULT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
comment LONGTEXT NOT NULL,
|
||||
not_selectable TINYINT(1) NOT NULL,
|
||||
alternative_names LONGTEXT DEFAULT NULL,
|
||||
order_quantity INT NOT NULL,
|
||||
status VARCHAR(64) DEFAULT NULL,
|
||||
order_only_missing_parts TINYINT(1) NOT NULL,
|
||||
description LONGTEXT NOT NULL,
|
||||
last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
INDEX IDX_5F3832C0727ACA70 (parent_id),
|
||||
INDEX IDX_5F3832C0EA7100A1 (id_preview_attachment),
|
||||
PRIMARY KEY(id)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci`
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE assembly_bom_entries (
|
||||
id INT AUTO_INCREMENT NOT NULL,
|
||||
id_assembly INT DEFAULT NULL,
|
||||
id_part INT DEFAULT NULL,
|
||||
id_project INT DEFAULT NULL,
|
||||
quantity DOUBLE PRECISION NOT NULL,
|
||||
mountnames LONGTEXT NOT NULL,
|
||||
name VARCHAR(255) DEFAULT NULL,
|
||||
comment LONGTEXT NOT NULL,
|
||||
price NUMERIC(11, 5) DEFAULT NULL,
|
||||
price_currency_id INT DEFAULT NULL,
|
||||
last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
INDEX IDX_8C74887E2F180363 (id_assembly),
|
||||
INDEX IDX_8C74887EC22F6CC4 (id_part),
|
||||
INDEX IDX_8C74887EF12E799E (id_project),
|
||||
INDEX IDX_8C74887E3FFDCD60 (price_currency_id),
|
||||
id INT AUTO_INCREMENT NOT NULL,
|
||||
id_assembly INT DEFAULT NULL,
|
||||
id_part INT DEFAULT NULL,
|
||||
id_project INT DEFAULT NULL,
|
||||
quantity DOUBLE PRECISION NOT NULL,
|
||||
mountnames LONGTEXT NOT NULL,
|
||||
name VARCHAR(255) DEFAULT NULL,
|
||||
comment LONGTEXT NOT NULL,
|
||||
price NUMERIC(11, 5) DEFAULT NULL,
|
||||
price_currency_id INT DEFAULT NULL,
|
||||
last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
INDEX IDX_8C74887E2F180363 (id_assembly),
|
||||
INDEX IDX_8C74887EC22F6CC4 (id_part),
|
||||
INDEX IDX_8C74887EF12E799E (id_project),
|
||||
INDEX IDX_8C74887E3FFDCD60 (price_currency_id),
|
||||
PRIMARY KEY(id)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci`
|
||||
SQL);
|
||||
|
|
@ -109,7 +109,7 @@ final class Version20250304081039 extends AbstractMultiPlatformMigration
|
|||
{
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE assemblies (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
parent_id INTEGER DEFAULT NULL,
|
||||
id_preview_attachment INTEGER DEFAULT NULL,
|
||||
order_quantity INTEGER NOT NULL,
|
||||
|
|
@ -120,7 +120,7 @@ final class Version20250304081039 extends AbstractMultiPlatformMigration
|
|||
last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
status VARCHAR(64) DEFAULT NULL,
|
||||
ipn VARCHAR(100) DEFAULT NULL,
|
||||
ipn VARCHAR(100) DEFAULT NULL,
|
||||
description CLOB NOT NULL,
|
||||
alternative_names CLOB DEFAULT NULL,
|
||||
CONSTRAINT FK_5F3832C0727ACA70 FOREIGN KEY (parent_id) REFERENCES assemblies (id) NOT DEFERRABLE INITIALLY IMMEDIATE,
|
||||
|
|
@ -145,7 +145,6 @@ final class Version20250304081039 extends AbstractMultiPlatformMigration
|
|||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
id_assembly INTEGER DEFAULT NULL,
|
||||
id_part INTEGER DEFAULT NULL,
|
||||
id_project INTEGER DEFAULT NULL,
|
||||
id_referenced_assembly INTEGER DEFAULT NULL,
|
||||
price_currency_id INTEGER DEFAULT NULL,
|
||||
quantity DOUBLE PRECISION NOT NULL,
|
||||
|
|
@ -157,9 +156,8 @@ final class Version20250304081039 extends AbstractMultiPlatformMigration
|
|||
datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
CONSTRAINT FK_8C74887E4AD2039E FOREIGN KEY (id_assembly) REFERENCES assemblies (id) NOT DEFERRABLE INITIALLY IMMEDIATE,
|
||||
CONSTRAINT FK_8C74887EC22F6CC4 FOREIGN KEY (id_part) REFERENCES "parts" (id) NOT DEFERRABLE INITIALLY IMMEDIATE,
|
||||
CONSTRAINT FK_8C74887EF12E799E FOREIGN KEY (id_project) REFERENCES projects (id) NOT DEFERRABLE INITIALLY IMMEDIATE,
|
||||
CONSTRAINT FK_8C74887E22522999 FOREIGN KEY (id_referenced_assembly) REFERENCES assemblies (id) ON UPDATE NO ACTION ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE,
|
||||
CONSTRAINT FK_8C74887E3FFDCD60 FOREIGN KEY (price_currency_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
CONSTRAINT FK_8C74887E22522999 FOREIGN KEY (id_referenced_assembly) REFERENCES assemblies (id) ON UPDATE NO ACTION ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE,
|
||||
CONSTRAINT FK_8C74887E3FFDCD60 FOREIGN KEY (price_currency_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
)
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
|
|
@ -168,9 +166,6 @@ final class Version20250304081039 extends AbstractMultiPlatformMigration
|
|||
$this->addSql(<<<'SQL'
|
||||
CREATE INDEX IDX_8C74887EC22F6CC4 ON assembly_bom_entries (id_part)
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE INDEX IDX_8C74887EF12E799E ON assembly_bom_entries (id_project)
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE INDEX IDX_8C74887E22522999 ON assembly_bom_entries (id_referenced_assembly)
|
||||
SQL);
|
||||
|
|
@ -193,19 +188,19 @@ final class Version20250304081039 extends AbstractMultiPlatformMigration
|
|||
{
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE assemblies (
|
||||
id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
last_modified TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
datetime_added TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
not_selectable BOOLEAN NOT NULL,
|
||||
alternative_names TEXT DEFAULT NULL,
|
||||
order_quantity INT NOT NULL,
|
||||
status VARCHAR(64) DEFAULT NULL,
|
||||
order_only_missing_parts BOOLEAN NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
parent_id INT DEFAULT NULL,
|
||||
id_preview_attachment INT DEFAULT NULL,
|
||||
id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
last_modified TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
datetime_added TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
not_selectable BOOLEAN NOT NULL,
|
||||
alternative_names TEXT DEFAULT NULL,
|
||||
order_quantity INT NOT NULL,
|
||||
status VARCHAR(64) DEFAULT NULL,
|
||||
order_only_missing_parts BOOLEAN NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
parent_id INT DEFAULT NULL,
|
||||
id_preview_attachment INT DEFAULT NULL,
|
||||
PRIMARY KEY(id)
|
||||
)
|
||||
SQL);
|
||||
|
|
@ -217,18 +212,17 @@ final class Version20250304081039 extends AbstractMultiPlatformMigration
|
|||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE assembly_bom_entries (
|
||||
id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
|
||||
id_assembly INT DEFAULT NULL,
|
||||
id_part INT DEFAULT NULL,
|
||||
id_project INT DEFAULT NULL,
|
||||
quantity DOUBLE PRECISION NOT NULL,
|
||||
mountnames TEXT NOT NULL,
|
||||
name VARCHAR(255) DEFAULT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
price NUMERIC(11, 5) DEFAULT NULL,
|
||||
id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
|
||||
id_assembly INT DEFAULT NULL,
|
||||
id_part INT DEFAULT NULL,
|
||||
quantity DOUBLE PRECISION NOT NULL,
|
||||
mountnames TEXT NOT NULL,
|
||||
name VARCHAR(255) DEFAULT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
price NUMERIC(11, 5) DEFAULT NULL,
|
||||
price_currency_id INT DEFAULT NULL,
|
||||
last_modified TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
datetime_added TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
last_modified TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
datetime_added TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
PRIMARY KEY(id)
|
||||
)
|
||||
SQL);
|
||||
|
|
@ -238,9 +232,6 @@ final class Version20250304081039 extends AbstractMultiPlatformMigration
|
|||
$this->addSql(<<<'SQL'
|
||||
CREATE INDEX IDX_8C74887EC22F6CC4 ON assembly_bom_entries (id_part)
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE INDEX IDX_8C74887EF12E799E ON assembly_bom_entries (id_project)
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE INDEX IDX_8C74887E3FFDCD60 ON assembly_bom_entries (price_currency_id)
|
||||
SQL);
|
||||
|
|
@ -256,9 +247,6 @@ final class Version20250304081039 extends AbstractMultiPlatformMigration
|
|||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE assembly_bom_entries ADD CONSTRAINT FK_8C74887EC22F6CC4 FOREIGN KEY (id_part) REFERENCES "parts" (id) NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE assembly_bom_entries ADD CONSTRAINT FK_8C74887EF12E799E FOREIGN KEY (id_project) REFERENCES "projects" (id) NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE assembly_bom_entries ADD CONSTRAINT FK_8C74887E3FFDCD60 FOREIGN KEY (price_currency_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
SQL);
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ final class Version20250627130848 extends AbstractMultiPlatformMigration
|
|||
public function mySQLUp(Schema $schema): void
|
||||
{
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE assembly_bom_entries ADD id_referenced_assembly INT DEFAULT NULL AFTER id_project
|
||||
ALTER TABLE assembly_bom_entries ADD id_referenced_assembly INT DEFAULT NULL AFTER id_part
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE assembly_bom_entries ADD CONSTRAINT FK_8C74887E22522999 FOREIGN KEY (id_referenced_assembly) REFERENCES assemblies (id) ON DELETE SET NULL
|
||||
|
|
|
|||
51
migrations/Version20250910113423.php
Normal file
51
migrations/Version20250910113423.php
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DoctrineMigrations;
|
||||
|
||||
use App\Migration\AbstractMultiPlatformMigration;
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
final class Version20250910113423 extends AbstractMultiPlatformMigration
|
||||
{
|
||||
public function getDescription(): string
|
||||
{
|
||||
return 'Remove project_id from assembly_bom_entries because it is not needed.';
|
||||
}
|
||||
|
||||
public function mySQLUp(Schema $schema): void
|
||||
{
|
||||
$this->addSql('ALTER TABLE assembly_bom_entries DROP FOREIGN KEY `FK_8C74887EF12E799E`');
|
||||
$this->addSql('DROP INDEX IDX_8C74887EF12E799E ON assembly_bom_entries');
|
||||
$this->addSql('ALTER TABLE assembly_bom_entries DROP id_project');
|
||||
}
|
||||
|
||||
public function mySQLDown(Schema $schema): void
|
||||
{
|
||||
$this->addSql('ALTER TABLE assembly_bom_entries ADD id_project INT DEFAULT NULL');
|
||||
$this->addSql('ALTER TABLE assembly_bom_entries ADD CONSTRAINT `FK_8C74887EF12E799E` FOREIGN KEY (id_project) REFERENCES projects (id)');
|
||||
$this->addSql('CREATE INDEX IDX_8C74887EF12E799E ON assembly_bom_entries (id_project)');
|
||||
}
|
||||
|
||||
public function sqLiteUp(Schema $schema): void
|
||||
{
|
||||
//nothing to do. Already removed from AssemblyBOMEntry and Version20250304081039
|
||||
}
|
||||
|
||||
public function sqLiteDown(Schema $schema): void
|
||||
{
|
||||
//nothing to do.
|
||||
}
|
||||
|
||||
public function postgreSQLUp(Schema $schema): void
|
||||
{
|
||||
//nothing to do. Already removed from AssemblyBOMEntry and Version20250304081039
|
||||
}
|
||||
|
||||
public function postgreSQLDown(Schema $schema): void
|
||||
{
|
||||
//nothing to do.
|
||||
}
|
||||
}
|
||||
|
|
@ -216,6 +216,7 @@ class AssemblyController extends AbstractController
|
|||
'assembly.bom_import.type.json' => 'json',
|
||||
'assembly.bom_import.type.csv' => 'csv',
|
||||
'assembly.bom_import.type.kicad_pcbnew' => 'kicad_pcbnew',
|
||||
'assembly.bom_import.type.kicad_schematic' => 'kicad_schematic',
|
||||
]
|
||||
]);
|
||||
$builder->add('clear_existing_bom', CheckboxType::class, [
|
||||
|
|
|
|||
|
|
@ -193,10 +193,6 @@ class ProjectController extends AbstractController
|
|||
}
|
||||
|
||||
// For PCB imports, proceed directly
|
||||
$entries = $BOMImporter->importFileIntoProject($form->get('file')->getData(), $project, [
|
||||
'type' => $import_type,
|
||||
]);
|
||||
|
||||
$importerResult = $BOMImporter->importFileIntoProject($form->get('file')->getData(), $project, [
|
||||
'type' => $import_type,
|
||||
]);
|
||||
|
|
@ -425,7 +421,7 @@ class ProjectController extends AbstractController
|
|||
}
|
||||
|
||||
// Import with field mapping and priorities (validation already passed)
|
||||
$entries = $BOMImporter->stringToBOMEntries($file_content, [
|
||||
$entries = $BOMImporter->stringToBOMEntries($project, $file_content, [
|
||||
'type' => 'kicad_schematic',
|
||||
'field_mapping' => $field_mapping,
|
||||
'field_priorities' => $field_priorities,
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ use App\Entity\Attachments\Attachment;
|
|||
use App\Entity\Parts\Part;
|
||||
use App\Entity\AssemblySystem\AssemblyBOMEntry;
|
||||
use App\Entity\ProjectSystem\Project;
|
||||
use App\Services\EntityURLGenerator;
|
||||
use App\Services\Formatters\AmountFormatter;
|
||||
use App\Settings\BehaviorSettings\TableSettings;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Omines\DataTablesBundle\Adapter\Doctrine\ORM\SearchCriteriaProvider;
|
||||
use Omines\DataTablesBundle\Adapter\Doctrine\ORMAdapter;
|
||||
|
|
@ -47,15 +47,14 @@ use Symfony\Contracts\Translation\TranslatorInterface;
|
|||
class AssemblyBomEntriesDataTable implements DataTableTypeInterface
|
||||
{
|
||||
public function __construct(
|
||||
protected TranslatorInterface $translator,
|
||||
protected PartDataTableHelper $partDataTableHelper,
|
||||
protected ProjectDataTableHelper $projectDataTableHelper,
|
||||
protected AssemblyDataTableHelper $assemblyDataTableHelper,
|
||||
protected EntityURLGenerator $entityURLGenerator,
|
||||
protected AmountFormatter $amountFormatter,
|
||||
private string $visible_columns,
|
||||
private ColumnSortHelper $csh
|
||||
){
|
||||
private readonly TranslatorInterface $translator,
|
||||
private readonly PartDataTableHelper $partDataTableHelper,
|
||||
private readonly ProjectDataTableHelper $projectDataTableHelper,
|
||||
private readonly AssemblyDataTableHelper $assemblyDataTableHelper,
|
||||
private readonly AmountFormatter $amountFormatter,
|
||||
private readonly ColumnSortHelper $csh,
|
||||
private readonly TableSettings $tableSettings,
|
||||
) {
|
||||
}
|
||||
|
||||
public function configure(DataTable $dataTable, array $options): void
|
||||
|
|
@ -200,11 +199,11 @@ class AssemblyBomEntriesDataTable implements DataTableTypeInterface
|
|||
])
|
||||
->add('lastModified', LocaleDateTimeColumn::class, [
|
||||
'label' => $this->translator->trans('part.table.lastModified'),
|
||||
])
|
||||
;
|
||||
]);
|
||||
|
||||
//Apply the user configured order and visibility and add the columns to the table
|
||||
$this->csh->applyVisibilityAndConfigureColumns($dataTable, $this->visible_columns,"TABLE_ASSEMBLIES_BOM_DEFAULT_COLUMNS");
|
||||
$this->csh->applyVisibilityAndConfigureColumns($dataTable, $this->tableSettings->assembliesBomDefaultColumns,
|
||||
"TABLE_ASSEMBLIES_BOM_DEFAULT_COLUMNS");
|
||||
|
||||
$dataTable->addOrderBy('name');
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ use App\DataTables\Helpers\ColumnSortHelper;
|
|||
use App\Doctrine\Helpers\FieldHelper;
|
||||
use App\Entity\AssemblySystem\Assembly;
|
||||
use App\Services\EntityURLGenerator;
|
||||
use App\Settings\BehaviorSettings\TableSettings;
|
||||
use Doctrine\ORM\AbstractQuery;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Omines\DataTablesBundle\Adapter\Doctrine\ORM\SearchCriteriaProvider;
|
||||
|
|
@ -53,8 +54,8 @@ final class AssemblyDataTable implements DataTableTypeInterface
|
|||
private readonly TranslatorInterface $translator,
|
||||
private readonly AssemblyDataTableHelper $assemblyDataTableHelper,
|
||||
private readonly Security $security,
|
||||
private readonly string $visible_columns,
|
||||
private readonly ColumnSortHelper $csh,
|
||||
private readonly TableSettings $tableSettings,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -139,7 +140,8 @@ final class AssemblyDataTable implements DataTableTypeInterface
|
|||
]);
|
||||
|
||||
//Apply the user configured order and visibility and add the columns to the table
|
||||
$this->csh->applyVisibilityAndConfigureColumns($dataTable, $this->visible_columns, "TABLE_ASSEMBLIES_DEFAULT_COLUMNS");
|
||||
$this->csh->applyVisibilityAndConfigureColumns($dataTable, $this->tableSettings->assembliesDefaultColumns,
|
||||
"TABLE_ASSEMBLIES_DEFAULT_COLUMNS");
|
||||
|
||||
$dataTable->addOrderBy('name')
|
||||
->createAdapter(TwoStepORMAdapter::class, [
|
||||
|
|
|
|||
|
|
@ -149,18 +149,6 @@ class AssemblyBOMEntry extends AbstractDBElement implements UniqueValidatableInt
|
|||
#[Groups(['bom_entry:read', 'bom_entry:write'])]
|
||||
protected ?Assembly $referencedAssembly = null;
|
||||
|
||||
/**
|
||||
* @var Project|null The associated project
|
||||
*/
|
||||
#[Assert\Expression(
|
||||
'(this.getPart() === null or this.getProject() === null) and (this.getName() === null or (this.getName() != null and this.getName() != ""))',
|
||||
message: 'validator.project.bom_entry.only_part_or_assembly_allowed'
|
||||
)]
|
||||
#[ORM\ManyToOne(targetEntity: Project::class)]
|
||||
#[ORM\JoinColumn(name: 'id_project', nullable: true)]
|
||||
#[Groups(['bom_entry:read', 'bom_entry:write'])]
|
||||
protected ?Project $project = null;
|
||||
|
||||
/**
|
||||
* @var BigDecimal|null The price of this non-part BOM entry
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ use App\Entity\Base\AbstractNamedDBElement;
|
|||
use App\Form\AssemblySystem\AssemblyBOMEntryCollectionType;
|
||||
use App\Form\Type\RichTextEditorType;
|
||||
use App\Services\LogSystem\EventCommentNeededHelper;
|
||||
use App\Settings\MiscSettings\AssemblySettings;
|
||||
use Symfony\Bundle\SecurityBundle\Security;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
|
|
@ -36,9 +37,9 @@ class AssemblyAdminForm extends BaseEntityAdminForm
|
|||
public function __construct(
|
||||
protected Security $security,
|
||||
protected EventCommentNeededHelper $eventCommentNeededHelper,
|
||||
protected bool $useAssemblyIpnPlaceholder = false
|
||||
protected AssemblySettings $assemblySettings,
|
||||
) {
|
||||
parent::__construct($security, $eventCommentNeededHelper, $useAssemblyIpnPlaceholder);
|
||||
parent::__construct($security, $eventCommentNeededHelper, $assemblySettings);
|
||||
}
|
||||
|
||||
protected function additionalFormElements(FormBuilderInterface $builder, array $options, AbstractNamedDBElement $entity): void
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ use App\Entity\PriceInformations\Currency;
|
|||
use App\Entity\ProjectSystem\Project;
|
||||
use App\Entity\UserSystem\Group;
|
||||
use App\Services\LogSystem\EventCommentType;
|
||||
use App\Settings\MiscSettings\AssemblySettings;
|
||||
use Symfony\Bundle\SecurityBundle\Security;
|
||||
use App\Entity\Base\AbstractNamedDBElement;
|
||||
use App\Entity\Base\AbstractStructuralDBElement;
|
||||
|
|
@ -51,7 +52,7 @@ class BaseEntityAdminForm extends AbstractType
|
|||
public function __construct(
|
||||
protected Security $security,
|
||||
protected EventCommentNeededHelper $eventCommentNeededHelper,
|
||||
protected bool $useAssemblyIpnPlaceholder = false
|
||||
protected AssemblySettings $assemblySettings,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -73,7 +74,7 @@ class BaseEntityAdminForm extends AbstractType
|
|||
->add('name', TextType::class, [
|
||||
'empty_data' => '',
|
||||
'label' => 'name.label',
|
||||
'data' => $is_new && $entity instanceof Assembly && $this->useAssemblyIpnPlaceholder ? '%%ipn%%' : $entity->getName(),
|
||||
'data' => $is_new && $entity instanceof Assembly && $this->assemblySettings->useIpnPlaceholderInName ? '%%ipn%%' : $entity->getName(),
|
||||
'attr' => [
|
||||
'placeholder' => 'part.name.placeholder',
|
||||
],
|
||||
|
|
|
|||
|
|
@ -63,19 +63,29 @@ class BOMImporter
|
|||
5 => 'Supplier and ref',
|
||||
];
|
||||
|
||||
private readonly PartRepository $partRepository;
|
||||
|
||||
private readonly ManufacturerRepository $manufacturerRepository;
|
||||
|
||||
private readonly CategoryRepository $categoryRepository;
|
||||
|
||||
private readonly DBElementRepository $projectBomEntryRepository;
|
||||
|
||||
private readonly DBElementRepository $assemblyBomEntryRepository;
|
||||
|
||||
private string $jsonRoot = '';
|
||||
|
||||
public function __construct(
|
||||
private readonly EntityManagerInterface $entityManager,
|
||||
private readonly LoggerInterface $logger,
|
||||
private readonly BOMValidationService $validationService,
|
||||
private readonly PartRepository $partRepository,
|
||||
private readonly ManufacturerRepository $manufacturerRepository,
|
||||
private readonly CategoryRepository $categoryRepository,
|
||||
private readonly DBElementRepository $projectBOMEntryRepository,
|
||||
private readonly DBElementRepository $assemblyBOMEntryRepositor,
|
||||
private readonly TranslatorInterface $translator
|
||||
) {
|
||||
$this->partRepository = $this->entityManager->getRepository(Part::class);
|
||||
$this->manufacturerRepository = $this->entityManager->getRepository(Manufacturer::class);
|
||||
$this->categoryRepository = $this->entityManager->getRepository(Category::class);
|
||||
$this->projectBomEntryRepository = $this->entityManager->getRepository(ProjectBOMEntry::class);
|
||||
$this->assemblyBomEntryRepository = $this->entityManager->getRepository(AssemblyBOMEntry::class);
|
||||
}
|
||||
|
||||
protected function configureOptions(OptionsResolver $resolver): OptionsResolver
|
||||
|
|
@ -244,7 +254,7 @@ class BOMImporter
|
|||
$options = $resolver->resolve($options);
|
||||
|
||||
return match ($options['type']) {
|
||||
self::IMPORT_TYPE_KICAD_PCB => $this->parseKiCADPCB($data, $objectType)->getBomEntries(),
|
||||
self::IMPORT_TYPE_KICAD_PCB => $this->parseKiCADPCB($data, $importObject)->getBomEntries(),
|
||||
self::IMPORT_TYPE_KICAD_SCHEMATIC => $this->parseKiCADSchematic($data, $options),
|
||||
default => throw new InvalidArgumentException($this->translator->trans('validator.bom_importer.invalid_import_type', [], 'validators')),
|
||||
};
|
||||
|
|
@ -272,7 +282,7 @@ class BOMImporter
|
|||
));
|
||||
|
||||
return match ($options['type']) {
|
||||
self::IMPORT_TYPE_KICAD_PCB => $this->parseKiCADPCB($importObject, $data, $options),
|
||||
self::IMPORT_TYPE_KICAD_PCB => $this->parseKiCADPCB($data, $importObject),
|
||||
self::IMPORT_TYPE_JSON => $this->parseJson($importObject, $data),
|
||||
self::IMPORT_TYPE_CSV => $this->parseCsv($importObject, $data),
|
||||
default => $defaultImporterResult,
|
||||
|
|
@ -286,14 +296,13 @@ class BOMImporter
|
|||
* validates the required fields, and creates BOM entries for each record in the data.
|
||||
* The BOM entries are added to the provided Project or Assembly, depending on the context.
|
||||
*
|
||||
* @param string $data The semicolon- or comma-delimited CSV data to be parsed.
|
||||
* @param Project|Assembly $importObject The object determining the context of the BOM entry (either a Project or Assembly).
|
||||
* @param string $data The semicolon- or comma-delimited CSV data to be parsed.
|
||||
*
|
||||
* @return ImporterResult The result of the import process, containing the created BOM entries.
|
||||
*
|
||||
* @throws UnexpectedValueException If required fields are missing in the provided data.
|
||||
*/
|
||||
private function parseKiCADPCB(Project|Assembly $importObject, string $data): ImporterResult
|
||||
private function parseKiCADPCB(string $data, Project|Assembly $importObject): ImporterResult
|
||||
{
|
||||
$result = new ImporterResult();
|
||||
|
||||
|
|
@ -818,11 +827,11 @@ class BOMImporter
|
|||
}
|
||||
|
||||
if ($importObject instanceof Assembly) {
|
||||
$bomEntry = $this->assemblyBOMEntryRepository->findOneBy(['assembly' => $importObject, 'part' => $part]);
|
||||
$bomEntry = $this->assemblyBomEntryRepository->findOneBy(['assembly' => $importObject, 'part' => $part]);
|
||||
|
||||
if ($bomEntry === null) {
|
||||
if (isset($entry['name']) && $entry['name'] !== '') {
|
||||
$bomEntry = $this->assemblyBOMEntryRepository->findOneBy(['assembly' => $importObject, 'name' => $entry['name']]);
|
||||
$bomEntry = $this->assemblyBomEntryRepository->findOneBy(['assembly' => $importObject, 'name' => $entry['name']]);
|
||||
}
|
||||
|
||||
if ($bomEntry === null) {
|
||||
|
|
@ -830,11 +839,11 @@ class BOMImporter
|
|||
}
|
||||
}
|
||||
} else {
|
||||
$bomEntry = $this->projectBOMEntryRepository->findOneBy(['project' => $importObject, 'part' => $part]);
|
||||
$bomEntry = $this->projectBomEntryRepository->findOneBy(['project' => $importObject, 'part' => $part]);
|
||||
|
||||
if ($bomEntry === null) {
|
||||
if (isset($entry['name']) && $entry['name'] !== '') {
|
||||
$bomEntry = $this->projectBOMEntryRepository->findOneBy(['project' => $importObject, 'name' => $entry['name']]);
|
||||
$bomEntry = $this->projectBomEntryRepository->findOneBy(['project' => $importObject, 'name' => $entry['name']]);
|
||||
}
|
||||
|
||||
if ($bomEntry === null) {
|
||||
|
|
|
|||
46
src/Settings/BehaviorSettings/AssemblyBomTableColumns.php
Normal file
46
src/Settings/BehaviorSettings/AssemblyBomTableColumns.php
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
/*
|
||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||
*
|
||||
* Copyright (C) 2019 - 2024 Jan Böhmer (https://github.com/jbtronics)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace App\Settings\BehaviorSettings;
|
||||
|
||||
use Symfony\Contracts\Translation\TranslatableInterface;
|
||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
|
||||
enum AssemblyBomTableColumns : string implements TranslatableInterface
|
||||
{
|
||||
|
||||
case NAME = "name";
|
||||
case ID = "id";
|
||||
case QUANTITY = "quantity";
|
||||
case IPN = "ipn";
|
||||
case DESCRIPTION = "description";
|
||||
|
||||
public function trans(TranslatorInterface $translator, ?string $locale = null): string
|
||||
{
|
||||
$key = match($this) {
|
||||
default => 'assembly.bom.table.' . $this->value,
|
||||
};
|
||||
|
||||
return $translator->trans($key, locale: $locale);
|
||||
}
|
||||
}
|
||||
49
src/Settings/BehaviorSettings/AssemblyTableColumns.php
Normal file
49
src/Settings/BehaviorSettings/AssemblyTableColumns.php
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
/*
|
||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||
*
|
||||
* Copyright (C) 2019 - 2024 Jan Böhmer (https://github.com/jbtronics)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace App\Settings\BehaviorSettings;
|
||||
|
||||
use Symfony\Contracts\Translation\TranslatableInterface;
|
||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
|
||||
enum AssemblyTableColumns : string implements TranslatableInterface
|
||||
{
|
||||
|
||||
case NAME = "name";
|
||||
case ID = "id";
|
||||
case IPN = "ipn";
|
||||
case DESCRIPTION = "description";
|
||||
case REFERENCED_ASSEMBLIES = "referencedAssemblies";
|
||||
case ADDED_DATE = "addedDate";
|
||||
case LAST_MODIFIED = "lastModified";
|
||||
case EDIT = "edit";
|
||||
|
||||
public function trans(TranslatorInterface $translator, ?string $locale = null): string
|
||||
{
|
||||
$key = match($this) {
|
||||
default => 'assembly.table.' . $this->value,
|
||||
};
|
||||
|
||||
return $translator->trans($key, locale: $locale);
|
||||
}
|
||||
}
|
||||
|
|
@ -53,7 +53,6 @@ class TableSettings
|
|||
)]
|
||||
public int $fullDefaultPageSize = 50;
|
||||
|
||||
|
||||
/** @var PartTableColumns[] */
|
||||
#[SettingsParameter(ArrayType::class,
|
||||
label: new TM("settings.behavior.table.parts_default_columns"),
|
||||
|
|
@ -70,6 +69,37 @@ class TableSettings
|
|||
PartTableColumns::CATEGORY, PartTableColumns::FOOTPRINT, PartTableColumns::MANUFACTURER,
|
||||
PartTableColumns::LOCATION, PartTableColumns::AMOUNT];
|
||||
|
||||
/** @var AssemblyTableColumns[] */
|
||||
#[SettingsParameter(ArrayType::class,
|
||||
label: new TM("settings.behavior.table.assemblies_default_columns"),
|
||||
description: new TM("settings.behavior.table.assemblies_default_columns.help"),
|
||||
options: ['type' => EnumType::class, 'options' => ['class' => AssemblyTableColumns::class]],
|
||||
formType: \Symfony\Component\Form\Extension\Core\Type\EnumType::class,
|
||||
formOptions: ['class' => AssemblyTableColumns::class, 'multiple' => true, 'ordered' => true],
|
||||
envVar: "TABLE_ASSEMBLIES_DEFAULT_COLUMNS", envVarMode: EnvVarMode::OVERWRITE, envVarMapper: [self::class, 'mapAssembliesDefaultColumnsEnv']
|
||||
)]
|
||||
#[Assert\NotBlank()]
|
||||
#[Assert\Unique()]
|
||||
#[Assert\All([new Assert\Type(AssemblyTableColumns::class)])]
|
||||
public array $assembliesDefaultColumns = [AssemblyTableColumns::ID, AssemblyTableColumns::IPN, AssemblyTableColumns::NAME,
|
||||
AssemblyTableColumns::DESCRIPTION, AssemblyTableColumns::REFERENCED_ASSEMBLIES, AssemblyTableColumns::EDIT];
|
||||
|
||||
/** @var AssemblyBomTableColumns[] */
|
||||
#[SettingsParameter(ArrayType::class,
|
||||
label: new TM("settings.behavior.table.assemblies_bom_default_columns"),
|
||||
description: new TM("settings.behavior.table.assemblies_bom_default_columns.help"),
|
||||
options: ['type' => EnumType::class, 'options' => ['class' => AssemblyBomTableColumns::class]],
|
||||
formType: \Symfony\Component\Form\Extension\Core\Type\EnumType::class,
|
||||
formOptions: ['class' => AssemblyBomTableColumns::class, 'multiple' => true, 'ordered' => true],
|
||||
envVar: "TABLE_ASSEMBLIES_BOM_DEFAULT_COLUMNS", envVarMode: EnvVarMode::OVERWRITE, envVarMapper: [self::class, 'mapAssemblyBomsDefaultColumnsEnv']
|
||||
)]
|
||||
#[Assert\NotBlank()]
|
||||
#[Assert\Unique()]
|
||||
#[Assert\All([new Assert\Type(AssemblyBomTableColumns::class)])]
|
||||
|
||||
public array $assembliesBomDefaultColumns = [AssemblyBomTableColumns::QUANTITY, AssemblyTableColumns::ID, AssemblyTableColumns::IPN,
|
||||
AssemblyTableColumns::NAME, AssemblyTableColumns::DESCRIPTION];
|
||||
|
||||
#[SettingsParameter(label: new TM("settings.behavior.table.preview_image_min_width"),
|
||||
formOptions: ['attr' => ['min' => 1, 'max' => 100]],
|
||||
envVar: "int:TABLE_IMAGE_PREVIEW_MIN_SIZE", envVarMode: EnvVarMode::OVERWRITE
|
||||
|
|
@ -101,4 +131,36 @@ class TableSettings
|
|||
return $ret;
|
||||
}
|
||||
|
||||
public static function mapAssembliesDefaultColumnsEnv(string $columns): array
|
||||
{
|
||||
$exploded = explode(',', $columns);
|
||||
$ret = [];
|
||||
foreach ($exploded as $column) {
|
||||
$enum = AssemblyTableColumns::tryFrom($column);
|
||||
if (!$enum) {
|
||||
throw new \InvalidArgumentException("Invalid column '$column' in TABLE_ASSEMBLIES_DEFAULT_COLUMNS");
|
||||
}
|
||||
|
||||
$ret[] = $enum;
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
public static function mapAssemblyBomsDefaultColumnsEnv(string $columns): array
|
||||
{
|
||||
$exploded = explode(',', $columns);
|
||||
$ret = [];
|
||||
foreach ($exploded as $column) {
|
||||
$enum = AssemblyBomTableColumns::tryFrom($column);
|
||||
if (!$enum) {
|
||||
throw new \InvalidArgumentException("Invalid column '$column' in TABLE_ASSEMBLIES_BOM_DEFAULT_COLUMNS");
|
||||
}
|
||||
|
||||
$ret[] = $enum;
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
45
src/Settings/MiscSettings/AssemblySettings.php
Normal file
45
src/Settings/MiscSettings/AssemblySettings.php
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||
*
|
||||
* Copyright (C) 2019 - 2024 Jan Böhmer (https://github.com/jbtronics)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace App\Settings\MiscSettings;
|
||||
|
||||
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\Translation\TranslatableMessage as TM;
|
||||
|
||||
#[Settings(label: new TM("settings.misc.assembly"))]
|
||||
#[SettingsIcon("fa-list")]
|
||||
class AssemblySettings
|
||||
{
|
||||
use SettingsTrait;
|
||||
|
||||
#[SettingsParameter(
|
||||
label: new TM("settings.misc.assembly.useIpnPlaceholderInName"),
|
||||
envVar: "bool:CREATE_ASSEMBLY_USE_IPN_PLACEHOLDER_IN_NAME", envVarMode: EnvVarMode::OVERWRITE,
|
||||
)]
|
||||
public bool $useIpnPlaceholderInName = true;
|
||||
}
|
||||
|
|
@ -34,4 +34,7 @@ class MiscSettings
|
|||
|
||||
#[EmbeddedSettings]
|
||||
public ?ExchangeRateSettings $exchangeRate = null;
|
||||
}
|
||||
|
||||
#[EmbeddedSettings]
|
||||
public ?AssemblySettings $assembly = null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13138,6 +13138,30 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz
|
|||
<target>Sloupce, které se mají ve výchozím nastavení zobrazovat v částečných tabulkách. Pořadí položek lze změnit pomocí funkce drag & drop.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="u7bki9T" name="settings.behavior.table.assemblies_default_columns">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_default_columns</source>
|
||||
<target>Výchozí sloupce pro tabulky sestav</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="t4jhp3R" name="settings.behavior.table.assemblies_default_columns.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_default_columns.help</source>
|
||||
<target>Sloupce, které by měly být zobrazeny ve výchozím nastavení v tabulkách sestav. Pořadí prvků lze změnit přetažením.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Uj8ie5E" name="settings.behavior.table.assemblies_bom_default_columns">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_bom_default_columns</source>
|
||||
<target>Výchozí sloupce pro kusovníky sestav</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="uhb3diP" name="settings.behavior.table.assemblies_bom_default_columns.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_bom_default_columns.help</source>
|
||||
<target>Sloupce, které by měly být zobrazeny ve výchozím nastavení v kusovnících sestav. Pořadí prvků lze změnit přetažením.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="hazr_g5" name="settings.ips.oemsecrets">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets</source>
|
||||
|
|
@ -13348,6 +13372,18 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz
|
|||
<target>Pokud potřebujete směnné kurzy mezi měnami mimo eurozónu, můžete zde zadat API klíč z fixer.io.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="akjcu4G" name="settings.misc.assembly">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.assembly</source>
|
||||
<target>Sestavy</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Jiwgf9K" name="settings.misc.assembly.useIpnPlaceholderInName">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.assembly.useIpnPlaceholderInName</source>
|
||||
<target>Použít zástupný symbol %%ipn%% v názvu sestavy. Zástupný symbol bude při ukládání nahrazen vstupem IPN.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Ffr5xYM" name="settings.behavior.part_info">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.part_info</source>
|
||||
|
|
@ -13792,6 +13828,12 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz
|
|||
<target>CSV (KiCAD Pcbnew BOM)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Schématický editor BOM (CSV soubor)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -14757,6 +14799,12 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz
|
|||
<target>Popis</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Referenceované sestavy</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -14787,6 +14835,36 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz
|
|||
<target>Neplatný regulární výraz (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Název</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Množství</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Popis</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -12953,6 +12953,12 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver
|
|||
<target>CSV (KiCAD Pcbnew BOM)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Skematisk editor BOM (CSV-fil)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -13438,6 +13444,12 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver
|
|||
<target>Beskrivelse</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Referencerede forsamlinger</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -13468,6 +13480,36 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver
|
|||
<target>Ugyldigt regulært udtryk (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Navn</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Mængde</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Beskrivelse</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -13236,6 +13236,30 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
|
|||
<target>Die Spalten, die standardmäßig in Bauteiltabellen angezeigt werden sollen. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="u7bki9T" name="settings.behavior.table.assemblies_default_columns">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_default_columns</source>
|
||||
<target>Standardmäßige Spalten für Baugruppentabellen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="t4jhp3R" name="settings.behavior.table.assemblies_default_columns.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_default_columns.help</source>
|
||||
<target>Die Spalten, die standardmäßig in Baugruppentabellen angezeigt werden sollen. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Uj8ie5E" name="settings.behavior.table.assemblies_bom_default_columns">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_bom_default_columns</source>
|
||||
<target>Standardmäßige Spalten für Baugruppen-Stücklisten</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="uhb3diP" name="settings.behavior.table.assemblies_bom_default_columns.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_bom_default_columns.help</source>
|
||||
<target>Die Spalten, die standardmäßig in Baugruppen-Stücklisten angezeigt werden sollen. Die Reihenfolge der Elemente kann per Drag & Drop geändert werden.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="hazr_g5" name="settings.ips.oemsecrets">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets</source>
|
||||
|
|
@ -13686,6 +13710,12 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
|
|||
<target>CSV (KiCAD Pcbnew BOM)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Schaltplaneditor BOM (CSV Datei)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -14201,6 +14231,18 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
|
|||
<target>Wenn Sie Wechselkurse zwischen Nicht-Euro-Währungen benötigen, können Sie hier einen API-Schlüssel von fixer.io eingeben.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="akjcu4G" name="settings.misc.assembly">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.assembly</source>
|
||||
<target>Baugruppen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Jiwgf9K" name="settings.misc.assembly.useIpnPlaceholderInName">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.assembly.useIpnPlaceholderInName</source>
|
||||
<target>Verwenden Sie einen %%ipn%%-Platzhalter im Namen einer Baugruppe. Der Platzhalter wird beim Speichern durch die eingegebene IPN ersetzt.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Ffr5xYM" name="settings.behavior.part_info">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.part_info</source>
|
||||
|
|
@ -15431,6 +15473,12 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
|
|||
<target>Beschreibung</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Referenzierte Baugruppen</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -15461,6 +15509,36 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
|
|||
<target>Ungültiger regulärer Ausdruck (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Name</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Stückzahl</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Beschreibung</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -1961,6 +1961,12 @@
|
|||
<target>CSV (KiCAD Pcbnew BOM)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Σχηματικό BOM (CSV αρχείο)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -2446,6 +2452,12 @@
|
|||
<target>Περιγραφή</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Αναφερόμενες συναρμολογήσεις</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -2476,6 +2488,36 @@
|
|||
<target>Μη έγκυρη κανονική έκφραση (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Όνομα</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Ποσότητα</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Περιγραφή</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -13237,6 +13237,30 @@ Please note, that you can not impersonate a disabled user. If you try you will g
|
|||
<target>The columns to show by default in part tables. Order of items can be changed via drag & drop.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="u7bki9T" name="settings.behavior.table.assemblies_default_columns">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_default_columns</source>
|
||||
<target>Default columns for assembly tables</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="t4jhp3R" name="settings.behavior.table.assemblies_default_columns.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_default_columns.help</source>
|
||||
<target>The columns to show by default in assembly tables. Order of items can be changed via drag & drop.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Uj8ie5E" name="settings.behavior.table.assemblies_bom_default_columns">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_bom_default_columns</source>
|
||||
<target>Default columns for assembly BOM tables</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="uhb3diP" name="settings.behavior.table.assemblies_bom_default_columns.help">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.table.assemblies_bom_default_columns.help</source>
|
||||
<target>The columns to show by default in assembly BOM tables. Order of items can be changed via drag & drop.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="hazr_g5" name="settings.ips.oemsecrets">
|
||||
<segment state="translated">
|
||||
<source>settings.ips.oemsecrets</source>
|
||||
|
|
@ -13687,6 +13711,12 @@ Please note, that you can not impersonate a disabled user. If you try you will g
|
|||
<target>CSV (KiCAD Pcbnew BOM)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Schematic BOM (CSV file)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -14202,6 +14232,18 @@ Please note, that you can not impersonate a disabled user. If you try you will g
|
|||
<target>If you need exchange rates between non-euro currencies, you can input an API key from fixer.io here.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="akjcu4G" name="settings.misc.assembly">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.assembly</source>
|
||||
<target>Assemblies</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Jiwgf9K" name="settings.misc.assembly.useIpnPlaceholderInName">
|
||||
<segment state="translated">
|
||||
<source>settings.misc.assembly.useIpnPlaceholderInName</source>
|
||||
<target>Use an %%ipn%% placeholder in the name of an assembly. Placeholder is replaced with the ipn input while saving.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Ffr5xYM" name="settings.behavior.part_info">
|
||||
<segment state="translated">
|
||||
<source>settings.behavior.part_info</source>
|
||||
|
|
@ -15432,6 +15474,12 @@ Please note, that you can not impersonate a disabled user. If you try you will g
|
|||
<target>Description</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Referenced assemblies</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -15462,6 +15510,36 @@ Please note, that you can not impersonate a disabled user. If you try you will g
|
|||
<target>Invalid regular expression (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Name</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Quantity</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Description</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -13101,6 +13101,12 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S
|
|||
<target>CSV (KiCAD Pcbnew BOM)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Editor Esquemático BOM (archivo CSV)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -13610,6 +13616,12 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S
|
|||
<target>Descripción</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Ensambles referenciados</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -13640,6 +13652,36 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S
|
|||
<target>Expresión regular no válida (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Nombre</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Cantidad</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Descripción</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -9535,6 +9535,12 @@ exemple de ville</target>
|
|||
<target>CSV (KiCAD Pcbnew BOM)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Éditeur Schématique BOM (fichier CSV)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -10020,6 +10026,12 @@ exemple de ville</target>
|
|||
<target>Description</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Ensembles référencés</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -10050,6 +10062,36 @@ exemple de ville</target>
|
|||
<target>Expression régulière invalide (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Nom</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Quantité</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Description</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -13103,6 +13103,12 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a
|
|||
<target>CSV (KiCAD Pcbnew)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Editor Schematico BOM (file CSV)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -13612,6 +13618,12 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a
|
|||
<target>Descrizione</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Assiemi referenziati</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -13642,6 +13654,36 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a
|
|||
<target>Espressione regolare non valida (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Nome</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Quantità</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Descrizione</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -9248,6 +9248,12 @@ Exampletown</target>
|
|||
<target>CSV (KiCAD Pcbnew)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD 回路図エディタ BOM (CSV ファイル)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -9733,6 +9739,12 @@ Exampletown</target>
|
|||
<target>説明</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>参照されているアセンブリ</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -9763,6 +9775,36 @@ Exampletown</target>
|
|||
<target>無効な正規表現(regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>名前</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>数量</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>説明</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -1186,6 +1186,12 @@
|
|||
<target>CSV (KiCAD Pcbnew)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Schematische editor BOM (CSV-bestand)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -1671,6 +1677,12 @@
|
|||
<target>Beschrijving</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Gerefereerde assemblages</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -1701,6 +1713,36 @@
|
|||
<target>Ongeldige reguliere expressie (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Naam</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Hoeveelheid</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Beschrijving</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -12980,6 +12980,12 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli
|
|||
<target>CSV (KiCAD Pcbnew)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Schematyczny edytor BOM (plik CSV)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -13465,6 +13471,12 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli
|
|||
<target>Opis</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Zestawy referencyjne</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -13495,6 +13507,36 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli
|
|||
<target>Nieprawidłowe wyrażenie regularne (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Nazwa</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Ilość</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Opis</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -737,7 +737,7 @@
|
|||
</notes>
|
||||
<segment state="translated">
|
||||
<source>user.edit.tfa.disable_tfa_message</source>
|
||||
<target>Это выключит <b>все активные двухфакторной способы аутентификации пользователя</b>и удалит <b>резервные коды</b>!
|
||||
<target>Это выключит <b>все активные двухфакторной способы аутентификации пользователя</b>и удалит <b>резервные коды</b>!
|
||||
<br>
|
||||
Пользователь должен будет снова настроить все методы двухфакторной аутентификации и распечатать новые резервные коды! <br><br>
|
||||
<b>Делайте это только в том случае, если вы абсолютно уверены в личности пользователя (обращающегося за помощью), в противном случае учетная запись может быть взломана злоумышленником!</b></target>
|
||||
|
|
@ -3746,7 +3746,7 @@
|
|||
</notes>
|
||||
<segment state="translated">
|
||||
<source>tfa_backup.reset_codes.confirm_message</source>
|
||||
<target>Это удалит все предыдущие коды и создаст набор новых. Это не может быть отменено.
|
||||
<target>Это удалит все предыдущие коды и создаст набор новых. Это не может быть отменено.
|
||||
Не забудьте распечатать новы кода и хранить их в безопасном месте!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
|
|
@ -13080,6 +13080,12 @@
|
|||
<target>CSV (KiCAD Pcbnew)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD Схематический редактор BOM (CSV файл)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -13565,6 +13571,12 @@
|
|||
<target>Описание</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>Ссылочные сборки</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -13595,6 +13607,36 @@
|
|||
<target>Неверное регулярное выражение (regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>Название</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>Количество</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>Описание</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -12965,6 +12965,12 @@ Element 3</target>
|
|||
<target>CSV 文件(KiCAD Pcbnew)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="oiuejI1" name="assembly.bom_import.type.kicad_schematic">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.type.kicad_schematic</source>
|
||||
<target>KiCAD 原理图编辑器 BOM(CSV 文件)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="0IekETE" name="assembly.bom_import.clear_existing_bom">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom_import.clear_existing_bom</source>
|
||||
|
|
@ -13450,6 +13456,12 @@ Element 3</target>
|
|||
<target>描述</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ahzol5T" name="assembly.table.referencedAssemblies">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.referencedAssemblies</source>
|
||||
<target>引用的组件</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="igaT4kQ" name="assembly.table.addedDate">
|
||||
<segment state="translated">
|
||||
<source>assembly.table.addedDate</source>
|
||||
|
|
@ -13480,6 +13492,36 @@ Element 3</target>
|
|||
<target>无效的正则表达式(regex)</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="8uh6vTx" name="assembly.bom.table.id">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.id</source>
|
||||
<target>ID</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="ijncxl3" name="assembly.bom.table.name">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.name</source>
|
||||
<target>名称</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Pe5Bkw1" name="assembly.bom.table.quantity">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.quantity</source>
|
||||
<target>数量</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7hdpoc2" name="assembly.bom.table.ipn">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.ipn</source>
|
||||
<target>IPN</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="1nbwdk5" name="assembly.bom.table.description">
|
||||
<segment state="translated">
|
||||
<source>assembly.bom.table.description</source>
|
||||
<target>描述</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="a7uOieC" name="datasource.synonym">
|
||||
<segment state="translated">
|
||||
<source>datasource.synonym</source>
|
||||
|
|
|
|||
|
|
@ -251,12 +251,6 @@
|
|||
<target>Musíte vybrat díl pro položku BOM dílu nebo nastavit název pro položku BOM bez dílu.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Q42Zh.e" name="validator.project.bom_entry.only_part_or_assembly_allowed">
|
||||
<segment state="translated">
|
||||
<source>validator.project.bom_entry.only_part_or_assembly_allowed</source>
|
||||
<target>Je povoleno vybrat pouze jednu součástku nebo sestavu. Upravit prosím svůj výběr!</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="WF_v4ih" name="project.bom_entry.name_already_in_bom">
|
||||
<segment state="translated">
|
||||
<source>project.bom_entry.name_already_in_bom</source>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue