Update translator.

master3.3
Mike Hiretsky 13 years ago
parent 02048353b6
commit e1fe3cd6f4

@ -31,6 +31,10 @@ from encrypt import getHash
from calculate.lib.cl_datavars import VariableError
import sys
from calculate.lib.cl_lang import setLocalTranslate
setLocalTranslate('cl_lib',sys.modules[__name__])
class fillVars(varsShare):
"""Auxilary object for creating variables

@ -15,6 +15,7 @@
# limitations under the License.
import os, gettext
import threading
from cl_overriding import __findFileMO
class GlobalParam(type):
@ -50,22 +51,19 @@ class lang:
lang(_local="calc",__setLang=sys.modules[__name__])
"""
__metaclass__ = GlobalParam
def __init__(self,l=''):
def __init__(self):
self.nameDomain = self.GP[0]
#self.nameDomain = ''
self.__catalog = None
env = os.environ
# language autodetect
if l == "" and env.has_key('LANG'):
l = env['LANG'].split('.')[0].split("_")[0]
# dictionary modules
self.__modnames = {}
# translate language for all modules
self.__l = l
self._translators = {}
def __translate(self,message):
"""Method return message without changes"""
return message
return self.__gettranslate()(message)
def setLanguage(self,module):
"""Set translate language for modules 'module'.
@ -89,32 +87,30 @@ class lang:
if module.__name__ in self.__modnames.keys():
return True
if self.nameDomain == '':
if module.__name__ == "__main__":
nameDomain = module.__file__.split('.')[0]
else:
nameDomain = module.__name__
else:
nameDomain = self.nameDomain
module._ = self.__translate
if self.__l == 'en':
module._ = self.__translate
ret = 1
def __gettranslate(self):
env = os.environ
curThread = threading.currentThread()
if hasattr(curThread,"lang"):
l = curThread.lang
elif env.has_key('LANG'):
l = env['LANG'].split('.')[0].split("_")[0]
if l in self._translators:
return self._translators[l]
if l == 'en':
trans = lambda x:x
else:
la = []
la.append(self.__l)
if gettext.find(nameDomain,self.__catalog,la):
la = [l]
reload(gettext)
if gettext.find(self.nameDomain,self.__catalog,la):
"""Если найден словарь то инициализируем переводчик"""
transl = gettext.translation(nameDomain,self.__catalog,la)
#module._ = transl.ugettext
module._ = transl.gettext
ret = 1
transl = gettext.translation(self.nameDomain,self.__catalog,la)
trans = transl.gettext
else:
module._ = self.__translate
ret = 0
self.__modnames[module.__name__] = ret
return ret
trans = lambda x:x
self._translators[l] = trans
return trans
def getTranslatorByName(self,namemodule):
"""Method for detect already imported translate modules

Loading…
Cancel
Save