diff --git a/config/reference.php b/config/reference.php index 6ea52419..5d58153f 100644 --- a/config/reference.php +++ b/config/reference.php @@ -1548,11 +1548,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" * } - * @psalm-type MakerConfig = array{ - * root_namespace?: scalar|null, // Default: "App" - * generate_final_classes?: bool, // Default: true - * generate_final_entities?: bool, // Default: false - * } * @psalm-type WebpackEncoreConfig = array{ * output_path: scalar|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() * crossorigin?: false|"anonymous"|"use-credentials", // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false @@ -1677,6 +1672,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * post_processors?: array>, * }, * } + * @psalm-type DamaDoctrineTestConfig = array{ + * enable_static_connection?: mixed, // Default: true + * enable_static_meta_data_cache?: bool, // Default: true + * enable_static_query_cache?: bool, // Default: true + * connection_keys?: list, + * } * @psalm-type TwigExtraConfig = array{ * cache?: bool|array{ * enabled?: bool, // Default: false @@ -2372,13 +2373,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * invalidate_on_env_change?: bool, // Default: true * }, * } - * @psalm-type JbtronicsTranslationEditorConfig = array{ - * translations_path?: scalar|null, // Default: "%translator.default_path%" - * format?: scalar|null, // Default: "xlf" - * xliff_version?: scalar|null, // Default: "2.0" - * use_intl_icu_format?: bool, // Default: false - * writer_options?: list, - * } * @psalm-type ApiPlatformConfig = array{ * title?: scalar|null, // The title of the API. // Default: "" * description?: scalar|null, // The description of the API. // Default: "" @@ -2634,11 +2628,17 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * ... * }, * } - * @psalm-type DamaDoctrineTestConfig = array{ - * enable_static_connection?: mixed, // Default: true - * enable_static_meta_data_cache?: bool, // Default: true - * enable_static_query_cache?: bool, // Default: true - * connection_keys?: list, + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|null, // Default: "App" + * generate_final_classes?: bool, // Default: true + * generate_final_entities?: bool, // Default: false + * } + * @psalm-type JbtronicsTranslationEditorConfig = array{ + * translations_path?: scalar|null, // Default: "%translator.default_path%" + * format?: scalar|null, // Default: "xlf" + * xliff_version?: scalar|null, // Default: "2.0" + * use_intl_icu_format?: bool, // Default: false + * writer_options?: list, * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, diff --git a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php index 1495bbaa..e7ac7300 100644 --- a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php +++ b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php @@ -60,19 +60,14 @@ readonly class RegisterSynonymsAsTranslationParametersListener //Generate a placeholder for each element type foreach (ElementTypes::cases() as $elementType) { - // Get the capitalized labels - $capitalizedSingular = $this->typeNameGenerator->typeLabel($elementType); - $capitalizedPlural = $this->typeNameGenerator->typeLabelPlural($elementType); - - // Curly braces for lowercase versions - $placeholders['{' . $elementType->value . '}'] = mb_strtolower($capitalizedSingular); - $placeholders['{{' . $elementType->value . '}}'] = mb_strtolower($capitalizedPlural); + //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); - // Square brackets for capitalized versions (with capital first letter in placeholder) - // Use mb_strtoupper for the first character to handle multibyte strings consistently - $capitalizedKey = mb_strtoupper(mb_substr($elementType->value, 0, 1)) . mb_substr($elementType->value, 1); - $placeholders['[' . $capitalizedKey . ']'] = $capitalizedSingular; - $placeholders['[[' . $capitalizedKey . ']]'] = $capitalizedPlural; + //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)); } return $placeholders; diff --git a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php index 636b9fe7..4f49284a 100644 --- a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php +++ b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php @@ -41,8 +41,8 @@ class RegisterSynonymsAsTranslationParametersTest extends KernelTestCase $this->assertIsArray($placeholders); // Curly braces for lowercase versions - $this->assertSame('part', $placeholders['{part}']); - $this->assertSame('parts', $placeholders['{{part}}']); + $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]]']);