Package: plone.app.multilingualindexes
Indexes optimized to query multilingual content made with plone.app.multilingual.FeaturestgpathIndex (Translation Group Path)Utility and index to get the path of an item as UUIDs of its translationgroup.language_or_fallbackIndexIndex to query items and get one fallback if not available in the current language.
Fallbacks can be configured in control-panel and are stored in the registry.Integration withCollectionsBoth indexes are available in Collections and other places usingplone.app.querystringunder the hood.
Both indexes do only need activation.tgpathis available as a switchLanguage independent location.
If this is selected, the normal path will be converted to a tgpath!
If no path is selected this switch has no effect.language_or_fallbackis available asFallback languages.
If a path is selected together with this option, the path will be converted to atgpath.If thetgpathorlanguage_or_fallbackis used in a Collection, thepathwill be set to the portal.
Thus the usal automatically added fixation to the currentINavigationRootwont be set,
because language root folders are navigation roots.Behind the scenesFallback IndexIt is in fact a simple FieldIndex.
Fallback detection happens on index time.
On query time it has the same functionality and performance as the normal Language index.Translation Group IndexIt is in fact a normal ExtendendPathIndex.
Just the path it indexes consists out of the translation group uids.
If an item is not translatable and thus is not part of an translationgroup,
then its normal id is taken as patyh element.
Path example:/Plone/f5843e426b5d47cdb44af587b322f7ea/320b1ffbf0f64603803043d48bd57516.In order to query the index, you need to use the translationgroup path instead of the id path:from plone.app.multilingualindexes.tgpath import tg_path
import plone.api

plone.api.content.find(
    tgpath='/'.join(tg_path(context)),
    language_or_fallback=plone.api.portal.get_current_language()
)InstallationInstall plone.app.multilingualindexes by adding it to your buildout:[buildout]

...

eggs =
    plone.app.multilingualindexesand then runningbin/buildoutContributeIssue Tracker:https://github.com/plone/plone.app.multilingualindexes/issuesSource Code:https://github.com/plone/plone.app.multilingualindexesLicenseThe project is licensed under the GPLv2.ContributorsJens W. Klein,jk@kleinundpartner.atPeter Holzer,peter.holzer@agitator.comPatrick Gerken,gerken@patrick-gerken.deGeorg “Gogo” BernhardChangelog3.0.2 (2021-11-22)Make request caching more test friendly (where there is no request). [jensens]3.0.1 (2021-11-17)Fix import for Plone 6 and add CI [jensens]3.0.0 (2021-11-16)Drop Python 2 Support [jensens]Switch CI to GitHub Actions.
[gogobd]InitializeClass has moved, fixing issuehttps://github.com/plone/plone.app.multilingualindexes/issues/13[gogobd]2.1 (2020-08-04)Patch that allows for using multiple paths, fixing issuehttps://github.com/plone/plone.app.multilingualindexes/issues/9[gogobd]User PATH_INDICES as suggested by jensens
[gogobd]2.0 (2019-07-12)Patch CMFCore because ofhttps://github.com/zopefoundation/Products.CMFCore/issues/79[jensens]Fix bugs on rename/move/delete (wrong fallbacks)
[jensens]Drop support of Plone 5.1
[jensens]Python 3 compatibility
[jensens]Refactor index to be less complex on indexing.
[jensens]Bugfix: Use latest plone.app.multilingual and add subscribers to ensure in-/rein-/unindexing.
[jensens]Fixing “RuntimeError: the bucket being iterated changed size” (issue #3)
[gogobd]Depend onProducts.CMFPloneinstead ofPloneto not fetch unnecessary dependencies.
[thet]1.0 (2016-10-15)Initial release.
[jensens]