Bugs item #1592627, was opened at 2006-11-08 14:23 Message generated for change (Comment added) made by loewis You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1592627&group_id=5470
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Parser/Compiler Group: None >Status: Pending >Resolution: Works For Me Priority: 5 Private: No Submitted By: Russell Phillips (avantman42) Assigned to: Nobody/Anonymous (nobody) Summary: gettext has problems with .mo files that use non-ASCII chars Initial Comment: Hi, I'm trying to use gettext to internationalise my project [1], but I'm getting the following error message with some translations: "Traceback (most recent call last): file PanicButton.py line 36 in ? file Gettext.pyc line 177 in _init_ file Gettext.pyc line 274 in _parse struct.error : unpack str size does not match format" The snippet of code that loads the .mo file is below (full file is at [2]): <code> # Code to find & install l10n file import gettext, os, locale, glob loc = locale.getdefaultlocale () sLocale = loc [0] #Use translation file with same name as locale if it exists if (os.path.exists (os.path.join ('locale', sLocale + '.mo'))): sLang = os.path.join ('locale', sLocale + '.mo') else: #find a .mo file that matches the first part (first three characters) of the locale sMoFiles = glob.glob (os.path.join ('locale', sLocale [:3] + '*.mo')) if (len (sMoFiles) > 0): sLang = sMoFiles [0] else: #Could not find exact or partial match for locale - use default translation file (British English) sLang = os.path.join ('locale', 'en_GB.mo') lan = gettext.GNUTranslations (open (sLang)) lan.install () # End of code to find & install l10n file </code> The problem only seems to appear when the translated file uses non-ASCII characters. Full sourcecode is available via the SF.net project page [1], if required. The .po and .mo files are in the locale directory [3]. The only .mo file that does not have problems is en_GB.mo Russ [1] http://sourceforge.net/projects/panicbutton [2] http://panicbutton.cvs.sourceforge.net/panicbutton/panicbutton/PanicButton.py?view=log [3] http://panicbutton.cvs.sourceforge.net/panicbutton/panicbutton/locale/ ---------------------------------------------------------------------- >Comment By: Martin v. Löwis (loewis) Date: 2006-11-08 22:45 Message: Logged In: YES user_id=21627 I can't reproduce the problem. If I understand your description correctly, then this line should fail py> gettext.GNUTranslations(open("de_DE.mo")) <gettext.GNUTranslations instance at 0xb7cef6ec> However, it doesn't fail for me, neither with Python 2.4.4 or 2.5. Are you, by any chance, using Microsoft Windows? If so, you should open the file in binary mode (you should actually do so on all systems; .mo files are binary): gettext.GNUTranslations (open (sLang, 'rb')) Also, I'm puzzled by your traceback. It says file Gettext.pyc line 177 in _init_ file Gettext.pyc line 274 in _parse However, Python does not include a file named Gettext.py[c], only gettext.py (lower case 'g'). Where did you get Gettext.pyc from? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1592627&group_id=5470 _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com