File: localization.py

package info (click to toggle)
python-pyramid-chameleon 0.3-8
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 356 kB
  • sloc: python: 976; makefile: 82
file content (28 lines) | stat: -rw-r--r-- 1,105 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from translationstring import ChameleonTranslate
from pyramid.interfaces import ITranslationDirectories
from pyramid.threadlocal import get_current_request
from pyramid.i18n import get_localizer

from .interfaces import IChameleonTranslate

def translator(msg):
    request = get_current_request()
    localizer = get_localizer(request)
    return localizer.translate(msg)

def maybe_add_translator(registry):
    # only conditionally register a translator if there are actually
    # translation directories (for performance reasons)
    if registry.queryUtility(ITranslationDirectories) is not None:
        ctranslate = ChameleonTranslate(translator)
        registry.registerUtility(ctranslate, IChameleonTranslate)

def includeme(config): # pragma: no cover
    """
    Adds renderers for .pt and .txt as well as registers a Chameleon
    translation utility
    """
    # use order=1000 to take effect very late (in particular, after
    # any effect that config.add_translation_dirs has)
    config.action(None, callable=maybe_add_translator, args=(config.registry,),
                  order=1000)