This PR has been generated automatically.
For more details see
[upmerge_pr.yaml](/Sylius/Sylius/blob/2.1/.github/workflows/upmerge_pr.yaml).
**Remember!** The upmerge should always be merged with using `Merge pull
request` button.
In case of conflicts, please resolve them manually with usign the
following commands:
```
git fetch upstream
gh pr checkout <this-pr-number>
git merge upstream/2.1 -m "Resolve conflicts between 1.14 and 2.1"
```
If you use other name for the upstream remote, please replace `upstream`
with the name of your remote pointing to the `Sylius/Sylius` repository.
Once the conflicts are resolved, please run `git merge --continue` and
push the changes to this PR.
| Q | A
|-----------------|-----
| Branch? | 2.1
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no<!-- don't forget to update the UPGRADE-*.md file
-->
| Related tickets | after https://github.com/Sylius/Sylius/pull/18650
| License | MIT
<!--
- Bug fixes must be submitted against the 1.14 or 2.1 branch
- Features and deprecations must be submitted against the 2.2 branch
- Make sure that the correct base branch is set
To be sure you are not breaking any Backward Compatibilities, check the
documentation:
https://docs.sylius.com/en/latest/book/organization/backward-compatibility-promise.html
-->
This PR has been generated automatically.
For more details see
[upmerge_pr.yaml](/Sylius/Sylius/blob/2.1/.github/workflows/upmerge_pr.yaml).
**Remember!** The upmerge should always be merged with using `Merge pull
request` button.
In case of conflicts, please resolve them manually with usign the
following commands:
```
git fetch upstream
gh pr checkout <this-pr-number>
git merge upstream/2.1 -m "Resolve conflicts between 1.14 and 2.1"
```
If you use other name for the upstream remote, please replace `upstream`
with the name of your remote pointing to the `Sylius/Sylius` repository.
Once the conflicts are resolved, please run `git merge --continue` and
push the changes to this PR.
| Q | A
|-----------------|-----
| Branch? | 2.1
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Related tickets | fixes#18620
| License | MIT
| Q | A
|-----------------|-----
| Branch? | 1.14 <!-- see the comment below -->
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| License | MIT
<!--
- Bug fixes must be submitted against the 1.14 or 2.1 branch
- Features and deprecations must be submitted against the 2.2 branch
- Make sure that the correct base branch is set
To be sure you are not breaking any Backward Compatibilities, check the
documentation:
https://docs.sylius.com/en/latest/book/organization/backward-compatibility-promise.html
-->
For details, this PR follows the design described in the RFC:
https://github.com/Sylius/Sylius/issues/18588
| Q | A
|-----------------|-----
| Branch? | 2.1
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Related tickets | fixes#18640
| License | MIT
## Summary
- Replace generic Twig block names with entity-specific names in form
themes to avoid overriding global blocks
- Fix `choice_label` option in `TranslatableAutocompleteType` to
properly respect `extra_options` override
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Refactor**
* Reorganized several admin form templates into more specific,
namespaced blocks for clarity and maintainability.
* **UI Enhancement**
* Added dropdown selectors when adding new rule/action/type entries in
shipping, promotions, and catalog promotion forms.
* **Refactor**
* Updated product attribute and form rendering entry points to use the
new scoped blocks.
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
| Q | A
|-----------------|-----
| Branch? | 2.1
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Related tickets | n/a
| License | MIT
## Summary
- Allow overriding `choice_label` via `extra_options` in
`TaxonAutocompleteType`
- Remove unused `choice_name` option (has no effect with Symfony UX
Autocomplete)
## Why
`choice_name` only affects expanded choice fields (checkboxes/radios),
not select-based autocomplete.
The `choice_label` was set as static value, blocking `extra_options`
override.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Refactor**
* Refactored autocomplete field configuration in product, product
attribute, product variant, and taxon forms for improved flexibility.
* Enhanced default option resolution for choice display and value
mapping.
* Improved customization support in translatable autocomplete components
through updated option handling.
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
| Q | A
|-----------------|-----
| Branch? | 2.1 <!-- see the comment below -->
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Related tickets | no
| License | MIT
To trigger some hooks like `sylius_shop.product.index#metatags` and
`sylius_shop.product.show#metatags`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Chores**
* Introduced new template variables for internal use without affecting
existing page behavior or appearance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
| Q | A
|-----------------|-----
| Branch? | 2.1
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Fixed tickets | fixes#17953
| License | MIT
## Summary
Removes explicit `choice_value => 'code'` from autocomplete form types
to fix a **critical performance issue**.
### The Problem
When `choice_value` is explicitly set (even to a property like `code`),
Symfony's `DoctrineChoiceLoader` cannot use the optimized
`getEntitiesByIds()` query. Instead, it falls back to loading **ALL
entities** via `getEntities()` without any WHERE clause.
With 4000+ products, this causes severe performance degradation.
### The Solution
- Remove `choice_value` option, letting Symfony use the default (entity
ID)
- This enables the optimized `WHERE id IN (...)` query
- Update all Behat contexts/elements to use `getId()` instead of
`getCode()`
### References
- [Symfony UX Issue #2736](https://github.com/symfony/ux/issues/2736) -
Extra query without WHERE when choice_value is defined
- [Symfony Issue
#57724](https://github.com/symfony/symfony/issues/57724) - EntityType
performance with large datasets
- [Lazy Choice Loader (Symfony
7.2)](https://symfony.com/blog/new-in-symfony-7-2-lazy-choice-loader)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Improvements**
* Autocomplete fields across products, variants, options and taxons now
display and select by human-readable names while using stable internal
identifiers for form submissions.
* Catalog promotion scope controls updated for clearer name-based
selection and feedback when adding/removing scopes.
* Product image and variant selection flows enhanced to show and verify
selected variant names more reliably.
* Taxon parent selection improved for richer behavior in
JavaScript-enabled admin pages.
* **Documentation**
* Added upgrade notes explaining autocomplete behavior and migration
considerations.
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
| Q | A
|-----------------|-----
| Branch? | 2.1
| License | MIT
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Chores**
* Expanded and polished Polish translations across UI, validation,
flashes and forms for many modules (catalog, promotions, checkout,
shipping, payments, accounts, locale, products, tax, admin).
* Standardized wording, pluralization and length/format helper texts for
labels, errors and notifications (passwords, emails, shipments,
coupons).
* Added numerous user-facing messages and help texts; removed or
relocated some obsolete translation entries for consistency.
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
After removing choice_value from autocomplete types, the form values
are now entity IDs instead of codes. This commit updates Behat tests to:
- Use selectByName/removeByName instead of selectByValue/removeByValue
- Use getSelectedItems() or option[selected] text for assertions
- Compare with entity names instead of codes
- Add JS/non-JS driver handling for parent taxon selection
Refs: #17953
When choice_value is set to 'code' on Symfony UX Autocomplete types,
DoctrineChoiceLoader cannot use optimized getEntitiesByIds() query,
causing ALL entities to be loaded instead of just the selected ones.
This change removes choice_value from all UX Autocomplete types,
letting Symfony use the default entity ID which enables the optimized
WHERE id IN (...) query.
Refs: #17953
Fixes cache TTL bug where `expiresAfter()` was never called due to
incorrect callback signature.
Changes:
- Fix cache callback to accept `ItemInterface` and set proper TTL
- Refactor tests from Prophecy to PHPUnit native mocks
- Add tests for `supports()` method and null request handling
- Deprecate unused `$clock` constructor argument (will be removed in
3.0)
| Q | A
|-----------------|-----
| Branch? | 2.1 <!-- see the comment below -->
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no <!-- don't forget to update the UPGRADE-*.md file
-->
| Related tickets | fixes #X, partially #Y, mentioned in #Z
| License | MIT
<!--
- Bug fixes must be submitted against the 1.14 or 2.0 branch
- Features and deprecations must be submitted against the 2.1 branch
- Make sure that the correct base branch is set
To be sure you are not breaking any Backward Compatibilities, check the
documentation:
https://docs.sylius.com/en/latest/book/organization/backward-compatibility-promise.html
-->
<img width="800" height="593" alt="image"
src="https://github.com/user-attachments/assets/8060f6d7-e3b1-49a1-8eec-2cc71f39aaec"
/>
I noticed that the URL `translate.sylius.com` wasnt working anymore. So
i adjusted the title, url, and description with the latest informations
on how to contribute translations to sylius.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- Documentation
- Updated the issue template to replace the Translations contact with a
UI Translations contact, including a refreshed link and clearer guidance
for requesting or discussing UI translation updates.
- Improves discoverability and accuracy for contributors seeking
translation support.
- No impact on application behavior or user interface.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
| Q | A
|-----------------|-----
| Branch? | 2.1 <!-- see the comment below -->
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no <!-- don't forget to update the UPGRADE-*.md file
-->
| Related tickets | fixes #X, partially #Y, mentioned in #Z
| License | MIT
<!--
- Bug fixes must be submitted against the 1.14 or 2.0 branch
- Features and deprecations must be submitted against the 2.1 branch
- Make sure that the correct base branch is set
To be sure you are not breaking any Backward Compatibilities, check the
documentation:
https://docs.sylius.com/en/latest/book/organization/backward-compatibility-promise.html
-->
This pull request adds, and adjusts two translations for the float
attributes type in the AttributesBundle for German, and Austria German.
<img width="235" height="435" alt="2025-09-30 19_23_15-NVIDIA"
src="https://github.com/user-attachments/assets/4b925aea-c9b5-44be-9c34-0d1c9b6fbd1d"
/>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- New Features
- Added German label "Gleitkommazahl" for the “float” field in attribute
configuration and UI.
- Chores
- Harmonized German translations across DE, AT and CH locales by
replacing prior variants (e.g., "Fließkomma"/"Fließkommazahl") with
"Gleitkommazahl" for consistency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->