Created
April 24, 2017 22:17
-
-
Save mmerickel/8c561f2141d2122e6f2034b3424e3a02 to your computer and use it in GitHub Desktop.
localizable strings
This file contains hidden or 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
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