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