faster languages.py, still disabled plurals

This commit is contained in:
mdipierro
2012-08-27 07:41:34 -05:00
parent 47dcc8badd
commit e5568aaa82
2 changed files with 42 additions and 36 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.00.0 (2012-08-27 01:42:58) dev Version 2.00.0 (2012-08-27 07:41:29) dev
+41 -35
View File
@@ -35,10 +35,21 @@ is_gae = settings.global_settings.web2py_runtime_gae
DEFAULT_ACCEPT_LANGUAGE = 'en' DEFAULT_ACCEPT_LANGUAGE = 'en'
def safe_eval(text):
if text.strip():
try:
import ast
return ast.literal_eval(text)
except ImportError:
return eval(text,{},{})
return None
# used as default filter in translator.M() # used as default filter in translator.M()
markmin = lambda s: render(regex_param.sub( def markmin_aux(m):
lambda m: '{' + markmin_escape(m.group('s')) + '}', return '{%s}' % markmin_escape(m.group('s'))
s), sep='br', autolinks=None, id_prefix='' ) def markmin(s):
return render(regex_param.sub(markmin_aux,s),
sep='br', autolinks=None, id_prefix='')
NUMBERS = (int,long,float) NUMBERS = (int,long,float)
@@ -149,18 +160,16 @@ def read_dict_aux(filename):
fp.close() fp.close()
# clear cache of processed messages: # clear cache of processed messages:
clear_cache(tcache.setdefault(filename, ({}, allocate_lock()))) clear_cache(tcache.setdefault(filename, ({}, allocate_lock())))
if not lang_text.strip():
return {}
try: try:
return eval(lang_text) return save_eval(lang_text) or {}
except Exception, e: except Exception, e:
status='Syntax error in %s (%s)' % (filename, e) status = 'Syntax error in %s (%s)' % (filename, e)
logging.error(status) logging.error(status)
return {'__corrupted__':status} return {'__corrupted__':status}
def read_dict(filename): def read_dict(filename):
""" return dictionary with translation messages """
return dictionary with translation messages
""" """
return getcfs('lang:'+filename, filename, return getcfs('lang:'+filename, filename,
lambda: read_dict_aux(filename)) lambda: read_dict_aux(filename))
@@ -625,40 +634,37 @@ class translator(object):
languages = regex_language.findall(languages.lower()) languages = regex_language.findall(languages.lower())
elif not languages or languages[0] is None: elif not languages or languages[0] is None:
languages = [] languages = []
if languages: for lang in languages:
for lang in languages: if lang+'.py' in self.filenames:
if lang+'.py' in self.filenames: language = lang
language = lang langfile = language+'.py'
langfile = language+'.py' break
break elif len(lang)>5 and lang[:5]+'.py' in self.filenames:
elif len(lang)>5 and lang[:5]+'.py' in self.filenames: language = lang[:5]
language = lang[:5] langfile = language+'.py'
langfile = language+'.py' break
break elif len(lang)>2 and lang[:2]+'.py' in self.filenames:
elif len(lang)>2 and lang[:2]+'.py' in self.filenames: language = lang[:2]
language = lang[:2] langfile = language+'.py'
langfile = language+'.py' break
break else:
if 'default.py' in self.filenames:
language = DEFAULT_ACCEPT_LANGUAGE
langfile = 'default.py'
else: else:
if 'default.py' in self.filenames: language = DEFAULT_ACCEPT_LANGUAGE
language = DEFAULT_ACCEPT_LANGUAGE langfile = None
langfile = 'default.py' self.accepted_language = language
else: if langfile:
language = DEFAULT_ACCEPT_LANGUAGE
langfile = None
if languages and langfile:
self.language_file = ospath.join(self.langpath,langfile) self.language_file = ospath.join(self.langpath,langfile)
self.t = read_dict(self.language_file) self.t = read_dict(self.language_file)
self.cache = tcache.setdefault(self.language_file, self.cache = tcache.setdefault(self.language_file,
({},allocate_lock())) ({},allocate_lock()))
# self.set_plural(language)
self.accepted_language = language
else: else:
self.accepted_language = DEFAULT_ACCEPT_LANGUAGE
self.language_file = None self.language_file = None
self.cache = tcache[None]
self.t = {} self.t = {}
# self.set_plural(DEFAULT_ACCEPT_LANGUAGE) self.cache = tcache[None]
# self.set_plural(language)
return languages return languages
def __call__(self, message, symbols={}, language=None, lazy=None): def __call__(self, message, symbols={}, language=None, lazy=None):