Delete the wmltools3.Translation class
Appears to be unused, and is still Python2 code. To be Python3, these lines need to change: - f = file(fn) + f = open(fn, encoding="utf-8") - gettext = f.read().decode("utf8") + gettext = f.read() Even knowing how to make it work, it still doesn't seem useful to keep. wmlunits uses html_output.Translation, but that's not this class. It's a wrapper around Python's standard gettext library, in html_output.py.
This commit is contained in:
parent
de48a16034
commit
c930a7e476
1 changed files with 0 additions and 85 deletions
|
@ -1091,91 +1091,6 @@ class CrossRef:
|
|||
except KeyError:
|
||||
return 0
|
||||
|
||||
#
|
||||
# String translations from po files. The advantage of this code is that it
|
||||
# does not require the gettext binary message catalogs to have been compiled.
|
||||
# The disadvantage is that it eats lots of core!
|
||||
#
|
||||
|
||||
|
||||
class TranslationError(Exception):
|
||||
def __init__(self, textdomain, isocode):
|
||||
self.isocode = isocode
|
||||
self.textdomain = textdomain
|
||||
def __str__(self):
|
||||
return "No translations found for %s/%s.\n" % (
|
||||
self.textdomain, self.isocode)
|
||||
|
||||
class Translation(dict):
|
||||
"Parses a po file to create a translation dictionary."
|
||||
def __init__(self, textdomain, isocode, topdir=""):
|
||||
self.textdomain = textdomain
|
||||
self.isocode = isocode
|
||||
self.gettext = {}
|
||||
if self.isocode != "C":
|
||||
isocode2 = isocode[:isocode.rfind("_")]
|
||||
for code in [isocode, isocode2]:
|
||||
fn = "po/%s/%s.po" % (textdomain, code)
|
||||
if topdir: fn = os.path.join(topdir, fn)
|
||||
try:
|
||||
f = file(fn)
|
||||
break
|
||||
except IOError:
|
||||
pass
|
||||
else:
|
||||
raise TranslationError(textdomain, self.isocode)
|
||||
|
||||
expect = False
|
||||
fuzzy = "#, fuzzy\n"
|
||||
gettext = f.read().decode("utf8")
|
||||
matches = re.compile(r'(msgid|msgstr)((\s*".*?")+)').finditer(gettext)
|
||||
msgid = ""
|
||||
for match in matches:
|
||||
text = "".join(re.compile('"(.*?)"').findall(match.group(2)))
|
||||
if match.group(1) == "msgid":
|
||||
msgid = text.replace("\\n", "\n")
|
||||
expect = gettext[match.start(1) - len(fuzzy):match.start(1)] != fuzzy
|
||||
elif expect:
|
||||
self.gettext[msgid] = text.replace("\\n", "\n")
|
||||
def get(self, key, dflt):
|
||||
if self.isocode == "C":
|
||||
if key:
|
||||
return key[key.find("^") + 1:]
|
||||
return "?"
|
||||
else:
|
||||
t = self.gettext.get(key, dflt)
|
||||
if not t:
|
||||
if key:
|
||||
return key[key.find("^") + 1:]
|
||||
return "?"
|
||||
return t
|
||||
def __getitem__(self, key):
|
||||
if self.isocode == "C":
|
||||
return key
|
||||
else:
|
||||
return self.gettext[key]
|
||||
def __contains__(self, key):
|
||||
if self.isocode == "C":
|
||||
return True
|
||||
else:
|
||||
return key in self.gettext
|
||||
|
||||
class Translations:
|
||||
"Wraps around Translation to support multiple languages and domains."
|
||||
def __init__(self, topdir = ""):
|
||||
self.translations = {}
|
||||
self.topdir = topdir
|
||||
def get(self, textdomain, isocode, key, default):
|
||||
t = (textdomain, isocode)
|
||||
if not t in self.translations:
|
||||
try:
|
||||
self.translations[t] = Translation(textdomain, isocode, self.topdir)
|
||||
except TranslationError as e:
|
||||
print(str(e), file=sys.stderr)
|
||||
self.translations[t] = Translation(textdomain, "C", self.topdir)
|
||||
result = self.translations[t].get(key, default)
|
||||
return result
|
||||
|
||||
## Namespace management
|
||||
#
|
||||
# This is the only part of the code that actually knows about the
|
||||
|
|
Loading…
Add table
Reference in a new issue