From 2d382274cd684d68c5288e2abc8b0a8aefdb5c97 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Sun, 17 Mar 2019 07:46:31 -0400 Subject: [PATCH] py3: gettext no longer has a unicode= argument This is unicode by default "since there's no point in translating to byte strings." Good riddance. --- src/calibre/utils/localization.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/calibre/utils/localization.py b/src/calibre/utils/localization.py index 7f42282a47..79eafd1754 100644 --- a/src/calibre/utils/localization.py +++ b/src/calibre/utils/localization.py @@ -9,7 +9,7 @@ __docformat__ = 'restructuredtext en' import os, locale, re, io from gettext import GNUTranslations, NullTranslations -from polyglot.builtins import unicode_type +from polyglot.builtins import is_py3, unicode_type _available_translations = None @@ -244,7 +244,10 @@ def set_translators(): set_translators.lang = t.info().get('language') except Exception: pass - t.install(unicode=True, names=('ngettext',)) + if is_py3: + t.install(names=('ngettext',)) + else: + t.install(unicode=True, names=('ngettext',)) # Now that we have installed a translator, we have to retranslate the help # for the global prefs object as it was instantiated in get_lang(), before # the translator was installed.