Problem/Motivation
Many efforts have been made to make Drupal 8 a great multilingual system. However, content types are never properly sorted when translations contain accentuated characters.
Content types are sorted using asort. Maybe we could set the locale beforehand.
Steps to reproduce
Install Drupal 8
Enable the following modules
- Configuration Translation
- Content Translation
- Interface Translation
- Language
Add a language (French in the example)
Add a two content types (Show and Zone)
Translate the Show content type to Émission
Switch languages (fr/admin/structure/types)
Expected behavior
To have a list in this order
- Article
- Basic page
- Émission
- Zone
What happened instead
List was in this order:
- Article
- Basic page
- Zone
- Émission
Proposed resolution
Use PHP Collator class to sort the items with a fallback to strnatcasecmp() function when PHP intl extension is not installed
Remaining tasks
User interface changes
API changes
NaturalSort::strnatcasecmp function is added
Data model changes
Release notes snippet
| Comment | File | Size | Author |
|---|---|---|---|
| #166 | current-es.png | 4.94 KB | nicxvan |
| #166 | current-en.png | 5.7 KB | nicxvan |
| #166 | main-es.png | 5.24 KB | nicxvan |
| #166 | main-en.png | 6.7 KB | nicxvan |
Issue fork drupal-2265487
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #1
nlambert commentedLabelling as a bug
Comment #2
nlambert commentedComment #13
catchThis could use a test case to start with.
Comment #16
sleitner commentedI think there are a lot more lists not sorted correctly when translated. In core
strnatcasecmp,usort,uasort,natcasesortis used a lot.Comment #17
sleitner commentedSorts all
ConfigEntityBundleBasebased lists with transliterationComment #18
sleitner commentedComment #19
sleitner commentedComment #20
sleitner commentedSorts all
ConfigEntityBundleBasebased lists with transliteration:Comment #21
sleitner commentedSorts all
ConfigEntityBasebased lists with transliterationComment #22
sleitner commentedComment #23
sleitner commentedComment #24
sleitner commentedComment #25
sleitner commentedSorts all
ConfigEntityBasebased lists with weight or transliterated label with test in ConfigEntityBaseUnitTest:DateFormat, EntityFormDisplay, EntityViewDisplay, EntityFormMode, EntityViewMode, FieldConfig, Block, Editor, FilterFormat, ImageStyle, ConfigurableLanguage, ContentLanguageSettings, ResponsiveImageStyle, SearchPage, Action, Menu, Tour, Role, View, Workflow, BlockContentType, CommentType, ContactForm, MediaType, NodeType, ShortcutSet, Vocabulary
Comment #26
sleitner commentedComment #27
sonam.chaturvedi commentedVerified and tested patch #24 on 10.1.x-dev. Patch applied successfully.
Test Steps:
1. Enable the following modules - Configuration Translation, Content Translation, Interface Translation, Language
2. Add a language (French in the example)
3. Add a two content types (Show and Zone)
4. Translate the Show content type to Émission
5. Switch languages (fr/admin/structure/types)
6. Verify content types are ordered alphabetically
7. Verify this for other bundle types - CommentType, ContactForm, MediaType, NodeType, ShortcutSet, Vocabulary, etc.
Test Results: Bundles with non-ascii character are ordered alphabetically.
Before Patch:

After Patch:

Comment #28
sleitner commentedComment #29
sleitner commentedComment #30
ameymudras commentedTested on 10.1.x and following is my observation
1. The issue summary is clear and explains the overall problem
2. Testing steps have been provided and was able to reproduce the issue
3. Patch #24 applies cleanly and the non-ASCII config entity sort correctly
4. Tests have been included and passes for #24
5. Did code review and no issues were identified
Marking this as RTBC, not including additional screenshots. Already provided in #27
Comment #31
longwaveA bit concerned about calling all these services inside the sort callback, because it feels like this is not going to be very performant in a case when there are hundreds of items or more to sort.
We could at least extract the transliteration service to a variable, and also skip transliterating the empty string if it is falsy? Is there a way of injecting at least the language ID, given that it never changes, or the transliteration service itself?
Also, do we have the same concerns about sorting in different languages as was raised in #3262017-90: Country list is not correctly sorted when it's localized with accents (e.g. German, Turkish)? Is transliterating the right thing to do in all cases?
Comment #32
sleitner commentedComment #33
sleitner commented@longwave : I remove transliteration and added the
Collatorlike in #3262017: Country list is not correctly sorted when it's localized with accents (e.g. German, Turkish).Comment #34
sleitner commentedTo prevent
MethodArgumentValueNotImplementedexception inCollator, language_idenis used ifintlextension is not installed.Comment #35
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #36
tanuj. commentedpatch #34 doesn't apply to drupal core and throws this error:
adding a new patch with reroll diff
Comment #37
longwaveThe new polyfill and intl extension have the same considerations as #3262017: Country list is not correctly sorted when it's localized with accents (e.g. German, Turkish) so this will need to wait for the decision over there first.
Comment #38
sleitner commentedReroll
Comment #40
sleitner commentedComment #41
smustgrave commentedPostponing on #3262017: Country list is not correctly sorted when it's localized with accents (e.g. German, Turkish).
Comment #42
smustgrave commentedAlso posted to the #needs-review-queue-initative slack channel so hopefully a framework manager can take a look at that one.
Comment #44
sleitner commentedUnpostpone it. #3262017: Country list is not correctly sorted when it's localized with accents (e.g. German, Turkish) is postponed because nobody wants to break the API.
Comment #46
sleitner commentedConverted to MR
Comment #47
smustgrave commentedCan the issue summary be updated to use the standard template please.
Hiding all patches for clarity as fix is in MR now.
Will need framework manager review for the package being added.
Comment #48
sleitner commentedComment #49
sleitner commentedComment #50
sleitner commentedComment #51
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #52
sleitner commentedComment #53
smustgrave commentedTook a look at the MR before pinging a framework manager and seems we are updating several packages that seem unrelated to this. Can those be reverted please.
Comment #54
sleitner commentedComment #55
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #56
sleitner commentedRerolled again
Comment #57
smustgrave commentedI can't make the call about the new package but the MR does fix the problem described in the issue summary. Moving to RTBC to put in front of the framework managers.
Comment #58
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #59
sleitner commentedRerolled again
Comment #60
catchIt's fine to add a new Symfony polyfill, (more a release management decision than a framework one) but there should really be a dependency evaluation in the issue summary here per https://www.drupal.org/about/core/policies/core-dependency-policies/depe... - can be very short because we know the answers in this case.
Comment #61
sleitner commentedDependency evaluation added to issue summary
Comment #62
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #63
sleitner commentedComment #64
smustgrave commentedRemarking as dependency eval has been added to summary.
Comment #65
quietone commentedI read the IS, comments and the MR. The only possible thing to consider is @longwave's point in #31 about calling services inside the sort callback "is not going to be very performant in a case when there are hundreds of items or more to sort". The transliteration service was removed from an earlier iteration of the MR but is still is getting the LanguageManager.
Leaving at RTBC.
Comment #66
quietone commentedComment #67
larowlan#31 still to be addressed.
MR no longer applies in the meantime.
Comment #68
sleitner commentedThe service is moved to a new function
public static function sortEntities(array &$entities): boolwhich calls a new compare function
public static function compare(ConfigEntityInterface $a, ConfigEntityInterface $b, \Collator $collator): int.The sort function
public static function sort(ConfigEntityInterface $a, ConfigEntityInterface $b)is now deprecated in all child classes.Comment #69
smustgrave commentedappears to have merge conflict but the tag no-needs-review-bot kept the bot from getting it.
Comment #70
sleitner commentedRerolled
Comment #71
larowlanLeft a review on the MR
Would it be simpler (less re-rolls etc) to get the new dependency in first in a separate issue?
Comment #72
sleitner commented@larowlan all references to 11.1 are replaced by 11.2
Comment #73
smustgrave commentedFeedback appears to be addressed.
Comment #74
longwaveDo we need to deprecate
sort()? Can we add the Collator as an optional argument to the existing method, and trigger a deprecation if it's not passed in?Comment #75
longwaveAlso there is a merge conflict, some out of scope changes in composer.json/lock.
Comment #76
sleitner commented@longwave you pointed in #31 about calling services inside the sort callback "is not going to be very performant in a case when there are hundreds of items or more to sort". The solution is to place the service outside the compare function
sort().Furthermore the function name
sort()does not reflect its function. It is just comparing the two values, it is not sorting anything.The merge conflict is resolved.
Comment #77
smustgrave commented@longwave going to go on a limb and say this is good. The lock file seems to only show the new dependency I believe.
Comment #78
sleitner commentedRerolled
Comment #79
sleitner commentedRerolled
Comment #80
catchUnfortunately this needs another rebase, the MR looks good to me.
Comment #81
sleitner commentedRebased. What else needs to be done before the merge?
Comment #83
catchI don't think there's anything left to do here, RTBC queue has been very busy (hard to keep under 100 issues even with over 100 commits/month and many more reviews).
Committed/pushed to 11.x, thanks!
Comment #85
acbramley commentedThis blows up sites that don't have the intl extension
I think the intention of this code was to check the extension was loaded before initialising the $collator but I can't quite follow:
Comment #86
acbramley commented::compare requires a Collator to be passed to it as well so we'll need to allow that the handle it being NULL?
I'm guessing this passed CI because that environment has the extension installed, but it's not listed as a requirement in core's composer.json...I missed the symfony polyfill in the MR though which does look like it works
Comment #87
catchJust seen #3516545: Symfony\Polyfill\Intl\Icu\Collator::compare() is not implemented let's revert this and recommit with that fixed.
Comment #89
catchReverted the commit and marked #3516545: Symfony\Polyfill\Intl\Icu\Collator::compare() is not implemented as duplicate. Let's fix that here and re-commit.
I think we should also open an upstream bug report against Symfony to implement the method, then we wouldn't need the checks added by that MR and could go back to the original code committed here.
Comment #90
catchComment #92
sleitner commentedFixed the problem in MR11697 and tested it here in tugboat. Please review.
Comment #93
sleitner commented@acbramley : Test manually or automatically? Manually: "View live preview" via Tugboat next to the MR on the top of this issue page. In the tugboat PHP intl extension is not installed, at the moment. Same in Simplytest.me
Comment #94
acbramley commentedI meant in automated tests, i.e to catch the bug that caused this to be reverted
Comment #95
penyaskitoNW per the test. Also not sure why changing the API is necessary here.
Comment #96
sleitner commentedAny idea how to test the fallback to symfony/polyfill-intl-icu ?
Comment #97
larowlanComment #98
sleitner commentedThe PHP
intlextension is compiled into PHP in the docker image. If the PHPintlextension should be optional, the base docker image has to be changed to installintlwith pecl.I compared the composer.json
ext-*requirements and the extensions installed in the gitlab docker image. There are many PHP extensions installed that are not listed as required by core and its dependencies. Doesn't this lead to potential post-installation problems on systems that don't have the usual large number of PHP extensions installed (e.g simplytest.me)? If the PHP extensions are only suggested,, they should be disableable for testing.Comment #100
sleitner commentedsymfony/polyfill-intl-icu:^1,34now implementsCollator::compareComment #101
smustgrave commentedsorry this one needs a rebase now.
Comment #102
sleitner commentedRebased, needs review
Comment #103
smustgrave commentedBelieve this one is ready again. Would least be good to get into 12
Comment #104
alexpottThe solution of adding Symfony's intl polyfill here feels really odd because we don't actually use it - we only use it to create a collator class that is then never used - because if the intl extension is not installed we fallback to
strnatcasecmp. Why are we not comparing using Symfony's collator?Comment #105
alexpottAnother thing about the current solution is arguably you're going to get better sorting on english sites without intl installed.
The output;
Link to code: https://3v4l.org/ZbOPJ#v8.4.16
Comment #106
alexpottSo there's a fix for this - we need to do
$collator->setAttribute(Collator::NUMERIC_COLLATION, Collator::ON);See https://3v4l.org/rdO0q#v8.4.16Obviously symfony's collator doesn't support this so I think that's yet another argument for not using it.
Comment #107
alexpottHere's what I think we should do.
Comment #108
sleitner commentedComment #109
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #110
sleitner commentedComment #111
smustgrave commentedSince I can't close threads I left check marks on them but from what I can tell feedback was addressed
My only comment was the location of the deprecation test but since it'll go away in 13 I'm going to assume none issue
Comment #112
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #113
sleitner commentedComment #114
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. The merge request has merge conflicts and cannot be merged. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #115
sleitner commentedComment #116
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #117
sleitner commentedComment #118
alexpottI've removed the dependency evaluation as it is no longer relevant but we also need to update the issue summary to reflect what is changing here. Can be set back to RTBC once that is done.
Comment #119
sleitner commentedComment #120
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #121
sleitner commentedComment #122
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #123
sleitner commentedComment #124
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #125
sleitner commentedComment #127
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #128
acbramley commentedSaving @sleitner another rebase/conflict resolution in the baseline. Will chase some committers to see if we can get this in finally.
Comment #129
acbramley commentedComment #130
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. The merge request has merge conflicts and cannot be merged. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #131
sleitner commentedComment #132
smustgrave commented@sleitner you rock for keeping up with all the rebases
Comment #133
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #134
sleitner commentedComment #135
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #136
alexpottOne thing I keep pondering with this issue is does the string comparison stuff belong in the config system or somewhere more generic - like this is probably an issue when sorting other things using strnatcasecmp... for example:
All of these proably should be using a locale aware version of strnatcasecmp() where possible.
Comment #137
sleitner commented@alexpott I think a helper
\Drupal\Component\Utility\SortArraywould be a good idea to make it more generic.For example like this:
I think there are more array sorts which use non-optimal compare helpers. But this is a follow-up.
Comment #138
sleitner commented@alexpott Should the other things using strnatcasecmp be handled in a follow-up?
I added SortArray::sortByString and SortArray::createSortCollator
Comment #139
alexpott@sleitner nice work! And yes fixing the other places is all follow-up material.
Comment #140
sleitner commented@alexpott \Drupal::service() is moved back to the entity and documentation is improved
Comment #141
sleitner commentedComment #142
sleitner commentedComment #143
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. The merge request has merge conflicts and cannot be merged. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #144
sleitner commentedComment #145
acbramley commentedI've reviewed all the changes from @alexpott's review and they're looking good. I think this should be good to go now
Comment #148
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #149
sleitner commentedComment #150
alexpottJust a few comment nits added to the MR - most with suggestions...
Comment #151
sleitner commentedComment #153
alexpottI've been reviewing this code for quite a while and @sleitner has done an amazing job of keeping up with all my reviews. Thanks for your patience and persistence.
While reviewing the code I've always had two nagging doubts at the back of my mind:
Soooo.... I'm proposing we go for a different solution. In this issue we add a new utility class that provides a container and language aware alternative to strnatcasecmp() and we convert config entities to use it. And then in a follow-up we introduce a PHPCS rule or PHPStan rule to detect strnatcasecmp() and tell people to use the drop in replacement. See the new MR https://git.drupalcode.org/project/drupal/-/merge_requests/16947
Comment #154
alexpottFor example, I think the new MR will make solving #3262017: Country list is not correctly sorted when it's localized with accents (e.g. German, Turkish) quite easy - we either swap to the new method supplied here - or we add a natcasesort to the new utility class for even more win.
Comment #155
alexpottAs the collators are stored in a static class we need to look at the memory usage. A collator takes up 64 bytes and it is highly unlikely the language will be swapping around a lot so I don't think this is an issue.
Comment #156
sleitner commentedThe new solution sounds good. Will there be performance issues if the
languageManageris called every time a comparison is made in large lists? (#31)I readded the new
NaturalSort::strnatcasecmp()toLanguageandBlock.A new
NaturalSort::natcasesort()could call thelanguageManageroutside of the comparison only once.Comment #157
alexpott@sleitner - thanks for fixing up Block - nice catch.
I'm not concerned about performance the current langcode is cached in both language managers provided by core.
Comment #158
sleitner commentedAdded
NaturalSort::natcasesort()with testsComment #159
sleitner commentedComment #161
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #162
sleitner commentedI removed NaturalSort::natcasesort for now
Comment #163
alexpottThis looks great now. Definitely file a follow-up to add it back and test it and replace natcasesort usage everywhere.
I'm updating / deleting the CRs where appropriate.
Comment #164
sleitner commentedComment #165
nicxvan commentedI'm working through testing this, I'll share my notes in a bit, but for now I created the follow up mentioned in 163.
I added a note to the CR about the natural sort numbers.
Comment #166
nicxvan commentedTook a bit of effort to test, I was not seeing the expected results, I think there might be something going on separately there so I wouldn't read too much into it.
I did this on a fresh install and it worked both on the english only version and a fresh install that had both english and spanish enabled.
I created several content types one with Émission then when I added the spanish translation I translated it to an ñ.
I've attached 4 screenshots:
Main in English


Main in Spanish
This branch in English


This branch in Spanish
I really wish we could test this with and without the intl extension in CI, but I think it's fair to leave out here.
This is a great improvement even for just single language sites!
I read through the MR a couple of times and didn't see anything that hadn't already been addressed in the numerous revisions.
Comment #167
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #168
sleitner commentedComment #169
alexpottCommitted and pushed 8cd44d484e3 to main. Thanks!
Given we're in beta freeze for both 11.5.0 and 12.0.0 - I've not backported this. This would be safe to backport as there is no API change here only addition so we might consider doing that once the freeze is over to allow contrib to adopt the fix earlier.
Comment #172
longwaveLet's consider backporting this while we are in beta for 11.5 and 12.0.