summaryrefslogtreecommitdiffstats
path: root/Lib/gettext.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/gettext.py')
-rw-r--r--Lib/gettext.py26
1 files changed, 8 insertions, 18 deletions
diff --git a/Lib/gettext.py b/Lib/gettext.py
index d1f20bf..c80b9c8 100644
--- a/Lib/gettext.py
+++ b/Lib/gettext.py
@@ -304,26 +304,16 @@ class GNUTranslations(NullTranslations):
# cause no problems since us-ascii should always be a subset of
# the charset encoding. We may want to fall back to 8-bit msgids
# if the Unicode conversion fails.
+ charset = self._charset or 'ascii'
if b'\x00' in msg:
# Plural forms
msgid1, msgid2 = msg.split(b'\x00')
tmsg = tmsg.split(b'\x00')
- if self._charset:
- msgid1 = str(msgid1, self._charset)
- tmsg = [str(x, self._charset) for x in tmsg]
- else:
- msgid1 = str(msgid1)
- tmsg = [str(x) for x in tmsg]
- for i in range(len(tmsg)):
- catalog[(msgid1, i)] = tmsg[i]
+ msgid1 = str(msgid1, charset)
+ for i, x in enumerate(tmsg):
+ catalog[(msgid1, i)] = str(x, charset)
else:
- if self._charset:
- msg = str(msg, self._charset)
- tmsg = str(tmsg, self._charset)
- else:
- msg = str(msg)
- tmsg = str(tmsg)
- catalog[msg] = tmsg
+ catalog[str(msg, charset)] = str(tmsg, charset)
# advance to next entry in the seek tables
masteridx += 8
transidx += 8
@@ -359,7 +349,7 @@ class GNUTranslations(NullTranslations):
if tmsg is missing:
if self._fallback:
return self._fallback.gettext(message)
- return str(message)
+ return message
return tmsg
def ngettext(self, msgid1, msgid2, n):
@@ -369,9 +359,9 @@ class GNUTranslations(NullTranslations):
if self._fallback:
return self._fallback.ngettext(msgid1, msgid2, n)
if n == 1:
- tmsg = str(msgid1)
+ tmsg = msgid1
else:
- tmsg = str(msgid2)
+ tmsg = msgid2
return tmsg