diff --git a/news/3985.chore b/news/3985.chore new file mode 100644 index 0000000..84968a3 --- /dev/null +++ b/news/3985.chore @@ -0,0 +1,2 @@ +Implemented sorting of ReallyUserFriendlyTypes using `unidecode`. +[rohnsha0] \ No newline at end of file diff --git a/plone/app/vocabularies/types.py b/plone/app/vocabularies/types.py index 73f2d8e..a921e9c 100644 --- a/plone/app/vocabularies/types.py +++ b/plone/app/vocabularies/types.py @@ -1,6 +1,7 @@ from Acquisition import aq_get from plone.app.vocabularies import PermissiveVocabulary from Products.CMFCore.utils import getToolByName +from unidecode import unidecode from zope.component.hooks import getSite from zope.deprecation import deprecate from zope.i18n import translate @@ -298,9 +299,12 @@ def __call__(self, context): for t in ttool.listContentTypes() if t not in BAD_TYPES ] - items.sort() - items = [SimpleTerm(i[1], i[1], i[0]) for i in items] - return PermissiveVocabulary(items) + + # Sort items based on the translated title using unidecode + items.sort(key=lambda x: unidecode(x[0]).lower()) + + terms = [SimpleTerm(i[1], i[1], i[0]) for i in items] + return PermissiveVocabulary(terms) ReallyUserFriendlyTypesVocabularyFactory = ReallyUserFriendlyTypesVocabulary() diff --git a/setup.py b/setup.py index 613c086..b479aee 100644 --- a/setup.py +++ b/setup.py @@ -55,6 +55,7 @@ "plone.uuid", "pytz", "setuptools", + "unidecode", "z3c.formwidget.query", "zope.browser", "zope.globalrequest",