mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #1860831 [Two Portuguese when to choose the language](https://bugs.launchpad.net/calibre/+bug/1860831)
This commit is contained in:
parent
5c54239ade
commit
28c7e43940
@ -555,7 +555,7 @@ class Translations(POT): # {{{
|
|||||||
def _compile_website_translations(self, name='website', threshold=50):
|
def _compile_website_translations(self, name='website', threshold=50):
|
||||||
from calibre.utils.zipfile import ZipFile, ZipInfo, ZIP_STORED
|
from calibre.utils.zipfile import ZipFile, ZipInfo, ZIP_STORED
|
||||||
from calibre.ptempfile import TemporaryDirectory
|
from calibre.ptempfile import TemporaryDirectory
|
||||||
from calibre.utils.localization import get_iso639_translator, get_language, get_iso_language
|
from calibre.utils.localization import get_language, translator_for_lang
|
||||||
self.info('Compiling', name, 'translations...')
|
self.info('Compiling', name, 'translations...')
|
||||||
srcbase = self.j(self.d(self.SRC), 'translations', name)
|
srcbase = self.j(self.d(self.SRC), 'translations', name)
|
||||||
if not os.path.exists(srcbase):
|
if not os.path.exists(srcbase):
|
||||||
@ -596,11 +596,9 @@ class Translations(POT): # {{{
|
|||||||
|
|
||||||
lang_names = {}
|
lang_names = {}
|
||||||
for l in dl:
|
for l in dl:
|
||||||
if l == 'en':
|
translator = translator_for_lang(l)['translator']
|
||||||
t = get_language
|
t = getattr(translator, 'gettext' if ispy3 else 'ugettext')
|
||||||
else:
|
t = partial(get_language, gettext_func=t)
|
||||||
t = getattr(get_iso639_translator(l), 'gettext' if ispy3 else 'ugettext')
|
|
||||||
t = partial(get_iso_language, t)
|
|
||||||
lang_names[l] = {x: t(x) for x in dl}
|
lang_names[l] = {x: t(x) for x in dl}
|
||||||
zi = ZipInfo('lang-names.json')
|
zi = ZipInfo('lang-names.json')
|
||||||
zi.compress_type = ZIP_STORED
|
zi.compress_type = ZIP_STORED
|
||||||
|
@ -209,17 +209,11 @@ def load_po(path):
|
|||||||
return buf
|
return buf
|
||||||
|
|
||||||
|
|
||||||
def set_translators():
|
def translator_for_lang(lang):
|
||||||
global _lang_trans, lcdata
|
t = buf = iso639 = lcdata = None
|
||||||
# To test different translations invoke as
|
|
||||||
# CALIBRE_OVERRIDE_LANG=de_DE.utf8 program
|
|
||||||
lang = get_lang()
|
|
||||||
t = buf = iso639 = None
|
|
||||||
|
|
||||||
if 'CALIBRE_TEST_TRANSLATION' in os.environ:
|
if 'CALIBRE_TEST_TRANSLATION' in os.environ:
|
||||||
buf = load_po(os.path.expanduser(os.environ['CALIBRE_TEST_TRANSLATION']))
|
buf = load_po(os.path.expanduser(os.environ['CALIBRE_TEST_TRANSLATION']))
|
||||||
|
|
||||||
if lang:
|
|
||||||
mpath = get_lc_messages_path(lang)
|
mpath = get_lc_messages_path(lang)
|
||||||
if buf is None and mpath and os.access(mpath + '.po', os.R_OK):
|
if buf is None and mpath and os.access(mpath + '.po', os.R_OK):
|
||||||
buf = load_po(mpath + '.po')
|
buf = load_po(mpath + '.po')
|
||||||
@ -247,12 +241,29 @@ def set_translators():
|
|||||||
if buf is not None:
|
if buf is not None:
|
||||||
t = GNUTranslations(buf)
|
t = GNUTranslations(buf)
|
||||||
if iso639 is not None:
|
if iso639 is not None:
|
||||||
iso639 = _lang_trans = GNUTranslations(iso639)
|
iso639 = GNUTranslations(iso639)
|
||||||
t.add_fallback(iso639)
|
t.add_fallback(iso639)
|
||||||
|
|
||||||
if t is None:
|
if t is None:
|
||||||
t = NullTranslations()
|
t = NullTranslations()
|
||||||
|
|
||||||
|
return {'translator': t, 'iso639_translator': iso639, 'lcdata': lcdata}
|
||||||
|
|
||||||
|
|
||||||
|
def set_translators():
|
||||||
|
global _lang_trans, lcdata
|
||||||
|
# To test different translations invoke as
|
||||||
|
# CALIBRE_OVERRIDE_LANG=de_DE.utf8 program
|
||||||
|
lang = get_lang()
|
||||||
|
|
||||||
|
if lang:
|
||||||
|
q = translator_for_lang(lang)
|
||||||
|
t = q['translator']
|
||||||
|
_lang_trans = q['iso639_translator']
|
||||||
|
if q['lcdata']:
|
||||||
|
lcdata = q['lcdata']
|
||||||
|
else:
|
||||||
|
t = NullTranslations()
|
||||||
try:
|
try:
|
||||||
set_translators.lang = t.info().get('language')
|
set_translators.lang = t.info().get('language')
|
||||||
except Exception:
|
except Exception:
|
||||||
@ -386,15 +397,17 @@ def get_iso_language(lang_trans, lang):
|
|||||||
return lang_trans(ans)
|
return lang_trans(ans)
|
||||||
|
|
||||||
|
|
||||||
def get_language(lang):
|
def get_language(lang, gettext_func=None):
|
||||||
translate = _
|
translate = gettext_func or _
|
||||||
lang = _lcase_map.get(lang, lang)
|
lang = _lcase_map.get(lang, lang)
|
||||||
if lang in _extra_lang_codes:
|
if lang in _extra_lang_codes:
|
||||||
# The translator was not active when _extra_lang_codes was defined, so
|
# The translator was not active when _extra_lang_codes was defined, so
|
||||||
# re-translate
|
# re-translate
|
||||||
return translate(_extra_lang_codes[lang])
|
return translate(_extra_lang_codes[lang])
|
||||||
|
if gettext_func is None:
|
||||||
attr = 'gettext' if sys.version_info.major > 2 else 'ugettext'
|
attr = 'gettext' if sys.version_info.major > 2 else 'ugettext'
|
||||||
return get_iso_language(getattr(_lang_trans, attr, translate), lang)
|
gettext_func = getattr(_lang_trans, attr, translate)
|
||||||
|
return get_iso_language(gettext_func, lang)
|
||||||
|
|
||||||
|
|
||||||
def calibre_langcode_to_name(lc, localize=True):
|
def calibre_langcode_to_name(lc, localize=True):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user