Skip to content

Instantly share code, notes, and snippets.

@whitmo
Created April 8, 2010 14:36
Show Gist options
  • Select an option

  • Save whitmo/360126 to your computer and use it in GitHub Desktop.

Select an option

Save whitmo/360126 to your computer and use it in GitHub Desktop.
def configureTranslations(config):
from zope.component import provideUtility
from zope.i18n.translationdomain import TranslationDomain
from zope.i18n.interfaces import ITranslationDomain
from zope.i18n.gettextmessagecatalog import GettextMessageCatalog
import tostyle4you
import formencode
import s4u.engine
import sys
import os.path
domains={}
for package in [ "formencode", "s4u.engine", "tostyle4you" ] :
locale_directory=os.path.join(sys.modules[package].__path__[0], "i18n")
locales=[(dir, os.path.join(locale_directory, dir)) for dir in os.listdir(locale_directory)]
for (language, locale_directory) in locales:
if language.startswith(".") or not os.path.isdir(locale_directory):
continue
msgdir=os.path.join(locale_directory, "LC_MESSAGES")
for domain_file in os.listdir(msgdir):
if not domain_file.endswith(".mo"):
continue
domain=domain_file[:-3]
if domain not in domains:
domains[domain]={}
domains[domain][language]=os.path.join(msgdir, domain_file)
for (domain, catalogs) in domains.items():
tdomain=TranslationDomain(domain)
for (language, filename) in catalogs.items():
tdomain.addCatalog(GettextMessageCatalog(language, domain, filename))
provideUtility(tdomain, ITranslationDomain, name=domain)
locale = config.get("2style4you.language", "nl_NL")
(language, territory) = babel.parse_locale(locale)[:2]
import formencode.api
from zope.i18n import translate
def ft(msg):
return translate(msg, domain="FormEncode", target_language=language, default=msg)
formencode.api._stdtrans=ft
config['lang'] = config['pylons.request_options']['language'] = language
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment