1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
import gettext
import sys
class myLocalGettext:
def __init__(self, lang):
self.language = lang
def translation(self):
domain = gettext._current_domain
localedir = gettext._localedirs.get(domain, None)
if self.language == "":
t = gettext.translation(domain, localedir)
else:
t = gettext.translation(
domain, localedir, languages=[self.language])
return t
def maketext(self, msg):
if not isinstance(msg, str):
return str(msg, 'utf-8')
return msg
def ungettext(self, msgid1, msgid2, n):
# unicoded ngettext
msgid1 = self.maketext(msgid1)
msgid2 = self.maketext(msgid2)
try:
t = self.translation()
except IOError:
if n == 1:
return msgid1
else:
return msgid2
if sys.version_info >= (3, 0):
return t.ngettext(msgid1, msgid2, n)
else:
return t.ungettext(msgid1, msgid2, n)
def ugettext(self, message):
# unicoded gettext
message = self.maketext(message)
try:
t = self.translation()
except IOError:
return message
if sys.version_info >= (3, 0):
return t.gettext(message)
else:
return t.ugettext(message)
myGettext = myLocalGettext('')
def n_(x):
return x
def fix_gettext():
gettext.ugettext = myGettext.ugettext
gettext.ungettext = myGettext.ungettext
fix_gettext()
_ = gettext.ugettext
ungettext = gettext.ungettext
|