---- calibre/src/calibre/utils/localization.py~ 2010-05-21 11:47:23.959845665 +0200
-+++ calibre/src/calibre/utils/localization.py 2010-05-21 11:47:07.293172188 +0200
-@@ -45,7 +45,7 @@
+--- calibre/src/calibre/utils/localization.py.old 2012-10-28 22:07:25.481983550 +0100
++++ calibre/src/calibre/utils/localization.py 2012-10-28 22:12:17.250402847 +0100
+@@ -73,20 +73,20 @@ def get_lang():
+ lang = 'en'
return lang
- def messages_path(lang):
-- return P('localization/locales/%s/LC_MESSAGES'%lang)
++def messages_path(lang):
+ return ('/usr/share/locale/%s/LC_MESSAGES'%lang)
-
++
def get_lc_messages_path(lang):
hlang = None
-@@ -75,9 +75,9 @@
- mpath = get_lc_messages_path(lang)
+- 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
+
+ def set_translators():
+ # To test different translations invoke as
+@@ -110,18 +110,12 @@ def set_translators():
+ buf = cStringIO.StringIO(buf.getvalue())
+
if mpath is not None:
- if buf is None:
-- buf = open(os.path.join(mpath, 'messages.mo'), 'rb')
+- 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, 'iso639.mo')
++ 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')
++ if os.path.exists(isof):
++ iso639 = open(isof, 'rb')
+
+ if buf is not None:
+ t = GNUTranslations(buf)
+--- 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 @@
+ __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 @@
+ 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, 'messages.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 @@
+
+ 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,7 +156,6 @@
+ self.warn('No ISO 639 translations for locale:', locale)
---- calibre/src/calibre/startup.py~ 2010-06-06 22:46:25.000000000 +0200
-+++ calibre/src/calibre/startup.py 2010-06-11 20:31:39.644201974 +0200
-@@ -49,7 +49,7 @@
- # Setup translations
- from calibre.utils.localization import set_translators
+ self.write_stats()
+- self.freeze_locales()
-- set_translators()
-+ #set_translators()
+ def check_iso639(self, path):
+ from calibre.utils.localization import langnames_to_langcodes
+@@ -165,15 +166,6 @@
+ os.path.basename(path), msgstr, msgid, rmap[msgstr]))
+ # 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)
- ################################################################################
- # Initialize locale
+ @property
+ def stats(self):