Replace hardcoded entity type names with synonym placeholders in English and German translations (#1128)

* Initial plan

* Initial plan for replacing entity type names with placeholders

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Replace entity type names with synonym placeholders in English translations

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Add more synonym placeholders for storage location, project, and part patterns

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Update tree navigation labels with synonym placeholders

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Fix remaining entity type placeholders identified in code review

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Fix placeholder syntax: use [Type]/[[Type]] instead of {type}/{{type}} and add German translations

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Fix German translation to avoid awkward word concatenation with placeholder

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Use capitalized placeholders in German translations (nouns are always capitalized in German)

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Fixed length menu for datatable views

* Capitalize placeholders at the beginning of sentences/titles in English translations

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Ensure that synonym placeholders get cached on a per locale level

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
Co-authored-by: Jan Böhmer <mail@jan-boehmer.de>
This commit is contained in:
Copilot 2025-12-07 14:09:22 +01:00 committed by GitHub
parent a356eecd74
commit 60ff727896
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 318 additions and 192 deletions

View file

@ -50,9 +50,9 @@ readonly class RegisterSynonymsAsTranslationParametersListener
$this->translator = $translator;
}
public function getSynonymPlaceholders(): array
public function getSynonymPlaceholders(string $locale): array
{
return $this->cache->get('partdb_synonym_placeholders', function (ItemInterface $item) {
return $this->cache->get('partdb_synonym_placeholders' . '_' . $locale, function (ItemInterface $item) use ($locale) {
$item->tag('synonyms');
@ -62,12 +62,12 @@ readonly class RegisterSynonymsAsTranslationParametersListener
foreach (ElementTypes::cases() as $elementType) {
//Versions with capitalized first letter
$capitalized = ucfirst($elementType->value); //We have only ASCII element type values, so this is sufficient
$placeholders['[' . $capitalized . ']'] = $this->typeNameGenerator->typeLabel($elementType);
$placeholders['[[' . $capitalized . ']]'] = $this->typeNameGenerator->typeLabelPlural($elementType);
$placeholders['[' . $capitalized . ']'] = $this->typeNameGenerator->typeLabel($elementType, $locale);
$placeholders['[[' . $capitalized . ']]'] = $this->typeNameGenerator->typeLabelPlural($elementType, $locale);
//And we have lowercase versions for both
$placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType));
$placeholders['[[' . $elementType->value . ']]'] = mb_strtolower($this->typeNameGenerator->typeLabelPlural($elementType));
$placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType, $locale));
$placeholders['[[' . $elementType->value . ']]'] = mb_strtolower($this->typeNameGenerator->typeLabelPlural($elementType, $locale));
}
return $placeholders;
@ -82,7 +82,7 @@ readonly class RegisterSynonymsAsTranslationParametersListener
}
//Register all placeholders for synonyms
$placeholders = $this->getSynonymPlaceholders();
$placeholders = $this->getSynonymPlaceholders($event->getRequest()->getLocale());
foreach ($placeholders as $key => $value) {
$this->translator->addGlobalParameter($key, $value);
}

View file

@ -37,7 +37,7 @@ class RegisterSynonymsAsTranslationParametersTest extends KernelTestCase
public function testGetSynonymPlaceholders(): void
{
$placeholders = $this->listener->getSynonymPlaceholders();
$placeholders = $this->listener->getSynonymPlaceholders('en');
$this->assertIsArray($placeholders);
// Curly braces for lowercase versions

View file

@ -13495,5 +13495,14 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz
<target>Uživatelé</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -12164,5 +12164,14 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver
<target>Brugere</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -19,7 +19,7 @@
</notes>
<segment state="translated">
<source>attachment_type.edit</source>
<target>Bearbeite Dateityp</target>
<target>Bearbeite [Attachment_type]</target>
</segment>
</unit>
<unit id="wyou6GD" name="attachment_type.new">
@ -29,7 +29,7 @@
</notes>
<segment state="translated">
<source>attachment_type.new</source>
<target>Neuer Dateityp</target>
<target>Neuer [Attachment_type]</target>
</segment>
</unit>
<unit id="JHaxw0a" name="category.labelp">
@ -84,7 +84,7 @@
</notes>
<segment state="translated">
<source>category.edit</source>
<target>Bearbeite Kategorie</target>
<target>Bearbeite [Category]</target>
</segment>
</unit>
<unit id="6.rAXsX" name="category.new">
@ -94,7 +94,7 @@
</notes>
<segment state="translated">
<source>category.new</source>
<target>Neue Kategorie</target>
<target>Neue [Category]</target>
</segment>
</unit>
<unit id="z1GMBc_" name="currency.caption">
@ -134,7 +134,7 @@
</notes>
<segment state="translated">
<source>currency.edit</source>
<target>Bearbeite Währung</target>
<target>Bearbeite [Currency]</target>
</segment>
</unit>
<unit id="aTtTsUc" name="currency.new">
@ -144,7 +144,7 @@
</notes>
<segment state="translated">
<source>currency.new</source>
<target>Neue Währung</target>
<target>Neue [Currency]</target>
</segment>
</unit>
<unit id="pe43jlV" name="project.edit">
@ -154,7 +154,7 @@
</notes>
<segment state="translated">
<source>project.edit</source>
<target>Bearbeite Projekt</target>
<target>Bearbeite [Project]</target>
</segment>
</unit>
<unit id="sYgrSg9" name="project.new">
@ -164,7 +164,7 @@
</notes>
<segment state="translated">
<source>project.new</source>
<target>Neues Projekt</target>
<target>Neues [Project]</target>
</segment>
</unit>
<unit id="eLrezdb" name="search.placeholder">
@ -394,7 +394,7 @@
</notes>
<segment state="translated">
<source>footprint.edit</source>
<target>Bearbeite Footprint</target>
<target>Bearbeite [Footprint]</target>
</segment>
</unit>
<unit id="9RgpRoK" name="footprint.new">
@ -404,7 +404,7 @@
</notes>
<segment state="translated">
<source>footprint.new</source>
<target>Neuer Footprint</target>
<target>Neuer [Footprint]</target>
</segment>
</unit>
<unit id="tvm4F9e" name="group.edit.caption">
@ -436,7 +436,7 @@
</notes>
<segment state="translated">
<source>group.edit</source>
<target>Bearbeite Gruppe</target>
<target>Bearbeite [Group]</target>
</segment>
</unit>
<unit id="_RN3Wph" name="group.new">
@ -446,7 +446,7 @@
</notes>
<segment state="translated">
<source>group.new</source>
<target>Neue Gruppe</target>
<target>Neue [Group]</target>
</segment>
</unit>
<unit id="jXqdnm_" name="label_profile.caption">
@ -483,7 +483,7 @@
</notes>
<segment state="translated">
<source>label_profile.edit</source>
<target>Bearbeite Labelprofil</target>
<target>Bearbeite [Label_profile]</target>
</segment>
</unit>
<unit id="WkNFJjx" name="label_profile.new">
@ -493,7 +493,7 @@
</notes>
<segment state="translated">
<source>label_profile.new</source>
<target>Neues Labelprofil</target>
<target>Neues [Label_profile]</target>
</segment>
</unit>
<unit id="r3pQ31P" name="manufacturer.caption">
@ -514,7 +514,7 @@
</notes>
<segment state="translated">
<source>manufacturer.edit</source>
<target>Bearbeite Hersteller</target>
<target>Bearbeite [Manufacturer]</target>
</segment>
</unit>
<unit id="dRX_cvD" name="manufacturer.new">
@ -524,7 +524,7 @@
</notes>
<segment state="translated">
<source>manufacturer.new</source>
<target>Neuer Hersteller</target>
<target>Neuer [Manufacturer]</target>
</segment>
</unit>
<unit id="3ra2AyY" name="measurement_unit.caption">
@ -565,7 +565,7 @@
</notes>
<segment state="translated">
<source>storelocation.edit</source>
<target>Bearbeite Lagerort</target>
<target>Bearbeite [Storage_location]</target>
</segment>
</unit>
<unit id="am0iTCO" name="storelocation.new">
@ -575,7 +575,7 @@
</notes>
<segment state="translated">
<source>storelocation.new</source>
<target>Neuer Lagerort</target>
<target>Neuer [Storage_location]</target>
</segment>
</unit>
<unit id="ozZU_B5" name="supplier.edit">
@ -585,7 +585,7 @@
</notes>
<segment state="translated">
<source>supplier.edit</source>
<target>Bearbeite Lieferant</target>
<target>Bearbeite [Supplier]</target>
</segment>
</unit>
<unit id="b8jlkMd" name="supplier.new">
@ -595,7 +595,7 @@
</notes>
<segment state="translated">
<source>supplier.new</source>
<target>Neuer Lieferant</target>
<target>Neuer [Supplier]</target>
</segment>
</unit>
<unit id="vX.dhjK" name="user.edit.caption">
@ -737,7 +737,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs
</notes>
<segment state="translated">
<source>user.edit</source>
<target>Bearbeite Benutzer</target>
<target>Bearbeite [User]</target>
</segment>
</unit>
<unit id="esEoaa_" name="user.new">
@ -747,7 +747,7 @@ Der Benutzer wird alle Zwei-Faktor-Authentifizierungmethoden neu einrichten müs
</notes>
<segment state="translated">
<source>user.new</source>
<target>Neuer Benutzer</target>
<target>Neuer [User]</target>
</segment>
</unit>
<unit id="KqHffuc" name="attachment.delete">
@ -1781,7 +1781,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>part.edit.title</source>
<target>Bearbeite Bauteil %name%</target>
<target>Bearbeite [Part] %name%</target>
</segment>
</unit>
<unit id="yFxHuAp" name="part.edit.card_title">
@ -1942,7 +1942,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>part.new.card_title</source>
<target>Neues Bauteil erstellen</target>
<target>Neues [Part] erstellen</target>
</segment>
</unit>
<unit id="5TCcXwk" name="part_lot.delete">
@ -3124,7 +3124,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.distinct_parts_count</source>
<target>Anzahl verschiedener Bauteile</target>
<target>Anzahl verschiedener [[Part]]</target>
</segment>
</unit>
<unit id="sIGqnJ0" name="statistics.parts_instock_sum">
@ -3135,7 +3135,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.parts_instock_sum</source>
<target>Summe aller vorhanden Bauteilebestände</target>
<target>Summe aller vorhandenen Bestände an [[Part]]</target>
</segment>
</unit>
<unit id="uHmvfnI" name="statistics.parts_with_price">
@ -3146,7 +3146,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.parts_with_price</source>
<target>Bauteile mit Preisinformationen</target>
<target>[[Part]] mit Preisinformationen</target>
</segment>
</unit>
<unit id="7x89_xL" name="statistics.categories_count">
@ -3157,7 +3157,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.categories_count</source>
<target>Anzahl Kategorien</target>
<target>Anzahl [[Category]]</target>
</segment>
</unit>
<unit id="s0nLRjN" name="statistics.footprints_count">
@ -3168,7 +3168,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.footprints_count</source>
<target>Anzahl Footprints</target>
<target>Anzahl [[Footprint]]</target>
</segment>
</unit>
<unit id="f0gHZzl" name="statistics.manufacturers_count">
@ -3179,7 +3179,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.manufacturers_count</source>
<target>Anzahl Hersteller</target>
<target>Anzahl [[Manufacturer]]</target>
</segment>
</unit>
<unit id="_4rvCd3" name="statistics.storelocations_count">
@ -3190,7 +3190,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.storelocations_count</source>
<target>Anzahl Lagerorte</target>
<target>Anzahl [[Storage_location]]</target>
</segment>
</unit>
<unit id="tzzUvrm" name="statistics.suppliers_count">
@ -3201,7 +3201,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.suppliers_count</source>
<target>Anzahl Lieferanten</target>
<target>Anzahl [[Supplier]]</target>
</segment>
</unit>
<unit id="QEk.sHE" name="statistics.currencies_count">
@ -3212,7 +3212,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.currencies_count</source>
<target>Anzahl Währungen</target>
<target>Anzahl [[Currency]]</target>
</segment>
</unit>
<unit id="MTCnGlN" name="statistics.measurement_units_count">
@ -3223,7 +3223,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.measurement_units_count</source>
<target>Anzahl Maßeinheiten</target>
<target>Anzahl [[Measurement_unit]]</target>
</segment>
</unit>
<unit id="7sRXll2" name="statistics.devices_count">
@ -3234,7 +3234,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.devices_count</source>
<target>Anzahl Baugruppen</target>
<target>Anzahl [[Project]]</target>
</segment>
</unit>
<unit id="2u7zTMF" name="statistics.attachment_types_count">
@ -3245,7 +3245,7 @@ Subelemente werden beim Löschen nach oben verschoben.</target>
</notes>
<segment state="translated">
<source>statistics.attachment_types_count</source>
<target>Anzahl Anhangstypen</target>
<target>Anzahl [[Attachment_type]]</target>
</segment>
</unit>
<unit id="C0XsLQc" name="statistics.all_attachments_count">
@ -6138,7 +6138,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.attachment_types</source>
<target>Dateitypen</target>
<target>[[Attachment_type]]</target>
</segment>
</unit>
<unit id="u8jQbAc" name="tree.tools.edit.categories">
@ -6149,7 +6149,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.categories</source>
<target>Kategorien</target>
<target>[[Category]]</target>
</segment>
</unit>
<unit id="3n2K_az" name="tree.tools.edit.projects">
@ -6160,7 +6160,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.projects</source>
<target>Projekte</target>
<target>[[Project]]</target>
</segment>
</unit>
<unit id="raK7qaK" name="tree.tools.edit.suppliers">
@ -6171,7 +6171,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.suppliers</source>
<target>Lieferanten</target>
<target>[[Supplier]]</target>
</segment>
</unit>
<unit id="1IJ48Y0" name="tree.tools.edit.manufacturer">
@ -6182,7 +6182,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.manufacturer</source>
<target>Hersteller</target>
<target>[[Manufacturer]]</target>
</segment>
</unit>
<unit id="GNbWH_O" name="tree.tools.edit.storelocation">
@ -6192,7 +6192,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.storelocation</source>
<target>Lagerorte</target>
<target>[[Storage_location]]</target>
</segment>
</unit>
<unit id="7ZOhkd." name="tree.tools.edit.footprint">
@ -6202,7 +6202,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.footprint</source>
<target>Footprints</target>
<target>[[Footprint]]</target>
</segment>
</unit>
<unit id="U1zYjzD" name="tree.tools.edit.currency">
@ -6212,7 +6212,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.currency</source>
<target>Währungen</target>
<target>[[Currency]]</target>
</segment>
</unit>
<unit id="NnzEujm" name="tree.tools.edit.measurement_unit">
@ -6222,13 +6222,13 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.measurement_unit</source>
<target>Maßeinheiten</target>
<target>[[Measurement_unit]]</target>
</segment>
</unit>
<unit id="5adacKb" name="tree.tools.edit.part_custom_state">
<segment state="translated">
<source>tree.tools.edit.part_custom_state</source>
<target>Benutzerdefinierter Bauteilstatus</target>
<target>[[Part_custom_state]]</target>
</segment>
</unit>
<unit id=".Ux4R3T" name="tree.tools.edit.label_profile">
@ -6237,7 +6237,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.label_profile</source>
<target>Labelprofil</target>
<target>[[Label_profile]]</target>
</segment>
</unit>
<unit id="eyvi0Zt" name="tree.tools.edit.part">
@ -6247,7 +6247,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.edit.part</source>
<target>Neues Bauteil</target>
<target>Neues [Part]</target>
</segment>
</unit>
<unit id="nIHj_yk" name="tree.tools.show.all_parts">
@ -6289,7 +6289,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.system.users</source>
<target>Benutzer</target>
<target>[[User]]</target>
</segment>
</unit>
<unit id="dTEQQ3T" name="tree.tools.system.groups">
@ -6299,7 +6299,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr
</notes>
<segment state="translated">
<source>tree.tools.system.groups</source>
<target>Gruppen</target>
<target>[[Group]]</target>
</segment>
</unit>
<unit id="NWWki1R" name="tree.tools.system.event_log">
@ -11013,25 +11013,25 @@ Element 1 -&gt; Element 1.2</target>
<unit id="r5F3f_G" name="measurement_unit.new">
<segment state="translated">
<source>measurement_unit.new</source>
<target>Neue Maßeinheit</target>
<target>Neue [Measurement_unit]</target>
</segment>
</unit>
<unit id="W.vDRLw" name="measurement_unit.edit">
<segment state="translated">
<source>measurement_unit.edit</source>
<target>Bearbeite Maßeinheit</target>
<target>Bearbeite [Measurement_unit]</target>
</segment>
</unit>
<unit id="ba52d.g" name="part_custom_state.new">
<segment state="translated">
<source>part_custom_state.new</source>
<target>Neuer benutzerdefinierter Bauteilstatus</target>
<target>Neuer [Part_custom_state]</target>
</segment>
</unit>
<unit id="c1.gb2d" name="part_custom_state.edit">
<segment state="translated">
<source>part_custom_state.edit</source>
<target>Bearbeite benutzerdefinierten Bauteilstatus</target>
<target>Bearbeite [Part_custom_state]</target>
</segment>
</unit>
<unit id="uW2WHHC" name="user.aboutMe.label">
@ -14429,5 +14429,14 @@ Bitte beachten Sie, dass dieses System derzeit experimentell ist und die hier de
<target>Wenn aktiviert, wird eine Option zur Generierung einer IPN mit diesem globalen Präfix angeboten, das für Bauteile in allen Kategorien gilt.</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -1638,5 +1638,14 @@
<target>Κατασκευαστές</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -19,7 +19,7 @@
</notes>
<segment state="translated">
<source>attachment_type.edit</source>
<target>Edit file type</target>
<target>Edit [attachment_type]</target>
</segment>
</unit>
<unit id="wyou6GD" name="attachment_type.new">
@ -29,7 +29,7 @@
</notes>
<segment state="translated">
<source>attachment_type.new</source>
<target>New file type</target>
<target>New [attachment_type]</target>
</segment>
</unit>
<unit id="JHaxw0a" name="category.labelp">
@ -84,7 +84,7 @@
</notes>
<segment state="translated">
<source>category.edit</source>
<target>Edit category</target>
<target>Edit [category]</target>
</segment>
</unit>
<unit id="6.rAXsX" name="category.new">
@ -94,7 +94,7 @@
</notes>
<segment state="translated">
<source>category.new</source>
<target>New category</target>
<target>New [category]</target>
</segment>
</unit>
<unit id="KSFhj_3" name="currency.iso_code.caption">
@ -124,7 +124,7 @@
</notes>
<segment state="translated">
<source>currency.edit</source>
<target>Edit currency</target>
<target>Edit [currency]</target>
</segment>
</unit>
<unit id="aTtTsUc" name="currency.new">
@ -134,7 +134,7 @@
</notes>
<segment state="translated">
<source>currency.new</source>
<target>New currency</target>
<target>New [currency]</target>
</segment>
</unit>
<unit id="pe43jlV" name="project.edit">
@ -144,7 +144,7 @@
</notes>
<segment state="translated">
<source>project.edit</source>
<target>Edit project</target>
<target>Edit [project]</target>
</segment>
</unit>
<unit id="sYgrSg9" name="project.new">
@ -154,7 +154,7 @@
</notes>
<segment state="translated">
<source>project.new</source>
<target>New project</target>
<target>New [project]</target>
</segment>
</unit>
<unit id="eLrezdb" name="search.placeholder">
@ -384,7 +384,7 @@
</notes>
<segment state="translated">
<source>footprint.edit</source>
<target>Edit footprint</target>
<target>Edit [footprint]</target>
</segment>
</unit>
<unit id="9RgpRoK" name="footprint.new">
@ -394,7 +394,7 @@
</notes>
<segment state="translated">
<source>footprint.new</source>
<target>New footprint</target>
<target>New [footprint]</target>
</segment>
</unit>
<unit id="m27aWeR" name="user.edit.permissions">
@ -416,7 +416,7 @@
</notes>
<segment state="translated">
<source>group.edit</source>
<target>Edit group</target>
<target>Edit [group]</target>
</segment>
</unit>
<unit id="_RN3Wph" name="group.new">
@ -426,7 +426,7 @@
</notes>
<segment state="translated">
<source>group.new</source>
<target>New group</target>
<target>New [group]</target>
</segment>
</unit>
<unit id="GgwITAf" name="label_profile.advanced">
@ -454,7 +454,7 @@
</notes>
<segment state="translated">
<source>label_profile.edit</source>
<target>Edit label profile</target>
<target>Edit [label_profile]</target>
</segment>
</unit>
<unit id="WkNFJjx" name="label_profile.new">
@ -464,7 +464,7 @@
</notes>
<segment state="translated">
<source>label_profile.new</source>
<target>New label profile</target>
<target>New [label_profile]</target>
</segment>
</unit>
<unit id="AVQBOWW" name="manufacturer.edit">
@ -474,7 +474,7 @@
</notes>
<segment state="translated">
<source>manufacturer.edit</source>
<target>Edit manufacturer</target>
<target>Edit [manufacturer]</target>
</segment>
</unit>
<unit id="dRX_cvD" name="manufacturer.new">
@ -484,7 +484,7 @@
</notes>
<segment state="translated">
<source>manufacturer.new</source>
<target>New manufacturer</target>
<target>New [manufacturer]</target>
</segment>
</unit>
<unit id="crdkzlg" name="storelocation.labelp">
@ -509,7 +509,7 @@
</notes>
<segment state="translated">
<source>storelocation.edit</source>
<target>Edit storage location</target>
<target>Edit [storage_location]</target>
</segment>
</unit>
<unit id="am0iTCO" name="storelocation.new">
@ -519,7 +519,7 @@
</notes>
<segment state="translated">
<source>storelocation.new</source>
<target>New storage location</target>
<target>New [storage_location]</target>
</segment>
</unit>
<unit id="ozZU_B5" name="supplier.edit">
@ -529,7 +529,7 @@
</notes>
<segment state="translated">
<source>supplier.edit</source>
<target>Edit supplier</target>
<target>Edit [supplier]</target>
</segment>
</unit>
<unit id="b8jlkMd" name="supplier.new">
@ -539,7 +539,7 @@
</notes>
<segment state="translated">
<source>supplier.new</source>
<target>New supplier</target>
<target>New [supplier]</target>
</segment>
</unit>
<unit id="Ux8wVuF" name="user.edit.configuration">
@ -672,7 +672,7 @@ The user will have to set up all two-factor authentication methods again and pri
</notes>
<segment state="translated">
<source>user.edit</source>
<target>Edit user</target>
<target>Edit [user]</target>
</segment>
</unit>
<unit id="esEoaa_" name="user.new">
@ -682,7 +682,7 @@ The user will have to set up all two-factor authentication methods again and pri
</notes>
<segment state="translated">
<source>user.new</source>
<target>New user</target>
<target>New [user]</target>
</segment>
</unit>
<unit id="KqHffuc" name="attachment.delete">
@ -1002,7 +1002,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>entity.info.parts_count</source>
<target>Number of parts with this element</target>
<target>Number of [[part]] with this element</target>
</segment>
</unit>
<unit id="o0XIi58" name="specifications.property">
@ -1716,7 +1716,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>part.edit.title</source>
<target>Edit part</target>
<target>Edit [part]</target>
</segment>
</unit>
<unit id="yFxHuAp" name="part.edit.card_title">
@ -1727,7 +1727,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>part.edit.card_title</source>
<target>Edit part</target>
<target>Edit [part]</target>
</segment>
</unit>
<unit id="EwY218_" name="part.edit.tab.common">
@ -1877,7 +1877,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>part.new.card_title</source>
<target>Create new part</target>
<target>Create new [part]</target>
</segment>
</unit>
<unit id="5TCcXwk" name="part_lot.delete">
@ -1941,7 +1941,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>part.info.title</source>
<target>Detail info for part</target>
<target>Detail info for [part]</target>
</segment>
</unit>
<unit id="c9.fQPj" name="part.part_lots.label">
@ -2107,7 +2107,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="final">
<source>user.creating_user</source>
<target>User who created this part</target>
<target>User who created this [part]</target>
</segment>
</unit>
<unit id="KEhkI6s" name="Unknown">
@ -2145,7 +2145,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="final">
<source>user.last_editing_user</source>
<target>User who edited this part last</target>
<target>User who edited this [part] last</target>
</segment>
</unit>
<unit id="R8D9PGv" name="part.isFavorite">
@ -2509,7 +2509,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>part.edit.btn</source>
<target>Edit part</target>
<target>Edit [part]</target>
</segment>
</unit>
<unit id="TNzs45Y" name="part.clone.btn">
@ -2520,7 +2520,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>part.clone.btn</source>
<target>Clone part</target>
<target>Clone [part]</target>
</segment>
</unit>
<unit id="RG1RD20" name="part.create.btn">
@ -2531,7 +2531,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>part.create.btn</source>
<target>Create new part</target>
<target>Create new [part]</target>
</segment>
</unit>
<unit id="kxAbZAe" name="part.delete.confirm_title">
@ -2541,7 +2541,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>part.delete.confirm_title</source>
<target>Do you really want to delete this part?</target>
<target>Do you really want to delete this [part]?</target>
</segment>
</unit>
<unit id="owQRbkU" name="part.delete.message">
@ -2551,7 +2551,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>part.delete.message</source>
<target>This part and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone!</target>
<target>This [part] and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone!</target>
</segment>
</unit>
<unit id="oH8.Zx6" name="part.delete">
@ -2561,7 +2561,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>part.delete</source>
<target>Delete part</target>
<target>Delete [part]</target>
</segment>
</unit>
<unit id="P7nc8TK" name="parts_list.all.title">
@ -2571,7 +2571,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>parts_list.all.title</source>
<target>All parts</target>
<target>All [[part]]</target>
</segment>
</unit>
<unit id="aSDZrnb" name="parts_list.category.title">
@ -2581,7 +2581,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>parts_list.category.title</source>
<target>Parts with category</target>
<target>[[Part]] with [category]</target>
</segment>
</unit>
<unit id="qZfLMs5" name="parts_list.footprint.title">
@ -2591,7 +2591,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>parts_list.footprint.title</source>
<target>Parts with footprint</target>
<target>[[Part]] with [footprint]</target>
</segment>
</unit>
<unit id="wzH1LnU" name="parts_list.manufacturer.title">
@ -2601,7 +2601,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>parts_list.manufacturer.title</source>
<target>Parts with manufacturer</target>
<target>[[Part]] with [manufacturer]</target>
</segment>
</unit>
<unit id="z0tqm9_" name="parts_list.search.title">
@ -2611,7 +2611,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>parts_list.search.title</source>
<target>Search Parts</target>
<target>Search [[part]]</target>
</segment>
</unit>
<unit id=".nsfK4V" name="parts_list.storelocation.title">
@ -2621,7 +2621,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>parts_list.storelocation.title</source>
<target>Parts with storage locations</target>
<target>[[Part]] with [[storage_location]]</target>
</segment>
</unit>
<unit id="dqIl9gT" name="parts_list.supplier.title">
@ -2631,7 +2631,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>parts_list.supplier.title</source>
<target>Parts with supplier</target>
<target>[[Part]] with [supplier]</target>
</segment>
</unit>
<unit id="BJygaSh" name="parts_list.tags.title">
@ -3059,7 +3059,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.distinct_parts_count</source>
<target>Number of distinct parts</target>
<target>Number of distinct [[part]]</target>
</segment>
</unit>
<unit id="sIGqnJ0" name="statistics.parts_instock_sum">
@ -3070,7 +3070,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.parts_instock_sum</source>
<target>Sum of all parts stocks</target>
<target>Sum of all [[part]] stocks</target>
</segment>
</unit>
<unit id="uHmvfnI" name="statistics.parts_with_price">
@ -3081,7 +3081,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.parts_with_price</source>
<target>Number of parts with price information</target>
<target>Number of [[part]] with price information</target>
</segment>
</unit>
<unit id="7x89_xL" name="statistics.categories_count">
@ -3092,7 +3092,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.categories_count</source>
<target>Number of categories</target>
<target>Number of [[category]]</target>
</segment>
</unit>
<unit id="s0nLRjN" name="statistics.footprints_count">
@ -3103,7 +3103,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.footprints_count</source>
<target>Number of footprints</target>
<target>Number of [[footprint]]</target>
</segment>
</unit>
<unit id="f0gHZzl" name="statistics.manufacturers_count">
@ -3114,7 +3114,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.manufacturers_count</source>
<target>Number of manufacturers</target>
<target>Number of [[manufacturer]]</target>
</segment>
</unit>
<unit id="_4rvCd3" name="statistics.storelocations_count">
@ -3125,7 +3125,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.storelocations_count</source>
<target>Number of storage locations</target>
<target>Number of [[storage_location]]</target>
</segment>
</unit>
<unit id="tzzUvrm" name="statistics.suppliers_count">
@ -3136,7 +3136,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.suppliers_count</source>
<target>Number of suppliers</target>
<target>Number of [[supplier]]</target>
</segment>
</unit>
<unit id="QEk.sHE" name="statistics.currencies_count">
@ -3147,7 +3147,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.currencies_count</source>
<target>Number of currencies</target>
<target>Number of [[currency]]</target>
</segment>
</unit>
<unit id="MTCnGlN" name="statistics.measurement_units_count">
@ -3158,7 +3158,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.measurement_units_count</source>
<target>Number of measurement units</target>
<target>Number of [[measurement_unit]]</target>
</segment>
</unit>
<unit id="7sRXll2" name="statistics.devices_count">
@ -3169,7 +3169,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.devices_count</source>
<target>Number of projects</target>
<target>Number of [[project]]</target>
</segment>
</unit>
<unit id="2u7zTMF" name="statistics.attachment_types_count">
@ -3180,7 +3180,7 @@ Sub elements will be moved upwards.</target>
</notes>
<segment state="translated">
<source>statistics.attachment_types_count</source>
<target>Number of attachment types</target>
<target>Number of [[attachment_type]]</target>
</segment>
</unit>
<unit id="C0XsLQc" name="statistics.all_attachments_count">
@ -6073,7 +6073,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.attachment_types</source>
<target>Attachment types</target>
<target>[[Attachment_type]]</target>
</segment>
</unit>
<unit id="u8jQbAc" name="tree.tools.edit.categories">
@ -6084,7 +6084,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.categories</source>
<target>Categories</target>
<target>[[Category]]</target>
</segment>
</unit>
<unit id="3n2K_az" name="tree.tools.edit.projects">
@ -6095,7 +6095,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.projects</source>
<target>Projects</target>
<target>[[Project]]</target>
</segment>
</unit>
<unit id="raK7qaK" name="tree.tools.edit.suppliers">
@ -6106,7 +6106,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.suppliers</source>
<target>Suppliers</target>
<target>[[Supplier]]</target>
</segment>
</unit>
<unit id="1IJ48Y0" name="tree.tools.edit.manufacturer">
@ -6117,7 +6117,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.manufacturer</source>
<target>Manufacturers</target>
<target>[[Manufacturer]]</target>
</segment>
</unit>
<unit id="GNbWH_O" name="tree.tools.edit.storelocation">
@ -6127,7 +6127,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.storelocation</source>
<target>Storage locations</target>
<target>[[Storage_location]]</target>
</segment>
</unit>
<unit id="7ZOhkd." name="tree.tools.edit.footprint">
@ -6137,7 +6137,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.footprint</source>
<target>Footprints</target>
<target>[[Footprint]]</target>
</segment>
</unit>
<unit id="U1zYjzD" name="tree.tools.edit.currency">
@ -6147,7 +6147,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.currency</source>
<target>Currencies</target>
<target>[[Currency]]</target>
</segment>
</unit>
<unit id="NnzEujm" name="tree.tools.edit.measurement_unit">
@ -6157,13 +6157,13 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.measurement_unit</source>
<target>Measurement Unit</target>
<target>[[Measurement_unit]]</target>
</segment>
</unit>
<unit id="oYLWbbv" name="tree.tools.edit.part_custom_state">
<segment state="translated">
<source>tree.tools.edit.part_custom_state</source>
<target>Custom part states</target>
<target>[[Part_custom_state]]</target>
</segment>
</unit>
<unit id=".Ux4R3T" name="tree.tools.edit.label_profile">
@ -6172,7 +6172,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.label_profile</source>
<target>Label profiles</target>
<target>[[Label_profile]]</target>
</segment>
</unit>
<unit id="eyvi0Zt" name="tree.tools.edit.part">
@ -6182,7 +6182,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.edit.part</source>
<target>New part</target>
<target>New [part]</target>
</segment>
</unit>
<unit id="nIHj_yk" name="tree.tools.show.all_parts">
@ -6193,7 +6193,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.show.all_parts</source>
<target>Show all parts</target>
<target>Show all [[part]]</target>
</segment>
</unit>
<unit id="JxVmFbM" name="tree.tools.show.all_attachments">
@ -6224,7 +6224,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.system.users</source>
<target>Users</target>
<target>[[User]]</target>
</segment>
</unit>
<unit id="dTEQQ3T" name="tree.tools.system.groups">
@ -6234,7 +6234,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>tree.tools.system.groups</source>
<target>Groups</target>
<target>[[Group]]</target>
</segment>
</unit>
<unit id="NWWki1R" name="tree.tools.system.event_log">
@ -6536,7 +6536,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>validator.part_lot.location_full</source>
<target>The storage location was marked as full, so you can not add a new part to it.</target>
<target>The [storage_location] was marked as full, so you can not add a new [part] to it.</target>
</segment>
</unit>
<unit id="h6qELde" name="validator.part_lot.only_existing">
@ -6546,7 +6546,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>validator.part_lot.only_existing</source>
<target>The storage location was marked as "only existing", so you can not add new part to it.</target>
<target>The [storage_location] was marked as "only existing", so you can not add new [part] to it.</target>
</segment>
</unit>
<unit id="2yWi8eP" name="validator.part_lot.single_part">
@ -6556,7 +6556,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>validator.part_lot.single_part</source>
<target>The storage location was marked as "single part", so you can not add a new part to it.</target>
<target>The [storage_location] was marked as "single [part]", so you can not add a new [part] to it.</target>
</segment>
</unit>
<unit id="aBSsuxp" name="m_status.active.help">
@ -6737,7 +6737,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>entity.edit.not_selectable.help</source>
<target>If this option is activated, this element can not be assigned to a part property. Useful if this element is just used for grouping.</target>
<target>If this option is activated, this element can not be assigned to a [part] property. Useful if this element is just used for grouping.</target>
</segment>
</unit>
<unit id="poCwov." name="bbcode.hint">
@ -6777,7 +6777,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>category.edit.disable_footprints</source>
<target>Disable footprints</target>
<target>Disable [[footprint]]</target>
</segment>
</unit>
<unit id="MLbac5k" name="category.edit.disable_footprints.help">
@ -6787,7 +6787,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>category.edit.disable_footprints.help</source>
<target>If this option is activated, the footprint property is disabled for all parts with this category.</target>
<target>If this option is activated, the [footprint] property is disabled for all [[part]] with this [category].</target>
</segment>
</unit>
<unit id="JWHe4Hi" name="category.edit.disable_manufacturers">
@ -6797,7 +6797,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>category.edit.disable_manufacturers</source>
<target>Disable manufacturers</target>
<target>Disable [[manufacturer]]</target>
</segment>
</unit>
<unit id=".ItLezq" name="category.edit.disable_manufacturers.help">
@ -6807,7 +6807,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>category.edit.disable_manufacturers.help</source>
<target>If this option is activated, the manufacturer property is disabled for all parts with this category.</target>
<target>If this option is activated, the [manufacturer] property is disabled for all [[part]] with this [category].</target>
</segment>
</unit>
<unit id="g_gRbhu" name="category.edit.disable_autodatasheets">
@ -6827,7 +6827,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>category.edit.disable_autodatasheets.help</source>
<target>If this option is activated, no automatic links to datasheets are created for parts with this category.</target>
<target>If this option is activated, no automatic links to datasheets are created for [[part]] with this [category].</target>
</segment>
</unit>
<unit id="QzSkLse" name="category.edit.disable_properties">
@ -6847,7 +6847,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can
</notes>
<segment state="translated">
<source>category.edit.disable_properties.help</source>
<target>If this option is activated, the part properties are disabled for parts with this category.</target>
<target>If this option is activated, the [part] properties are disabled for [[part]] with this [category].</target>
</segment>
</unit>
<unit id="ILoRXgM" name="category.edit.partname_hint">
@ -7182,7 +7182,7 @@ Element 1 -&gt; Element 1.2</target>
</notes>
<segment state="translated">
<source>storelocation.edit.is_full.help</source>
<target>If this option is selected, it is neither possible to add new parts to this storelocation or to increase the amount of existing parts.</target>
<target>If this option is selected, it is neither possible to add new [[part]] to this storelocation or to increase the amount of existing [[part]].</target>
</segment>
</unit>
<unit id="V1su4ac" name="storelocation.limit_to_existing.label">
@ -7192,7 +7192,7 @@ Element 1 -&gt; Element 1.2</target>
</notes>
<segment state="translated">
<source>storelocation.limit_to_existing.label</source>
<target>Limit to existing parts</target>
<target>Limit to existing [[part]]</target>
</segment>
</unit>
<unit id="6D.6huj" name="storelocation.limit_to_existing.help">
@ -7202,7 +7202,7 @@ Element 1 -&gt; Element 1.2</target>
</notes>
<segment state="translated">
<source>storelocation.limit_to_existing.help</source>
<target>If this option is activated, it is not possible to add new parts to this storelocation, but the amount of existing parts can be increased.</target>
<target>If this option is activated, it is not possible to add new [[part]] to this storelocation, but the amount of existing [[part]] can be increased.</target>
</segment>
</unit>
<unit id="tGVVeof" name="storelocation.only_single_part.label">
@ -7212,7 +7212,7 @@ Element 1 -&gt; Element 1.2</target>
</notes>
<segment state="translated">
<source>storelocation.only_single_part.label</source>
<target>Only single part</target>
<target>Only single [part]</target>
</segment>
</unit>
<unit id="Hyh5pvY" name="storelocation.only_single_part.help">
@ -7222,7 +7222,7 @@ Element 1 -&gt; Element 1.2</target>
</notes>
<segment state="translated">
<source>storelocation.only_single_part.help</source>
<target>If this option is activated, only a single part (with every amount) can be assigned to this storage location. Useful for small SMD boxes or feeders.</target>
<target>If this option is activated, only a single [part] (with every amount) can be assigned to this [storage_location]. Useful for small SMD boxes or feeders.</target>
</segment>
</unit>
<unit id="sty2ele" name="storelocation.storage_type.label">
@ -7242,7 +7242,7 @@ Element 1 -&gt; Element 1.2</target>
</notes>
<segment state="translated">
<source>storelocation.storage_type.help</source>
<target>You can select a measurement unit here, which a part must have to be able to be assigned to this storage location</target>
<target>You can select a [measurement_unit] here, which a [part] must have to be able to be assigned to this [storage_location]</target>
</segment>
</unit>
<unit id="ilC3c6u" name="supplier.edit.default_currency">
@ -7504,7 +7504,7 @@ Element 1 -&gt; Element 1.2</target>
</notes>
<segment state="translated">
<source>perm.part.all_parts</source>
<target>List all parts</target>
<target>List all [[part]]</target>
</segment>
</unit>
<unit id="xGpxdp3" name="perm.part.no_price_parts">
@ -7514,7 +7514,7 @@ Element 1 -&gt; Element 1.2</target>
</notes>
<segment state="translated">
<source>perm.part.no_price_parts</source>
<target>List parts without price info</target>
<target>List [[part]] without price info</target>
</segment>
</unit>
<unit id="gVBtadZ" name="perm.part.obsolete_parts">
@ -7524,7 +7524,7 @@ Element 1 -&gt; Element 1.2</target>
</notes>
<segment state="translated">
<source>perm.part.obsolete_parts</source>
<target>List obsolete parts</target>
<target>List obsolete [[part]]</target>
</segment>
</unit>
<unit id="rh5syrd" name="perm.part.unknown_instock_parts">
@ -8636,7 +8636,7 @@ Element 1 -&gt; Element 1.2</target>
<unit id="DachcxN" name="part.table.edit.title">
<segment state="translated">
<source>part.table.edit.title</source>
<target>Edit part</target>
<target>Edit [part]</target>
</segment>
</unit>
<unit id="keLmdcq" name="part_list.action.scrollable_hint">
@ -9362,7 +9362,7 @@ Element 1 -&gt; Element 1.2</target>
<unit id="e97FPsh" name="entity.info.parts_count_recursive">
<segment state="translated">
<source>entity.info.parts_count_recursive</source>
<target>Number of parts with this element or its sub elements</target>
<target>Number of [[part]] with this element or its sub elements</target>
</segment>
</unit>
<unit id="st92iWF" name="tools.server_infos.title">
@ -9596,13 +9596,13 @@ Element 1 -&gt; Element 1.2</target>
<unit id="hpPkHYF" name="project.add_parts_to_project">
<segment state="translated">
<source>project.add_parts_to_project</source>
<target>Add parts to project BOM</target>
<target>Add [[part]] to [project] BOM</target>
</segment>
</unit>
<unit id="mauieYX" name="part.info.add_part_to_project">
<segment state="translated">
<source>part.info.add_part_to_project</source>
<target>Add this part to a project</target>
<target>Add this [part] to a [project]</target>
</segment>
</unit>
<unit id="5r.n1zf" name="project_bom_entry.label">
@ -9650,43 +9650,43 @@ Element 1 -&gt; Element 1.2</target>
<unit id="9GtmqC1" name="part.new_build_part.error.build_part_already_exists">
<segment state="translated">
<source>part.new_build_part.error.build_part_already_exists</source>
<target>The project already has a build part!</target>
<target>The [project] already has a build [part]!</target>
</segment>
</unit>
<unit id="9soO_kf" name="project.edit.associated_build_part">
<segment state="translated">
<source>project.edit.associated_build_part</source>
<target>Associated builds part</target>
<target>Associated builds [part]</target>
</segment>
</unit>
<unit id="8Mu.T78" name="project.edit.associated_build_part.add">
<segment state="translated">
<source>project.edit.associated_build_part.add</source>
<target>Add builds part</target>
<target>Add builds [part]</target>
</segment>
</unit>
<unit id="sPdCBUl" name="project.edit.associated_build.hint">
<segment state="translated">
<source>project.edit.associated_build.hint</source>
<target>This part represents the builds of this project, which are stored somewhere.</target>
<target>This [part] represents the builds of this [project], which are stored somewhere.</target>
</segment>
</unit>
<unit id="Cke2p4U" name="part.info.projectBuildPart.hint">
<segment state="translated">
<source>part.info.projectBuildPart.hint</source>
<target>This part represents the builds of the following project and is associated with it</target>
<target>This [part] represents the builds of the following [project] and is associated with it</target>
</segment>
</unit>
<unit id="yCR6rBb" name="part.is_build_part">
<segment state="translated">
<source>part.is_build_part</source>
<target>Is project builds part</target>
<target>Is [project] builds [part]</target>
</segment>
</unit>
<unit id="dV.E0zI" name="project.info.title">
<segment state="translated">
<source>project.info.title</source>
<target>Project info</target>
<target>[Project] info</target>
</segment>
</unit>
<unit id="LYURecm" name="project.info.bom_entries_count">
@ -9884,13 +9884,13 @@ Element 1 -&gt; Element 1.2</target>
<unit id="TRh.K81" name="part_list.action.projects.generate_label">
<segment state="translated">
<source>part_list.action.projects.generate_label</source>
<target>Generate labels (for parts)</target>
<target>Generate labels (for [[part]])</target>
</segment>
</unit>
<unit id="CEr_90G" name="part_list.action.projects.generate_label_lot">
<segment state="translated">
<source>part_list.action.projects.generate_label_lot</source>
<target>Generate labels (for part lots)</target>
<target>Generate labels (for [[part_lot]])</target>
</segment>
</unit>
<unit id="QjZuQlv" name="part_list.action.generate_label.empty">
@ -9914,7 +9914,7 @@ Element 1 -&gt; Element 1.2</target>
<unit id=".I7zcoK" name="project.builds.following_bom_entries_miss_instock">
<segment state="translated">
<source>project.builds.following_bom_entries_miss_instock</source>
<target>The following parts have not enough stock to build this project at least once:</target>
<target>The following [[part]] have not enough stock to build this [project] at least once:</target>
</segment>
</unit>
<unit id="fGT0qfb" name="project.builds.stocked">
@ -9938,19 +9938,19 @@ Element 1 -&gt; Element 1.2</target>
<unit id="NdZ1t7a" name="project.builds.number_of_builds_possible">
<segment state="translated">
<source>project.builds.number_of_builds_possible</source>
<target>You have enough stocked to build &lt;b&gt;%max_builds%&lt;/b&gt; builds of this project.</target>
<target><![CDATA[You have enough stocked to build <b>%max_builds%</b> builds of this [project].]]></target>
</segment>
</unit>
<unit id="iuSpPbg" name="project.builds.check_project_status">
<segment state="translated">
<source>project.builds.check_project_status</source>
<target>The current project status is &lt;b&gt;"%project_status%"&lt;/b&gt;. You should check if you really want to build the project with this status!</target>
<target><![CDATA[The current [project] status is <b>"%project_status%"</b>. You should check if you really want to build the [project] with this status!]]></target>
</segment>
</unit>
<unit id="Y7vSSxi" name="project.builds.following_bom_entries_miss_instock_n">
<segment state="translated">
<source>project.builds.following_bom_entries_miss_instock_n</source>
<target>You do not have enough parts stocked to build this project %number_of_builds% times. The following parts have missing instock:</target>
<target>You do not have enough [[part]] stocked to build this [project] %number_of_builds% times. The following [[part]] have missing instock:</target>
</segment>
</unit>
<unit id="1BGl3Dv" name="project.build.flash.invalid_input">
@ -9974,7 +9974,7 @@ Element 1 -&gt; Element 1.2</target>
<unit id="zgLSR.X" name="project.build.help">
<segment state="translated">
<source>project.build.help</source>
<target>Choose from which part lots the stock to build this project should be taken (and in which amount). Check the checkbox for each BOM Entry, when you are finished withdrawing the parts, or use the top checkbox to check all boxes at once.</target>
<target>Choose from which [[part_lot]] the stock to build this [project] should be taken (and in which amount). Check the checkbox for each BOM Entry, when you are finished withdrawing the [[part]], or use the top checkbox to check all boxes at once.</target>
</segment>
</unit>
<unit id="srYaI3Z" name="project.build.buildsPartLot.new_lot">
@ -10244,13 +10244,13 @@ Element 1 -&gt; Element 1.2</target>
<unit id="1swuUz4" name="log.element_edited.changed_fields.disable_footprints">
<segment state="translated">
<source>log.element_edited.changed_fields.disable_footprints</source>
<target>Disable footprints</target>
<target>Disable [[footprint]]</target>
</segment>
</unit>
<unit id="sZ3vQaH" name="log.element_edited.changed_fields.disable_manufacturers">
<segment state="translated">
<source>log.element_edited.changed_fields.disable_manufacturers</source>
<target>Disable manufacturers</target>
<target>Disable [[manufacturer]]</target>
</segment>
</unit>
<unit id="lLXp.Sn" name="log.element_edited.changed_fields.disable_autodatasheets">
@ -10862,25 +10862,25 @@ Element 1 -&gt; Element 1.2</target>
<unit id="r5F3f_G" name="measurement_unit.new">
<segment state="translated">
<source>measurement_unit.new</source>
<target>New Measurement Unit</target>
<target>New [measurement_unit]</target>
</segment>
</unit>
<unit id="W.vDRLw" name="measurement_unit.edit">
<segment state="translated">
<source>measurement_unit.edit</source>
<target>Edit Measurement Unit</target>
<target>Edit [measurement_unit]</target>
</segment>
</unit>
<unit id="Ae0GMtY" name="part_custom_state.new">
<segment state="translated">
<source>part_custom_state.new</source>
<target>New custom part state</target>
<target>New [part_custom_state]</target>
</segment>
</unit>
<unit id="5uZ23wR" name="part_custom_state.edit">
<segment state="translated">
<source>part_custom_state.edit</source>
<target>Edit custom part state</target>
<target>Edit [part_custom_state]</target>
</segment>
</unit>
<unit id="uW2WHHC" name="user.aboutMe.label">
@ -10898,7 +10898,7 @@ Element 1 -&gt; Element 1.2</target>
<unit id="lYlHhtl" name="storelocation.part_owner_must_match.label">
<segment state="translated">
<source>storelocation.part_owner_must_match.label</source>
<target>Part Lot owner must match storage location owner</target>
<target>[Part_lot] owner must match [storage_location] owner</target>
</segment>
</unit>
<unit id="eMHXpbV" name="part_lot.owner">
@ -10934,7 +10934,7 @@ Element 1 -&gt; Element 1.2</target>
<unit id="9zWwSvC" name="part.withdraw.access_denied">
<segment state="translated">
<source>part.withdraw.access_denied</source>
<target>Not allowed to do the desired action. Please check your permissions and the owner of the part lots.</target>
<target>Not allowed to do the desired action. Please check your permissions and the owner of the [[part_lot]].</target>
</segment>
</unit>
<unit id="4ynARET" name="part.info.amount.less_than_desired">
@ -10952,7 +10952,7 @@ Element 1 -&gt; Element 1.2</target>
<unit id="krpFlYH" name="log.element_edited.changed_fields.part_owner_must_match">
<segment state="translated">
<source>log.element_edited.changed_fields.part_owner_must_match</source>
<target>Part owner must match storage location owner</target>
<target>[Part] owner must match [storage_location] owner</target>
</segment>
</unit>
<unit id="o5u.Nnz" name="part.filter.lessThanDesired">
@ -11524,7 +11524,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g
<unit id="bkPXoxM" name="project.build.dont_check_quantity.help">
<segment state="translated">
<source>project.build.dont_check_quantity.help</source>
<target>If this option is selected, the given withdraw quantities are used as given, no matter if more or less parts are actually required to build this project.</target>
<target>If this option is selected, the given withdraw quantities are used as given, no matter if more or less [[part]] are actually required to build this [project].</target>
</segment>
</unit>
<unit id="XsE9cmC" name="part_list.action.invert_selection">
@ -14278,5 +14278,14 @@ Please note that this system is currently experimental, and the synonyms defined
<target>If enabled, an option for to generate IPN with this global prefix, shared across parts in all categories.</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -12336,5 +12336,14 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S
<target>Usuarios</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -9076,5 +9076,14 @@ exemple de ville</target>
<target>Utilisateurs</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -14049,5 +14049,14 @@
<target>Tömeges importálási feladat alkatrészek</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -12338,5 +12338,14 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a
<target>Utenti</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -8813,5 +8813,14 @@ Exampletown</target>
<target>ユーザー</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -840,5 +840,14 @@
<target>Aangepaste staten van onderdelen</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -12191,5 +12191,14 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli
<target>Użytkownicy</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -12291,5 +12291,14 @@
<target>Пользователи</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>

View file

@ -12176,5 +12176,14 @@ Element 3</target>
<target>用户</target>
</segment>
</unit>
<unit id="MxKRRx_" name="datatable.datatable.lengthMenu">
<notes>
<note priority="1">Do not remove! Used for datatables rendering.</note>
</notes>
<segment state="translated">
<source>datatable.datatable.lengthMenu</source>
<target>_MENU_</target>
</segment>
</unit>
</file>
</xliff>
</xliff>