Created
May 23, 2018 14:51
-
-
Save pgrunewald/dcaa9d123dda64dc00873da8d9e35829 to your computer and use it in GitHub Desktop.
Implementing an own language negotiator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<configure> | |
<!-- Per request language overriding --> | |
<adapter | |
factory=".negotiate_language.NegotiateLanguage" | |
for="* your.addon.interfaces.IAddonInstalled" | |
provides="Products.PloneLanguageTool.interfaces.INegotiateLanguage" | |
/> | |
</configure> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"""Language Negotiator to allow overriding language per request.""" | |
from Products.PloneLanguageTool.interfaces import INegotiateLanguage | |
from Products.PloneLanguageTool.LanguageTool import NegotiateLanguage as NegotiateLanguageBase | |
from zope.interface import implements | |
class NegotiateLanguage(object): | |
"""Use default language negotiation, but allow overriding in certain requests.""" | |
implements(INegotiateLanguage) | |
def __init__(self, site, request): | |
"""Setup the current language information.""" | |
base_negotiate = NegotiateLanguageBase(site, request) | |
self.default_language = base_negotiate.default_language | |
self.language_list = base_negotiate.language_list | |
# Put here your custom logic to decide which language to use, | |
# e.g. | |
forced_language = request.get('force_language') | |
# -- OR -- | |
# if request.get('force_default_language'): | |
# forced_language = default_language | |
# Some sanity check... | |
if forced_language and forced_language in self.language_list: | |
self.language = forced_language | |
else: | |
self.language = base_negotiate.language |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment