[Pymoul-svn] SF.net SVN: pymoul: [146] pymoul/trunk/src/moul/qt/i18n/__init__.py
Status: Alpha
Brought to you by:
tiran
|
From: <ti...@us...> - 2007-02-06 15:58:24
|
Revision: 146
http://pymoul.svn.sourceforge.net/pymoul/?rev=146&view=rev
Author: tiran
Date: 2007-02-06 07:58:25 -0800 (Tue, 06 Feb 2007)
Log Message:
-----------
py2exe doesn't support pkg_resources :(
Modified Paths:
--------------
pymoul/trunk/src/moul/qt/i18n/__init__.py
Modified: pymoul/trunk/src/moul/qt/i18n/__init__.py
===================================================================
--- pymoul/trunk/src/moul/qt/i18n/__init__.py 2007-02-06 15:15:30 UTC (rev 145)
+++ pymoul/trunk/src/moul/qt/i18n/__init__.py 2007-02-06 15:58:25 UTC (rev 146)
@@ -23,7 +23,9 @@
__version__ = "$Id: __init__.py 108 2007-01-31 14:46:54Z tiran $"
__revision__ = "$Revision: 108 $"
-import pkg_resources
+
+import sys
+import os
from PyQt4 import QtCore
from moul.osdependent import __FROZEN__
@@ -31,17 +33,39 @@
LOG = getLogger('moul.qt.i18n')
+# pkg_resources is incompatible with os.listdir()
LANGS = ('de', 'es', 'fr', 'it', 'nl')
-TRANSLATIONS = {}
+PREFIX = "pymoul"
-# cannot use os.listdir here!
+if not __FROZEN__:
+ # pkg_resources don't work under py2exe yet
+ import pkg_resources
+ TRANSLATIONS = {}
+ for lang in LANGS:
+ name = "%s_%s" % (PREFIX, lang)
+ qm = pkg_resources.resource_string(__name__, "%s.qm" % name)
+ TRANSLATIONS[name] = qm
-for lang in LANGS:
- name = "pymoul_%s" % lang
- qm = pkg_resources.resource_string(__name__, "%s.qm" % name)
- TRANSLATIONS[name] = qm
+def loadTranslationFile(name):
+ """
+ Load a translation file from disk
+
+ @param name: name of the file e.g. pymoul_de for pymoul_de.qm
+ @type name: str
+ @return: binary file data or None
+ @rtype: str or None
+ """
+ if __FROZEN__:
+ basedir = os.path.dirname(sys.prefix)
+ qm = os.path.join(basedir, 'i18n', '%s.qm')
+ if os.path.isfile(qm):
+ return open(qm, 'rb').read()
+ else:
+ return None
+ else:
+ return TRANSLATIONS.get(name, None)
-def installTranslator(app, prefix="pymoul"):
+def installTranslator(app):
"""
Installs a translator for the ap
"""
@@ -53,19 +77,20 @@
except:
lang, country = locale, ''
- longname = "%s_%s" % (prefix, locale)
- shortname = "%s_%s" % (prefix, lang)
- qm = None
- if longname in TRANSLATIONS:
+ longname = "%s_%s" % (PREFIX, locale)
+ shortname = "%s_%s" % (PREFIX, lang)
+
+ qm = loadTranslationFile(longname)
+ if qm is None:
+ qm = loadTranslationFile(shortname)
+ if qm is None:
+ if lang != 'en':
+ LOG.warning("No translation found!")
+ else:
+ LOG.info("Loading translation %s" % shortname)
+ else:
LOG.info("Loading translation %s" % longname)
- qm = TRANSLATIONS[longname]
- elif shortname in TRANSLATIONS:
- LOG.info("Loading translation %s" % shortname)
- qm = TRANSLATIONS[shortname]
if qm is not None:
translator.load(qm, len(qm))
app.installTranslator(translator)
- else:
- if shortname != 'en':
- LOG.warning("No translation found!")
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|