Skip to content

Instantly share code, notes, and snippets.

@mmerickel
Created April 24, 2017 22:17
Show Gist options
  • Save mmerickel/8c561f2141d2122e6f2034b3424e3a02 to your computer and use it in GitHub Desktop.
Save mmerickel/8c561f2141d2122e6f2034b3424e3a02 to your computer and use it in GitHub Desktop.
localizable strings
import jinja2
from pyramid.renderers import render
from pyramid.threadlocal import get_current_request
from translationstring import TranslationString
import uuid
from myapp.utils.i18n import DEFAULT_DOMAIN
log = __import__('logging').getLogger(__name__)
def includeme(config):
config.include('pyramid_jinja2')
config.add_jinja2_search_path('myapp:templates')
config.add_settings({
'jinja2.i18n.domain': DEFAULT_DOMAIN,
'jinja2.filters': {
'tojson': tojson_filter,
},
'jinja2.finalize': translate_value,
})
config.add_subscriber(renderer_globals, 'pyramid.interfaces.IBeforeRender')
def renderer_globals(event):
request = event['request']
event['url'] = request.route_url
@jinja2.contextfilter
def tojson_filter(context, value):
request = context.get('request') or get_current_request()
return jinja2.Markup(render('json', value, request=request))
@jinja2.contextfunction
def translate_value(ctx, value):
if isinstance(value, TranslationString):
request = ctx.get('request') or get_current_request()
return request.localizer.translate(value)
return value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment