From a356eecd74818de1d2a3d44251593d5348f8e599 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 6 Dec 2025 23:29:32 +0100 Subject: [PATCH] Replace type synonym placeholders with bracket notation for better DX (#1133) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial plan * Replace placeholder syntax for type synonyms to be more DX friendly Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Update translation files to use new placeholder syntax Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Use mb_strtoupper with mb_substr for Unicode consistency Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com> * Make placeholder generation right * Removed obsolete transltions --------- 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 --- config/permissions.yaml | 22 +++++++++---------- ...ynonymsAsTranslationParametersListener.php | 8 +++---- ...terSynonymsAsTranslationParametersTest.php | 7 +++--- translations/messages.de.xlf | 6 ----- translations/messages.en.xlf | 6 ----- 5 files changed, 19 insertions(+), 30 deletions(-) diff --git a/config/permissions.yaml b/config/permissions.yaml index 5adfb79d..8c6a145e 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -18,7 +18,7 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co parts: # e.g. this maps to perms_parts in User/Group database group: "data" - label: "{{part}}" + label: "[[Part]]" operations: # Here are all possible operations are listed => the op name is mapped to bit value read: label: "perm.read" @@ -71,7 +71,7 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co storelocations: &PART_CONTAINING - label: "{{storage_location}}" + label: "[[Storage_location]]" group: "data" operations: read: @@ -103,39 +103,39 @@ perms: # Here comes a list with all Permission names (they have a perm_[name] co footprints: <<: *PART_CONTAINING - label: "{{footprint}}" + label: "[[Footprint]]" categories: <<: *PART_CONTAINING - label: "{{category}}" + label: "[[Category]]" suppliers: <<: *PART_CONTAINING - label: "{{supplier}}" + label: "[[Supplier]]" manufacturers: <<: *PART_CONTAINING - label: "{{manufacturer}}" + label: "[[Manufacturer]]" projects: <<: *PART_CONTAINING - label: "{{project}}" + label: "[[Project]]" attachment_types: <<: *PART_CONTAINING - label: "{{attachment_type}}" + label: "[[Attachment_type]]" currencies: <<: *PART_CONTAINING - label: "{{currency}}" + label: "[[Currency]]" measurement_units: <<: *PART_CONTAINING - label: "{{measurement_unit}}" + label: "[[Measurement_unit]]" part_custom_states: <<: *PART_CONTAINING - label: "{{part_custom_state}}" + label: "[[Part_custom_state]]" tools: label: "perm.part.tools" diff --git a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php index b216aad4..e7ac7300 100644 --- a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php +++ b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php @@ -60,10 +60,10 @@ readonly class RegisterSynonymsAsTranslationParametersListener //Generate a placeholder for each element type foreach (ElementTypes::cases() as $elementType) { - //We have a placeholder for singular - $placeholders['{' . $elementType->value . '}'] = $this->typeNameGenerator->typeLabel($elementType); - //We have a placeholder for plural - $placeholders['{{' . $elementType->value . '}}'] = $this->typeNameGenerator->typeLabelPlural($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); //And we have lowercase versions for both $placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType)); diff --git a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php index d08edecb..4f49284a 100644 --- a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php +++ b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php @@ -40,10 +40,11 @@ class RegisterSynonymsAsTranslationParametersTest extends KernelTestCase $placeholders = $this->listener->getSynonymPlaceholders(); $this->assertIsArray($placeholders); - $this->assertSame('Part', $placeholders['{part}']); - $this->assertSame('Parts', $placeholders['{{part}}']); - //Lowercase versions: + // Curly braces for lowercase versions $this->assertSame('part', $placeholders['[part]']); $this->assertSame('parts', $placeholders['[[part]]']); + // Square brackets for capitalized versions (with capital first letter in placeholder) + $this->assertSame('Part', $placeholders['[Part]']); + $this->assertSame('Parts', $placeholders['[[Part]]']); } } diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 7a8bbd01..a401724f 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -14297,12 +14297,6 @@ Bitte beachten Sie, dass dieses System derzeit experimentell ist und die hier de Mit Typsynonymen können Sie die Bezeichnungen von integrierten Datentypen ersetzen. Zum Beispiel können Sie „Footprint" in etwas anderes umbenennen. - - - {{part}} - Bauteile - - log.element_edited.changed_fields.part_ipn_prefix diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 0a029070..a8ca83fd 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -14146,12 +14146,6 @@ Please note that this system is currently experimental, and the synonyms defined Type synonyms allow you to replace the labels of built-in data types. For example, you can rename "Footprint" to something else. - - - {{part}} - Parts - - log.element_edited.changed_fields.part_ipn_prefix