summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_gettext.py
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2000-08-25 19:50:38 (GMT)
committerBarry Warsaw <barry@python.org>2000-08-25 19:50:38 (GMT)
commitff6d8136574e9f4e1b11f75a945af5f8ab44a6fd (patch)
treeeb3d49de7c03894b9d05ca4e0eec9d39458db9e8 /Lib/test/test_gettext.py
parente332c1f41568d63113197adfe005104fab3b0b09 (diff)
downloadcpython-ff6d8136574e9f4e1b11f75a945af5f8ab44a6fd.zip
cpython-ff6d8136574e9f4e1b11f75a945af5f8ab44a6fd.tar.gz
cpython-ff6d8136574e9f4e1b11f75a945af5f8ab44a6fd.tar.bz2
Set this test up so that we don't have to create xx/LC_MESSAGES in the
cvs tree. It creates the directory and gettext.mo file on the fly, from the base64 encode binary data.
Diffstat (limited to 'Lib/test/test_gettext.py')
-rw-r--r--Lib/test/test_gettext.py386
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 ""