[Kimchi-devel] [PATCH] [Wok] Bug fix #192: Check the specific domain file exists on mo directory

Aline Manera alinefm at linux.vnet.ibm.com
Tue Apr 4 15:58:50 UTC 2017


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 at 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



More information about the Kimchi-devel mailing list