---- calibre/src/calibre/utils/localization.py~ 2012-01-13 05:32:13.000000000 +0100
-+++ calibre/src/calibre/utils/localization.py 2012-01-17 09:35:01.311333439 +0100
-@@ -49,20 +49,20 @@
- lang = 'en'
- return lang
+--- 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 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]
-- 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
+ 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 set_translators():
- # To test different translations invoke as
-@@ -84,18 +84,12 @@
- buf = cStringIO.StringIO(buf.getvalue())
+ 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()
- 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 mpath == 'nds':
-- mpath = 'de'
-- isof = mpath + '/iso639.mo'
-- try:
-- iso639 = cStringIO.StringIO(zf.read(isof))
-- except:
-- pass # No iso639 translations for this lang
-+ if buf is None:
-+ buf = open(os.path.join(mpath, 'calibre.mo'), 'rb')
-+ mpath = mpath.replace(os.sep+'nds'+os.sep, os.sep+'de'+os.sep)
-+ isof = os.path.join(mpath, 'calibre_iso639.mo')
-+ if os.path.exists(isof):
-+ iso639 = open(isof, 'rb')
+ 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
- t = None
- if buf is not None:
---- calibre/src/calibre/translations/dynamic.py.orig 2012-01-13 05:32:13.000000000 +0100
-+++ calibre/src/calibre/translations/dynamic.py 2012-01-17 09:37:53.594649557 +0100
-@@ -5,10 +5,10 @@
+- 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 <llasram@gmail.com>'
-
+
+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 @@
+
+@@ -21,15 +21,10 @@ def translate(lang, text):
else:
mpath = get_lc_messages_path(lang)
if mpath is not None:
- else:
- trans = GNUTranslations(buf)
- _CACHE[lang] = trans
-+ p = os.path.join(mpath, 'messages.mo')
++ 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/setup/translations.py.orig 2011-08-26 18:36:51.000000000 +0200
-+++ calibre/setup/translations.py 2011-08-27 12:55:49.997229244 +0200
-@@ -131,7 +131,7 @@
+--- 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 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):
- for f in self.po_files():
-@@ -139,8 +139,9 @@
- base = os.path.dirname(dest)
- if not os.path.exists(base):
- os.makedirs(base)
-- self.info('\tCompiling translations for', locale)
-- subprocess.check_call(['msgfmt', '-o', dest, f])
-+ if self.newer(dest, f):
-+ self.info('\tCompiling translations for', locale)
-+ subprocess.check_call(['msgfmt', '-o', dest, f])
- iscpo = {'bn':'bn_IN', 'zh_HK':'zh_CN'}.get(locale, locale)
- iso639 = self.j(self.d(self.SRC), 'setup', 'iso_639',
- '%s.po'%iscpo)
-@@ -155,16 +156,6 @@
- self.warn('No ISO 639 translations for locale:', locale)
-
- self.write_stats()
-- self.freeze_locales()
++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 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)
+-
+-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
- @property
- def stats(self):