Skip to content

Instantly share code, notes, and snippets.

@mmerickel
Created November 5, 2016 17:27
Show Gist options
  • Save mmerickel/ddd444b2cf3132fb5a2d2864ebea3d0d to your computer and use it in GitHub Desktop.
Save mmerickel/ddd444b2cf3132fb5a2d2864ebea3d0d to your computer and use it in GitHub Desktop.
localized routes in pyramid
def add_localized_route(config, name, pattern, factory=None, pregenerator=None, **kw):
orig_factory = factory
def wrapper_factory(request):
lang = request.matchdict['lang']
# determine if this is a supported lang and convert it to a locale,
# likely defaulting to your default language if the requested one is
# not supported by your app
request._LOCALE_ = lang
if orig_factory:
return orig_factory(request)
orig_pregenerator = pregenerator
def wrapper_pregenerator(request, elements, kw):
if 'lang' not in kw:
# not quite right but figure out how to convert request._LOCALE_ back into a language url
kw['lang'] = request._LOCALE_
if orig_pregenerator:
return orig_pregenerator(elements, kw)
return elements, kw
if pattern.startswith('/'):
pattern = pattern[1:]
pattern = '/{lang}/' + pattern
config.add_route(name, pattern, factory=factory, pregenerator=pregenerator, **kw)
def inclueme(config):
config.add_directive('add_localized_route', add_localized_route)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment