def init_languages(self): self.language.blockSignals(True) self.language.clear() from calibre.utils.localization import (available_translations, get_language, get_lang, get_lc_messages_path) lang = get_lang() lang = get_lc_messages_path(lang) if lang else lang if lang is None or lang not in available_translations(): lang = 'en' def get_esc_lang(l): if l == 'en': return 'English' return get_language(l) self.language.addItem(get_esc_lang(lang), (lang)) items = [(l, get_esc_lang(l)) for l in available_translations() if l != lang] if lang != 'en': items.append(('en', get_esc_lang('en'))) items.sort(cmp=lambda x, y: cmp(x[1], y[1])) for item in items: self.language.addItem(item[1], (item[0])) self.language.blockSignals(False) prefs['language'] = str(self.language.itemData(self.language.currentIndex()) or '')
def translate(lang, text): trans = None if lang in _CACHE: trans = _CACHE[lang] else: mpath = get_lc_messages_path(lang) if mpath is not None: with ZipFile(P('localization/locales.zip', allow_user_override=False), 'r') as zf: try: buf = cStringIO.StringIO(zf.read(mpath + '/messages.mo')) except: pass else: trans = GNUTranslations(buf) _CACHE[lang] = trans if trans is None: return getattr(__builtins__, '_', lambda x: x)(text) return trans.ugettext(text)
def translate(lang, text): trans = None if lang in _CACHE: trans = _CACHE[lang] else: mpath = get_lc_messages_path(lang) if mpath is not None: with ZipFile(P('localization/locales.zip', allow_user_override=False), 'r') as zf: try: buf = io.BytesIO(zf.read(mpath + '/messages.mo')) except Exception: pass else: trans = GNUTranslations(buf) _CACHE[lang] = trans if trans is None: return getattr(__builtins__, '_', lambda x: x)(text) return trans.gettext(text)