--- calibre/setup/translations.py.wiget 2013-12-06 05:13:34.000000000 +0100 +++ calibre/setup/translations.py 2013-12-09 09:28:32.349958101 +0100 @@ -143,7 +143,7 @@ class Translations(POT): # {{{ def mo_file(self, po_file): locale = os.path.splitext(os.path.basename(po_file))[0] - return locale, os.path.join(self.DEST, locale, 'messages.mo') + return locale, os.path.join(self.DEST, locale, 'LC_MESSAGES', 'messages.mo') def run(self, opts): self.iso639_errors = [] @@ -174,7 +175,6 @@ class Translations(POT): # {{{ def run(self, opts): self.compile_main_translations() self.compile_content_server_translations() - self.freeze_locales() self.compile_user_manual_translations() def compile_group(self, files, handle_stats=None, file_ok=None, action_per_file=None): @@ -198,15 +198,6 @@ class Translations(POT): # {{{ # raise SystemExit(1) rmap[msgstr] = msgid - def freeze_locales(self): - zf = self.DEST + '.zip' - from calibre import CurrentDir - from calibre.utils.zipfile import ZipFile, ZIP_DEFLATED - with ZipFile(zf, 'w', ZIP_DEFLATED) as zf: - with CurrentDir(self.DEST): - zf.add_dir('.') - shutil.rmtree(self.DEST) - @property def stats(self): return self.j(self.d(self.DEST), 'stats.pickle') --- calibre/src/calibre/translations/dynamic.py.wiget 2013-12-06 05:13:34.000000000 +0100 +++ calibre/src/calibre/translations/dynamic.py 2013-12-09 09:28:32.349958101 +0100 @@ -5,10 +5,10 @@ Dynamic language lookup of translations __license__ = 'GPL v3' __copyright__ = '2008, Marshall T. Vandegrift ' +import os import cStringIO from gettext import GNUTranslations from calibre.utils.localization import get_lc_messages_path -from zipfile import ZipFile __all__ = ['translate'] @@ -21,15 +21,10 @@ def translate(lang, text): 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 + p = os.path.join(mpath, 'calibre.mo') + if os.path.exists(p): + trans = GNUTranslations(open(p, 'rb')) + _CACHE[lang] = trans if trans is None: return getattr(__builtins__, '_', lambda x: x)(text) return trans.ugettext(text) --- calibre/src/calibre/utils/localization.py.wiget 2013-12-06 05:13:34.000000000 +0100 +++ calibre/src/calibre/utils/localization.py 2013-12-09 09:31:05.694326467 +0100 @@ -74,21 +74,20 @@ def get_lang(): return get_lang()[:2].lower() in {'he', 'ar'} +def messages_path(lang): + return ('/usr/share/locale/%s/LC_MESSAGES'%lang) + def get_lc_messages_path(lang): hlang = None - if zf_exists(): - if lang in available_translations(): - hlang = lang - else: - xlang = lang.split('_')[0].lower() - if xlang in available_translations(): - hlang = xlang - return hlang - - -def zf_exists(): - return os.path.exists(P('localization/locales.zip', - allow_user_override=False)) + if lang in available_translations(): + hlang = lang + else: + xlang = lang.split('_')[0] + if xlang in available_translations(): + hlang = xlang + if hlang is not None: + return messages_path(hlang) + return None _lang_trans = None @@ -99,13 +99,14 @@ _lang_trans = None def get_all_translators(): - from zipfile import ZipFile - with ZipFile(P('localization/locales.zip', allow_user_override=False), 'r') as zf: - for lang in available_translations(): - mpath = get_lc_messages_path(lang) - if mpath is not None: - buf = cStringIO.StringIO(zf.read(mpath + '/messages.mo')) - yield lang, GNUTranslations(buf) + for lang in available_translations(): + mpath = get_lc_messages_path(lang) + if mpath is not None: + try: + buf = open(os.path.join(mpath, 'calibre.mo'), 'rb') + yield lang, GNUTranslations(buf) + except: + pass lcdata = { u'abday': (u'Sun', u'Mon', u'Tue', u'Wed', u'Thu', u'Fri', u'Sat'), @@ -145,21 +145,20 @@ buf = cStringIO.StringIO(buf.getvalue()) if mpath is not None: - from zipfile import ZipFile - with ZipFile(P('localization/locales.zip', - allow_user_override=False), 'r') as zf: - if buf is None: - buf = cStringIO.StringIO(zf.read(mpath + '/messages.mo')) + if buf is None: + try: + buf = open(os.path.join(mpath, 'calibre.mo'), 'rb') + except: + pass # No translations for this lang if mpath == 'nds': mpath = 'de' - isof = mpath + '/iso639.mo' try: - iso639 = cStringIO.StringIO(zf.read(isof)) + iso639 = open(os.path.join(mpath, 'calibre_iso639.mo'), 'rb') except: pass # No iso639 translations for this lang if buf is not None: try: - lcdata = cPickle.loads(zf.read(mpath + '/lcdata.pickle')) + lcdata = cPickle.loads(open(os.path.join(mpath, 'calibre_lcdata.pickle'))) except: pass # No lcdata