diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_gettext.py | 386 |
1 files changed, 320 insertions, 66 deletions
diff --git a/Lib/test/test_gettext.py b/Lib/test/test_gettext.py index 1760c78..465030b 100644 --- a/Lib/test/test_gettext.py +++ b/Lib/test/test_gettext.py @@ -1,76 +1,330 @@ import os +import base64 import gettext -def get_qualified_path(name): - """Return a more qualified path to name""" - import sys - import os - path = sys.path - try: - path = [os.path.dirname(__file__)] + path - except NameError: - pass - for dir in path: - fullname = os.path.join(dir, name) - if os.path.exists(fullname): - return fullname - return name - -# Test basic interface -os.environ['LANGUAGE'] = 'xx' - -mofile = get_qualified_path('xx') -localedir = os.path.dirname(mofile) - -print 'installing gettext' -gettext.install() - -print _('calling bindtextdomain with localedir %s') % localedir -print gettext.bindtextdomain('gettext', localedir) -print gettext.bindtextdomain() - -print gettext.textdomain('gettext') -print gettext.textdomain() - -# test some translations -print _(u'mullusk') -print _(r'Raymond Luxury Yach-t') -print _(ur'nudge nudge') - -# double quotes -print _(u"mullusk") -print _(r"Raymond Luxury Yach-t") -print _(ur"nudge nudge") - -# triple single quotes -print _(u'''mullusk''') -print _(r'''Raymond Luxury Yach-t''') -print _(ur'''nudge nudge''') - -# triple double quotes -print _(u"""mullusk""") -print _(r"""Raymond Luxury Yach-t""") -print _(ur"""nudge nudge""") - -# multiline strings -print _('''This module provides internationalization and localization +def test(localedir, mofile): + # Test basic interface + os.environ['LANGUAGE'] = 'xx' + + print 'installing gettext' + gettext.install() + + print _('calling bindtextdomain with localedir %s') % localedir + print gettext.bindtextdomain('gettext', localedir) + print gettext.bindtextdomain() + + print gettext.textdomain('gettext') + print gettext.textdomain() + + # test some translations + print _(u'mullusk') + print _(r'Raymond Luxury Yach-t') + print _(ur'nudge nudge') + + # double quotes + print _(u"mullusk") + print _(r"Raymond Luxury Yach-t") + print _(ur"nudge nudge") + + # triple single quotes + print _(u'''mullusk''') + print _(r'''Raymond Luxury Yach-t''') + print _(ur'''nudge nudge''') + + # triple double quotes + print _(u"""mullusk""") + print _(r"""Raymond Luxury Yach-t""") + print _(ur"""nudge nudge""") + + # multiline strings + print _('''This module provides internationalization and localization support for your Python programs by providing an interface to the GNU gettext message catalog library.''') -print gettext.dgettext('gettext', 'nudge nudge') + print gettext.dgettext('gettext', 'nudge nudge') + + # dcgettext + ##import locale + ##if gettext.dcgettext('gettext', 'nudge nudge', + ## locale.LC_MESSAGES) <> 'wink wink': + ## print _('dcgettext failed') + + # test the alternative interface + fp = open(os.path.join(mofile), 'rb') + t = gettext.GNUTranslations(fp) + fp.close() + + gettext.set(t) + print t == gettext.get() + + print _('nudge nudge') + +GNU_MO_DATA = '''\ +3hIElQAAAAAFAAAAHAAAAEQAAAAHAAAAbAAAAAAAAACIAAAAFQAAAIkAAAChAAAAnwAAAAcAAABB +AQAACwAAAEkBAAAWAQAAVQEAABYAAABsAgAAoQAAAIMCAAAFAAAAJQMAAAkAAAArAwAAAQAAAAQA +AAACAAAAAAAAAAUAAAAAAAAAAwAAAABSYXltb25kIEx1eHVyeSBZYWNoLXQAVGhpcyBtb2R1bGUg +cHJvdmlkZXMgaW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIGxvY2FsaXphdGlvbgpzdXBwb3J0IGZv +ciB5b3VyIFB5dGhvbiBwcm9ncmFtcyBieSBwcm92aWRpbmcgYW4gaW50ZXJmYWNlIHRvIHRoZSBH +TlUKZ2V0dGV4dCBtZXNzYWdlIGNhdGFsb2cgbGlicmFyeS4AbXVsbHVzawBudWRnZSBudWRnZQBQ +cm9qZWN0LUlkLVZlcnNpb246IDIuMApQTy1SZXZpc2lvbi1EYXRlOiBGcmkgQXVnIDE4IDIwOjQ1 +OjAzIDIwMDAKTGFzdC1UcmFuc2xhdG9yOiBCYXJyeSBXYXJzYXcgPGJ3YXJzYXdAYmVvcGVuLmNv +bT4KTGFuZ3VhZ2UtVGVhbTogWFggPHB5dGhvbi1kZXZAcHl0aG9uLm9yZz4KTUlNRS1WZXJzaW9u +OiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PWVuCkNvbnRlbnQtVHJhbnNm +ZXItRW5jb2Rpbmc6IG5vbmUKR2VuZXJhdGVkLUJ5OiBweWdldHRleHQucHkgMS4xCgBUaHJvYXR3 +b2JibGVyIE1hbmdyb3ZlAEd1dmYgemJxaHlyIGNlYml2cXJmIHZhZ3JlYW5ndmJhbnl2bW5ndmJh +IG5hcSB5YnBueXZtbmd2YmEKZmhjY2JlZyBzYmUgbGJoZSBDbGd1YmEgY2VidGVuemYgb2wgY2Vi +aXZxdmF0IG5hIHZhZ3Jlc25wciBnYiBndXIgVEFICnRyZ2dya2cgenJmZm50ciBwbmdueWJ0IHl2 +b2VuZWwuAGJhY29uAHdpbmsgd2luawA= +''' + +SOLARIS_MO_DATA = '''\ +AAAACAAAABEAAAIXAAAB0gAAARD///+d////nQAAAAAAAAAAAAAAAAAAAAIAAAAkAAAAAf///53/ +//+dAAAAQgAAAAIAAAABAAAABQAAAGgAAAAD////nf///50AAAB0AAAADQAAAAQAAAAGAAAAmAAA +AA7///+dAAAABwAAAKAAAAAU////nf///50AAAC5AAAAFQAAAAMAAAAMAAAAywAAABb///+d//// +nQAAANsAAAAXAAAACQAAAAsAAADsAAAAGP///53///+dAAAA/wAAABkAAAAKAAAADgAAAScAAAAa +////nf///50AAAFDAAAAGwAAAA0AAAAPAAABXgAAABz///+dAAAAEAAAAgAAAAC+////nf///50A +AAIWAAAA1XRleHQgZG9tYWluIGRpZG4ndCBnZXQgc2V0IHByb3Blcmx5AHJhdyBzdHJpbmcgdHJh +bnNsYXRpb24gZmFpbGVkAHJhdyBVbmljb2RlIHN0cmluZyB0cmFuc2xhdGlvbiBmYWlsZWQAbnVk +Z2UgbnVkZ2UAbXVsdGlsaW5lIHN0cmluZyB0cmFuc2xhdGlvbiBmYWlsZWQAbXVsbHVzawBnb3Qg +dW5leHBlY3RlZCBsb2NhbGVkaXIAZ2V0dGV4dCBpbnN0YWxsZWQAZGdldHRleHQgZmFpbGVkAGRj +Z2V0dGV4dCBmYWlsZWQAY2FsbGluZyB0ZXh0ZG9tYWluAGNhbGxpbmcgYmluZHRleHRkb21haW4g +d2l0aCBsb2NhbGRpciAlcwBiaW5kdGV4dGRvbWFpbihOb25lKSBmYWlsZWQAVW5pY29kZSB0cmFu +c2xhdGlvbiBmYWlsZWQAVGhpcyBtb2R1bGUgcHJvdmlkZXMgaW50ZXJuYXRpb25hbGl6YXRpb24g +YW5kIGxvY2FsaXphdGlvbgpzdXBwb3J0IGZvciB5b3VyIFB5dGhvbiBwcm9ncmFtcyBieSBwcm92 +aWRpbmcgYW4gaW50ZXJmYWNlIHRvIHRoZSBHTlUKZ2V0dGV4dCBtZXNzYWdlIGNhdGFsb2cgbGli +cmFyeS4AUmF5bW9uZCBMdXh1cnkgWWFjaC10AAAAAAB3aW5rIHdpbmsAAGJhY29uAAAAAAAAAAAA +R3V2ZiB6YnFoeXIgY2ViaXZxcmYgdmFncmVhbmd2YmFueXZtbmd2YmEgbmFxIHlicG55dm1uZ3Zi +YQpmaGNjYmVnIHNiZSBsYmhlIENsZ3ViYSBjZWJ0ZW56ZiBvbCBjZWJpdnF2YXQgbmEgdmFncmVz +bnByIGdiIGd1ciBUQUgKdHJnZ3JrZyB6cmZmbnRyIHBuZ255YnQgeXZvZW5lbC4AVGhyb2F0d29i +YmxlciBNYW5ncm92ZQBQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTgpQTy1SZXZp +c2lvbi1EYXRlOiAyMDAwLTA4LTE4IDIxOjAxLTA0OjAwCkxhc3QtVHJhbnNsYXRvcjogRlVMTCBO +QU1FIDxFTUFJTEBBRERSRVNTPgpMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPgpN +SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9Q0hBUlNF +VApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBFTkNPRElORwoA +''' + +LOCALEDIR = os.path.join('xx', 'LC_MESSAGES') +MOFILE = os.path.join(LOCALEDIR, 'gettext.mo') + +def setup(): + os.makedirs(LOCALEDIR) + fp = open(MOFILE, 'w') + fp.write(base64.decodestring(GNU_MO_DATA)) + fp.close() + +def teardown(): + os.unlink(MOFILE) + os.removedirs(LOCALEDIR) + + + +try: + setup() + test('.', MOFILE) +finally: + teardown() + pass + + + +# For reference, here's the .pot and .po files used to created the .mo data +# above. The .pot file was generated by pygettext. + +# =============================== messages.pot + +### SOME DESCRIPTIVE TITLE. +### Copyright (C) YEAR ORGANIZATION +### FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +### +##msgid "" +##msgstr "" +##"Project-Id-Version: PACKAGE VERSION\n" +##"PO-Revision-Date: Fri Aug 18 20:45:03 2000\n" +##"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +##"Language-Team: LANGUAGE <LL@li.org>\n" +##"MIME-Version: 1.0\n" +##"Content-Type: text/plain; charset=CHARSET\n" +##"Content-Transfer-Encoding: ENCODING\n" +##"Generated-By: pygettext.py 1.1\n" + + +###: Lib/test/test_gettext.py:34 +##msgid "calling textdomain" +##msgstr "" + +###: Lib/test/test_gettext.py:94 +##msgid "dgettext failed" +##msgstr "" + +###: Lib/test/test_gettext.py:25 +##msgid "gettext installed" +##msgstr "" + +###: Lib/test/test_gettext.py:32 +##msgid "bindtextdomain(None) failed" +##msgstr "" + +###: Lib/test/test_gettext.py:44 Lib/test/test_gettext.py:54 +###: Lib/test/test_gettext.py:64 Lib/test/test_gettext.py:74 +##msgid "Raymond Luxury Yach-t" +##msgstr "" + +###: Lib/test/test_gettext.py:41 Lib/test/test_gettext.py:51 +###: Lib/test/test_gettext.py:61 Lib/test/test_gettext.py:71 +##msgid "mullusk" +##msgstr "" + +###: Lib/test/test_gettext.py:38 +##msgid "text domain didn't get set properly" +##msgstr "" + +###: Lib/test/test_gettext.py:98 +##msgid "dcgettext failed" +##msgstr "" + +###: Lib/test/test_gettext.py:47 Lib/test/test_gettext.py:57 +###: Lib/test/test_gettext.py:67 Lib/test/test_gettext.py:77 +##msgid "nudge nudge" +##msgstr "" + +###: Lib/test/test_gettext.py:45 Lib/test/test_gettext.py:55 +###: Lib/test/test_gettext.py:65 Lib/test/test_gettext.py:75 +##msgid "raw string translation failed" +##msgstr "" + +###: Lib/test/test_gettext.py:30 +##msgid "got unexpected localedir" +##msgstr "" + +###: Lib/test/test_gettext.py:48 Lib/test/test_gettext.py:58 +###: Lib/test/test_gettext.py:68 Lib/test/test_gettext.py:78 +##msgid "raw Unicode string translation failed" +##msgstr "" + +###: Lib/test/test_gettext.py:42 Lib/test/test_gettext.py:52 +###: Lib/test/test_gettext.py:62 Lib/test/test_gettext.py:72 +##msgid "Unicode translation failed" +##msgstr "" + +###: Lib/test/test_gettext.py:90 +##msgid "multiline string translation failed" +##msgstr "" + +###: Lib/test/test_gettext.py:81 +##msgid "" +##"This module provides internationalization and localization\n" +##"support for your Python programs by providing an interface to the GNU\n" +##"gettext message catalog library." +##msgstr "" + +###: Lib/test/test_gettext.py:26 +##msgid "calling bindtextdomain with localdir %s" +##msgstr "" + +# =============================== messages.po + +### Dummy translation for Python's test_gettext.py module. +### Copyright (C) 2000 BeOpen.com +### Barry Warsaw <bwarsaw@beopen.com>, 2000. +### +###, fuzzy +##msgid "" +##msgstr "" +##"Project-Id-Version: PACKAGE VERSION\n" +##"PO-Revision-Date: 2000-08-18 21:01-04:00\n" +##"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +##"Language-Team: LANGUAGE <LL@li.org>\n" +##"MIME-Version: 1.0\n" +##"Content-Type: text/plain; charset=CHARSET\n" +##"Content-Transfer-Encoding: ENCODING\n" + +### SOME DESCRIPTIVE TITLE. +### Copyright (C) YEAR ORGANIZATION +### FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +### +##msgid "" +##msgstr "" +##"Project-Id-Version: 2.0\n" +##"PO-Revision-Date: Fri Aug 18 20:45:03 2000\n" +##"Last-Translator: Barry Warsaw <bwarsaw@beopen.com>\n" +##"Language-Team: XX <python-dev@python.org>\n" +##"MIME-Version: 1.0\n" +##"Content-Type: text/plain; charset=en\n" +##"Content-Transfer-Encoding: none\n" +##"Generated-By: pygettext.py 1.1\n" + + +###: Lib/test/test_gettext.py:34 +##msgid "calling textdomain" +##msgstr "" + +###: Lib/test/test_gettext.py:94 +##msgid "dgettext failed" +##msgstr "" + +###: Lib/test/test_gettext.py:25 +##msgid "gettext installed" +##msgstr "" + +###: Lib/test/test_gettext.py:32 +##msgid "bindtextdomain(None) failed" +##msgstr "" + +###: Lib/test/test_gettext.py:44 Lib/test/test_gettext.py:54 +###: Lib/test/test_gettext.py:64 Lib/test/test_gettext.py:74 +##msgid "Raymond Luxury Yach-t" +##msgstr "Throatwobbler Mangrove" + +###: Lib/test/test_gettext.py:41 Lib/test/test_gettext.py:51 +###: Lib/test/test_gettext.py:61 Lib/test/test_gettext.py:71 +##msgid "mullusk" +##msgstr "bacon" + +###: Lib/test/test_gettext.py:38 +##msgid "text domain didn't get set properly" +##msgstr "" + +###: Lib/test/test_gettext.py:98 +##msgid "dcgettext failed" +##msgstr "" + +###: Lib/test/test_gettext.py:47 Lib/test/test_gettext.py:57 +###: Lib/test/test_gettext.py:67 Lib/test/test_gettext.py:77 +##msgid "nudge nudge" +##msgstr "wink wink" + +###: Lib/test/test_gettext.py:45 Lib/test/test_gettext.py:55 +###: Lib/test/test_gettext.py:65 Lib/test/test_gettext.py:75 +##msgid "raw string translation failed" +##msgstr "" + +###: Lib/test/test_gettext.py:30 +##msgid "got unexpected localedir" +##msgstr "" + +###: Lib/test/test_gettext.py:48 Lib/test/test_gettext.py:58 +###: Lib/test/test_gettext.py:68 Lib/test/test_gettext.py:78 +##msgid "raw Unicode string translation failed" +##msgstr "" -# dcgettext -##import locale -##if gettext.dcgettext('gettext', 'nudge nudge', -## locale.LC_MESSAGES) <> 'wink wink': -## print _('dcgettext failed') +###: Lib/test/test_gettext.py:42 Lib/test/test_gettext.py:52 +###: Lib/test/test_gettext.py:62 Lib/test/test_gettext.py:72 +##msgid "Unicode translation failed" +##msgstr "" -# test the alternative interface -fp = open(os.path.join(mofile, 'LC_MESSAGES', 'gettext.mo'), 'rb') -t = gettext.GNUTranslations(fp) -fp.close() +###: Lib/test/test_gettext.py:90 +##msgid "multiline string translation failed" +##msgstr "" -gettext.set(t) -print t == gettext.get() +###: Lib/test/test_gettext.py:81 +##msgid "" +##"This module provides internationalization and localization\n" +##"support for your Python programs by providing an interface to the GNU\n" +##"gettext message catalog library." +##msgstr "Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba\n" +##"fhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH\n" +##"trggrkg zrffntr pngnybt yvoenel." -print _('nudge nudge') +###: Lib/test/test_gettext.py:26 +##msgid "calling bindtextdomain with localdir %s" +##msgstr "" |