
Before it was checking the mo directory exists which may fail if it exists but does not have a specific domain file. Signed-off-by: Aline Manera <alinefm@linux.vnet.ibm.com> --- src/wok/message.py | 2 +- src/wok/template.py | 19 +++++++------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/wok/message.py b/src/wok/message.py index 56cd022..a335881 100644 --- a/src/wok/message.py +++ b/src/wok/message.py @@ -73,7 +73,7 @@ class WokMessage(object): # do translation domain = app.root.domain paths = app.root.paths - lang = validate_language(get_lang()) + lang = validate_language(get_lang(), domain) try: translation = gettext.translation(domain, paths.mo_dir, [lang]) diff --git a/src/wok/template.py b/src/wok/template.py index 43a34db..b033394 100644 --- a/src/wok/template.py +++ b/src/wok/template.py @@ -22,10 +22,9 @@ import cherrypy import errno import json +import os import time from Cheetah.Template import Template -from glob import iglob - from wok import config as config from wok.config import paths @@ -60,15 +59,10 @@ def get_accept_language(): return langs -def get_support_languages(): - mopath = "%s/*" % paths.mo_dir - return [path.rsplit('/', 1)[1] for path in iglob(mopath)] - - -def validate_language(langs): - supportLangs = get_support_languages() +def validate_language(langs, domain): for lang in langs: - if lang in supportLangs: + filepath = os.path.join(paths.mo_dir, lang, domain + '.mo') + if os.path.exists(filepath): return lang return "en_US" @@ -96,11 +90,12 @@ def can_accept_html(): def render_cheetah_file(resource, data): paths = cherrypy.request.app.root.paths + domain = cherrypy.request.app.root.domain filename = paths.get_template_path(resource) try: params = {} - lang = validate_language(get_lang()) - gettext_conf = {'domain': cherrypy.request.app.root.domain, + lang = validate_language(get_lang(), domain) + gettext_conf = {'domain': domain, 'localedir': paths.mo_dir, 'lang': [lang]} params['lang'] = gettext_conf -- 2.9.3