home *** CD-ROM | disk | FTP | other *** search
- import os
- import base64
- import gettext
-
-
- def test_api_1(localedir, mofile):
- print 'test api 1'
-
- # Test basic interface
- os.environ['LANGUAGE'] = 'xx'
-
- print 'installing gettext'
- gettext.install('gettext', localedir)
-
- # test some translations
- print _('albatross')
- print _(u'mullusk')
- print _(r'Raymond Luxury Yach-t')
- print _(ur'nudge nudge')
-
- # double quotes
- print _("albatross")
- print _(u"mullusk")
- print _(r"Raymond Luxury Yach-t")
- print _(ur"nudge nudge")
-
- # triple single quotes
- print _('''albatross''')
- print _(u'''mullusk''')
- print _(r'''Raymond Luxury Yach-t''')
- print _(ur'''nudge nudge''')
-
- # triple double quotes
- print _("""albatross""")
- 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.''')
-
- # test the alternative interface
- fp = open(os.path.join(mofile), 'rb')
- t = gettext.GNUTranslations(fp)
- fp.close()
-
- t.install()
-
- print _('nudge nudge')
-
- # try unicode return type
- t.install(unicode=1)
-
- print _('mullusk')
-
-
-
- def test_api_2(localedir, mofile):
- print 'test api 2'
-
- gettext.bindtextdomain('gettext', localedir)
- print gettext.bindtextdomain('gettext') == localedir
-
- gettext.textdomain('gettext')
- # should return 'gettext'
- print gettext.textdomain()
-
- # local function override builtin
- _ = gettext.gettext
-
- # test some translations
- print _('albatross')
- print _(u'mullusk')
- print _(r'Raymond Luxury Yach-t')
- print _(ur'nudge nudge')
-
- # double quotes
- print _("albatross")
- print _(u"mullusk")
- print _(r"Raymond Luxury Yach-t")
- print _(ur"nudge nudge")
-
- # triple single quotes
- print _('''albatross''')
- print _(u'''mullusk''')
- print _(r'''Raymond Luxury Yach-t''')
- print _(ur'''nudge nudge''')
-
- # triple double quotes
- print _("""albatross""")
- 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.''')
-
- # Now test dgettext()
- def _(message):
- return gettext.dgettext('gettext')
-
-
-
- GNU_MO_DATA = '''\
- 3hIElQAAAAAFAAAAHAAAAEQAAAAHAAAAbAAAAAAAAACIAAAAFQAAAIkAAAChAAAAnwAAAAcAAABB
- AQAACwAAAEkBAAAbAQAAVQEAABYAAABxAgAAoQAAAIgCAAAFAAAAKgMAAAkAAAAwAwAAAQAAAAQA
- AAACAAAAAAAAAAUAAAAAAAAAAwAAAABSYXltb25kIEx1eHVyeSBZYWNoLXQAVGhpcyBtb2R1bGUg
- cHJvdmlkZXMgaW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIGxvY2FsaXphdGlvbgpzdXBwb3J0IGZv
- ciB5b3VyIFB5dGhvbiBwcm9ncmFtcyBieSBwcm92aWRpbmcgYW4gaW50ZXJmYWNlIHRvIHRoZSBH
- TlUKZ2V0dGV4dCBtZXNzYWdlIGNhdGFsb2cgbGlicmFyeS4AbXVsbHVzawBudWRnZSBudWRnZQBQ
- cm9qZWN0LUlkLVZlcnNpb246IDIuMApQTy1SZXZpc2lvbi1EYXRlOiAyMDAwLTA4LTI5IDEyOjE5
- LTA0OjAwCkxhc3QtVHJhbnNsYXRvcjogQmFycnkgQS4gV2Fyc2F3IDxid2Fyc2F3QGJlb3Blbi5j
- b20+Ckxhbmd1YWdlLVRlYW06IFhYIDxweXRob24tZGV2QHB5dGhvbi5vcmc+Ck1JTUUtVmVyc2lv
- bjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1rb2k4X3IKQ29udGVudC1U
- cmFuc2Zlci1FbmNvZGluZzogbm9uZQpHZW5lcmF0ZWQtQnk6IHB5Z2V0dGV4dC5weSAxLjEKAFRo
- cm9hdHdvYmJsZXIgTWFuZ3JvdmUAR3V2ZiB6YnFoeXIgY2ViaXZxcmYgdmFncmVhbmd2YmFueXZt
- bmd2YmEgbmFxIHlicG55dm1uZ3ZiYQpmaGNjYmVnIHNiZSBsYmhlIENsZ3ViYSBjZWJ0ZW56ZiBv
- bCBjZWJpdnF2YXQgbmEgdmFncmVzbnByIGdiIGd1ciBUQUgKdHJnZ3JrZyB6cmZmbnRyIHBuZ255
- YnQgeXZvZW5lbC4AYmFjb24Ad2luayB3aW5rAA==
- '''
-
-
- LOCALEDIR = os.path.join('xx', 'LC_MESSAGES')
- MOFILE = os.path.join(LOCALEDIR, 'gettext.mo')
-
- def setup():
- os.makedirs(LOCALEDIR)
- fp = open(MOFILE, 'wb')
- fp.write(base64.decodestring(GNU_MO_DATA))
- fp.close()
-
- def teardown():
- os.unlink(MOFILE)
- os.removedirs(LOCALEDIR)
-
-
- try:
- setup()
- test_api_1(os.curdir, MOFILE)
- test_api_2(os.curdir, MOFILE)
- finally:
- teardown()
- pass
-
-
-
- # For reference, here's the .po file used to created the .mo data above.
-
- '''
- # Dummy translation for Python's test_gettext.py module.
- # Copyright (C) 2000 BeOpen.com
- # Barry Warsaw <bwarsaw@beopen.com>, 2000.
- #
- msgid ""
- msgstr ""
- "Project-Id-Version: 2.0\n"
- "PO-Revision-Date: 2000-08-29 12:19-04:00\n"
- "Last-Translator: Barry A. Warsaw <bwarsaw@beopen.com>\n"
- "Language-Team: XX <python-dev@python.org>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=koi8_r\n"
- "Content-Transfer-Encoding: none\n"
- "Generated-By: pygettext.py 1.1\n"
-
- #: test_gettext.py:19 test_gettext.py:25 test_gettext.py:31 test_gettext.py:37
- #: test_gettext.py:51 test_gettext.py:80 test_gettext.py:86 test_gettext.py:92
- #: test_gettext.py:98
- msgid "nudge nudge"
- msgstr "wink wink"
-
- #: test_gettext.py:16 test_gettext.py:22 test_gettext.py:28 test_gettext.py:34
- #: test_gettext.py:77 test_gettext.py:83 test_gettext.py:89 test_gettext.py:95
- msgid "albatross"
- msgstr ""
-
- #: test_gettext.py:18 test_gettext.py:24 test_gettext.py:30 test_gettext.py:36
- #: test_gettext.py:79 test_gettext.py:85 test_gettext.py:91 test_gettext.py:97
- msgid "Raymond Luxury Yach-t"
- msgstr "Throatwobbler Mangrove"
-
- #: test_gettext.py:17 test_gettext.py:23 test_gettext.py:29 test_gettext.py:35
- #: test_gettext.py:56 test_gettext.py:78 test_gettext.py:84 test_gettext.py:90
- #: test_gettext.py:96
- msgid "mullusk"
- msgstr "bacon"
-
- #: test_gettext.py:40 test_gettext.py:101
- 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."
- '''
-