blob: 77a6e96d3ff7f67680fc528cb5a46f4b6ffc6571 [file] [log] [blame]
Barry Warsaw9e035922000-08-25 19:14:25 +00001import os
Barry Warsawff6d8132000-08-25 19:50:38 +00002import base64
Barry Warsaw9e035922000-08-25 19:14:25 +00003import gettext
4
Barry Warsawff6d8132000-08-25 19:50:38 +00005def test(localedir, mofile):
6 # Test basic interface
7 os.environ['LANGUAGE'] = 'xx'
Barry Warsaw9e035922000-08-25 19:14:25 +00008
Barry Warsawff6d8132000-08-25 19:50:38 +00009 print 'installing gettext'
10 gettext.install()
Barry Warsaw9e035922000-08-25 19:14:25 +000011
Barry Warsawff6d8132000-08-25 19:50:38 +000012 print _('calling bindtextdomain with localedir %s') % localedir
13 print gettext.bindtextdomain('gettext', localedir)
14 print gettext.bindtextdomain()
Barry Warsaw9e035922000-08-25 19:14:25 +000015
Barry Warsawff6d8132000-08-25 19:50:38 +000016 print gettext.textdomain('gettext')
17 print gettext.textdomain()
Barry Warsaw9e035922000-08-25 19:14:25 +000018
Barry Warsawff6d8132000-08-25 19:50:38 +000019 # test some translations
20 print _(u'mullusk')
21 print _(r'Raymond Luxury Yach-t')
22 print _(ur'nudge nudge')
Barry Warsaw9e035922000-08-25 19:14:25 +000023
Barry Warsawff6d8132000-08-25 19:50:38 +000024 # double quotes
25 print _(u"mullusk")
26 print _(r"Raymond Luxury Yach-t")
27 print _(ur"nudge nudge")
Barry Warsaw9e035922000-08-25 19:14:25 +000028
Barry Warsawff6d8132000-08-25 19:50:38 +000029 # triple single quotes
30 print _(u'''mullusk''')
31 print _(r'''Raymond Luxury Yach-t''')
32 print _(ur'''nudge nudge''')
Barry Warsaw9e035922000-08-25 19:14:25 +000033
Barry Warsawff6d8132000-08-25 19:50:38 +000034 # triple double quotes
35 print _(u"""mullusk""")
36 print _(r"""Raymond Luxury Yach-t""")
37 print _(ur"""nudge nudge""")
Barry Warsaw9e035922000-08-25 19:14:25 +000038
Barry Warsawff6d8132000-08-25 19:50:38 +000039 # multiline strings
40 print _('''This module provides internationalization and localization
Barry Warsaw9e035922000-08-25 19:14:25 +000041support for your Python programs by providing an interface to the GNU
42gettext message catalog library.''')
43
Barry Warsawff6d8132000-08-25 19:50:38 +000044 print gettext.dgettext('gettext', 'nudge nudge')
Barry Warsaw9e035922000-08-25 19:14:25 +000045
Barry Warsawff6d8132000-08-25 19:50:38 +000046 # test the alternative interface
47 fp = open(os.path.join(mofile), 'rb')
48 t = gettext.GNUTranslations(fp)
49 fp.close()
Barry Warsaw9e035922000-08-25 19:14:25 +000050
Barry Warsawff6d8132000-08-25 19:50:38 +000051 gettext.set(t)
52 print t == gettext.get()
Barry Warsaw9e035922000-08-25 19:14:25 +000053
Barry Warsawff6d8132000-08-25 19:50:38 +000054 print _('nudge nudge')
55
56GNU_MO_DATA = '''\
573hIElQAAAAAFAAAAHAAAAEQAAAAHAAAAbAAAAAAAAACIAAAAFQAAAIkAAAChAAAAnwAAAAcAAABB
58AQAACwAAAEkBAAAWAQAAVQEAABYAAABsAgAAoQAAAIMCAAAFAAAAJQMAAAkAAAArAwAAAQAAAAQA
59AAACAAAAAAAAAAUAAAAAAAAAAwAAAABSYXltb25kIEx1eHVyeSBZYWNoLXQAVGhpcyBtb2R1bGUg
60cHJvdmlkZXMgaW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIGxvY2FsaXphdGlvbgpzdXBwb3J0IGZv
61ciB5b3VyIFB5dGhvbiBwcm9ncmFtcyBieSBwcm92aWRpbmcgYW4gaW50ZXJmYWNlIHRvIHRoZSBH
62TlUKZ2V0dGV4dCBtZXNzYWdlIGNhdGFsb2cgbGlicmFyeS4AbXVsbHVzawBudWRnZSBudWRnZQBQ
63cm9qZWN0LUlkLVZlcnNpb246IDIuMApQTy1SZXZpc2lvbi1EYXRlOiBGcmkgQXVnIDE4IDIwOjQ1
64OjAzIDIwMDAKTGFzdC1UcmFuc2xhdG9yOiBCYXJyeSBXYXJzYXcgPGJ3YXJzYXdAYmVvcGVuLmNv
65bT4KTGFuZ3VhZ2UtVGVhbTogWFggPHB5dGhvbi1kZXZAcHl0aG9uLm9yZz4KTUlNRS1WZXJzaW9u
66OiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PWVuCkNvbnRlbnQtVHJhbnNm
67ZXItRW5jb2Rpbmc6IG5vbmUKR2VuZXJhdGVkLUJ5OiBweWdldHRleHQucHkgMS4xCgBUaHJvYXR3
68b2JibGVyIE1hbmdyb3ZlAEd1dmYgemJxaHlyIGNlYml2cXJmIHZhZ3JlYW5ndmJhbnl2bW5ndmJh
69IG5hcSB5YnBueXZtbmd2YmEKZmhjY2JlZyBzYmUgbGJoZSBDbGd1YmEgY2VidGVuemYgb2wgY2Vi
70aXZxdmF0IG5hIHZhZ3Jlc25wciBnYiBndXIgVEFICnRyZ2dya2cgenJmZm50ciBwbmdueWJ0IHl2
71b2VuZWwuAGJhY29uAHdpbmsgd2luawA=
72'''
73
74SOLARIS_MO_DATA = '''\
75AAAACAAAABEAAAIXAAAB0gAAARD///+d////nQAAAAAAAAAAAAAAAAAAAAIAAAAkAAAAAf///53/
76//+dAAAAQgAAAAIAAAABAAAABQAAAGgAAAAD////nf///50AAAB0AAAADQAAAAQAAAAGAAAAmAAA
77AA7///+dAAAABwAAAKAAAAAU////nf///50AAAC5AAAAFQAAAAMAAAAMAAAAywAAABb///+d////
78nQAAANsAAAAXAAAACQAAAAsAAADsAAAAGP///53///+dAAAA/wAAABkAAAAKAAAADgAAAScAAAAa
79////nf///50AAAFDAAAAGwAAAA0AAAAPAAABXgAAABz///+dAAAAEAAAAgAAAAC+////nf///50A
80AAIWAAAA1XRleHQgZG9tYWluIGRpZG4ndCBnZXQgc2V0IHByb3Blcmx5AHJhdyBzdHJpbmcgdHJh
81bnNsYXRpb24gZmFpbGVkAHJhdyBVbmljb2RlIHN0cmluZyB0cmFuc2xhdGlvbiBmYWlsZWQAbnVk
82Z2UgbnVkZ2UAbXVsdGlsaW5lIHN0cmluZyB0cmFuc2xhdGlvbiBmYWlsZWQAbXVsbHVzawBnb3Qg
83dW5leHBlY3RlZCBsb2NhbGVkaXIAZ2V0dGV4dCBpbnN0YWxsZWQAZGdldHRleHQgZmFpbGVkAGRj
84Z2V0dGV4dCBmYWlsZWQAY2FsbGluZyB0ZXh0ZG9tYWluAGNhbGxpbmcgYmluZHRleHRkb21haW4g
85d2l0aCBsb2NhbGRpciAlcwBiaW5kdGV4dGRvbWFpbihOb25lKSBmYWlsZWQAVW5pY29kZSB0cmFu
86c2xhdGlvbiBmYWlsZWQAVGhpcyBtb2R1bGUgcHJvdmlkZXMgaW50ZXJuYXRpb25hbGl6YXRpb24g
87YW5kIGxvY2FsaXphdGlvbgpzdXBwb3J0IGZvciB5b3VyIFB5dGhvbiBwcm9ncmFtcyBieSBwcm92
88aWRpbmcgYW4gaW50ZXJmYWNlIHRvIHRoZSBHTlUKZ2V0dGV4dCBtZXNzYWdlIGNhdGFsb2cgbGli
89cmFyeS4AUmF5bW9uZCBMdXh1cnkgWWFjaC10AAAAAAB3aW5rIHdpbmsAAGJhY29uAAAAAAAAAAAA
90R3V2ZiB6YnFoeXIgY2ViaXZxcmYgdmFncmVhbmd2YmFueXZtbmd2YmEgbmFxIHlicG55dm1uZ3Zi
91YQpmaGNjYmVnIHNiZSBsYmhlIENsZ3ViYSBjZWJ0ZW56ZiBvbCBjZWJpdnF2YXQgbmEgdmFncmVz
92bnByIGdiIGd1ciBUQUgKdHJnZ3JrZyB6cmZmbnRyIHBuZ255YnQgeXZvZW5lbC4AVGhyb2F0d29i
93YmxlciBNYW5ncm92ZQBQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTgpQTy1SZXZp
94c2lvbi1EYXRlOiAyMDAwLTA4LTE4IDIxOjAxLTA0OjAwCkxhc3QtVHJhbnNsYXRvcjogRlVMTCBO
95QU1FIDxFTUFJTEBBRERSRVNTPgpMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPgpN
96SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9Q0hBUlNF
97VApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBFTkNPRElORwoA
98'''
99
100LOCALEDIR = os.path.join('xx', 'LC_MESSAGES')
101MOFILE = os.path.join(LOCALEDIR, 'gettext.mo')
102
103def setup():
104 os.makedirs(LOCALEDIR)
Tim Petersc7951952000-08-26 21:01:27 +0000105 fp = open(MOFILE, 'wb')
Barry Warsawff6d8132000-08-25 19:50:38 +0000106 fp.write(base64.decodestring(GNU_MO_DATA))
107 fp.close()
108
109def teardown():
110 os.unlink(MOFILE)
111 os.removedirs(LOCALEDIR)
112
113
114
115try:
116 setup()
117 test('.', MOFILE)
118finally:
119 teardown()
120 pass
121
122
123
124# For reference, here's the .pot and .po files used to created the .mo data
125# above. The .pot file was generated by pygettext.
126
127# =============================== messages.pot
128
129### SOME DESCRIPTIVE TITLE.
130### Copyright (C) YEAR ORGANIZATION
131### FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
132###
133##msgid ""
134##msgstr ""
135##"Project-Id-Version: PACKAGE VERSION\n"
136##"PO-Revision-Date: Fri Aug 18 20:45:03 2000\n"
137##"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
138##"Language-Team: LANGUAGE <LL@li.org>\n"
139##"MIME-Version: 1.0\n"
140##"Content-Type: text/plain; charset=CHARSET\n"
141##"Content-Transfer-Encoding: ENCODING\n"
142##"Generated-By: pygettext.py 1.1\n"
143
144
145###: Lib/test/test_gettext.py:34
146##msgid "calling textdomain"
147##msgstr ""
148
149###: Lib/test/test_gettext.py:94
150##msgid "dgettext failed"
151##msgstr ""
152
153###: Lib/test/test_gettext.py:25
154##msgid "gettext installed"
155##msgstr ""
156
157###: Lib/test/test_gettext.py:32
158##msgid "bindtextdomain(None) failed"
159##msgstr ""
160
161###: Lib/test/test_gettext.py:44 Lib/test/test_gettext.py:54
162###: Lib/test/test_gettext.py:64 Lib/test/test_gettext.py:74
163##msgid "Raymond Luxury Yach-t"
164##msgstr ""
165
166###: Lib/test/test_gettext.py:41 Lib/test/test_gettext.py:51
167###: Lib/test/test_gettext.py:61 Lib/test/test_gettext.py:71
168##msgid "mullusk"
169##msgstr ""
170
171###: Lib/test/test_gettext.py:38
172##msgid "text domain didn't get set properly"
173##msgstr ""
174
175###: Lib/test/test_gettext.py:98
176##msgid "dcgettext failed"
177##msgstr ""
178
179###: Lib/test/test_gettext.py:47 Lib/test/test_gettext.py:57
180###: Lib/test/test_gettext.py:67 Lib/test/test_gettext.py:77
181##msgid "nudge nudge"
182##msgstr ""
183
184###: Lib/test/test_gettext.py:45 Lib/test/test_gettext.py:55
185###: Lib/test/test_gettext.py:65 Lib/test/test_gettext.py:75
186##msgid "raw string translation failed"
187##msgstr ""
188
189###: Lib/test/test_gettext.py:30
190##msgid "got unexpected localedir"
191##msgstr ""
192
193###: Lib/test/test_gettext.py:48 Lib/test/test_gettext.py:58
194###: Lib/test/test_gettext.py:68 Lib/test/test_gettext.py:78
195##msgid "raw Unicode string translation failed"
196##msgstr ""
197
198###: Lib/test/test_gettext.py:42 Lib/test/test_gettext.py:52
199###: Lib/test/test_gettext.py:62 Lib/test/test_gettext.py:72
200##msgid "Unicode translation failed"
201##msgstr ""
202
203###: Lib/test/test_gettext.py:90
204##msgid "multiline string translation failed"
205##msgstr ""
206
207###: Lib/test/test_gettext.py:81
208##msgid ""
209##"This module provides internationalization and localization\n"
210##"support for your Python programs by providing an interface to the GNU\n"
211##"gettext message catalog library."
212##msgstr ""
213
214###: Lib/test/test_gettext.py:26
215##msgid "calling bindtextdomain with localdir %s"
216##msgstr ""
217
218# =============================== messages.po
219
220### Dummy translation for Python's test_gettext.py module.
221### Copyright (C) 2000 BeOpen.com
222### Barry Warsaw <bwarsaw@beopen.com>, 2000.
223###
224###, fuzzy
225##msgid ""
226##msgstr ""
227##"Project-Id-Version: PACKAGE VERSION\n"
228##"PO-Revision-Date: 2000-08-18 21:01-04:00\n"
229##"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
230##"Language-Team: LANGUAGE <LL@li.org>\n"
231##"MIME-Version: 1.0\n"
232##"Content-Type: text/plain; charset=CHARSET\n"
233##"Content-Transfer-Encoding: ENCODING\n"
234
235### SOME DESCRIPTIVE TITLE.
236### Copyright (C) YEAR ORGANIZATION
237### FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
238###
239##msgid ""
240##msgstr ""
241##"Project-Id-Version: 2.0\n"
242##"PO-Revision-Date: Fri Aug 18 20:45:03 2000\n"
243##"Last-Translator: Barry Warsaw <bwarsaw@beopen.com>\n"
244##"Language-Team: XX <python-dev@python.org>\n"
245##"MIME-Version: 1.0\n"
246##"Content-Type: text/plain; charset=en\n"
247##"Content-Transfer-Encoding: none\n"
248##"Generated-By: pygettext.py 1.1\n"
249
250
251###: Lib/test/test_gettext.py:34
252##msgid "calling textdomain"
253##msgstr ""
254
255###: Lib/test/test_gettext.py:94
256##msgid "dgettext failed"
257##msgstr ""
258
259###: Lib/test/test_gettext.py:25
260##msgid "gettext installed"
261##msgstr ""
262
263###: Lib/test/test_gettext.py:32
264##msgid "bindtextdomain(None) failed"
265##msgstr ""
266
267###: Lib/test/test_gettext.py:44 Lib/test/test_gettext.py:54
268###: Lib/test/test_gettext.py:64 Lib/test/test_gettext.py:74
269##msgid "Raymond Luxury Yach-t"
270##msgstr "Throatwobbler Mangrove"
271
272###: Lib/test/test_gettext.py:41 Lib/test/test_gettext.py:51
273###: Lib/test/test_gettext.py:61 Lib/test/test_gettext.py:71
274##msgid "mullusk"
275##msgstr "bacon"
276
277###: Lib/test/test_gettext.py:38
278##msgid "text domain didn't get set properly"
279##msgstr ""
280
281###: Lib/test/test_gettext.py:98
282##msgid "dcgettext failed"
283##msgstr ""
284
285###: Lib/test/test_gettext.py:47 Lib/test/test_gettext.py:57
286###: Lib/test/test_gettext.py:67 Lib/test/test_gettext.py:77
287##msgid "nudge nudge"
288##msgstr "wink wink"
289
290###: Lib/test/test_gettext.py:45 Lib/test/test_gettext.py:55
291###: Lib/test/test_gettext.py:65 Lib/test/test_gettext.py:75
292##msgid "raw string translation failed"
293##msgstr ""
294
295###: Lib/test/test_gettext.py:30
296##msgid "got unexpected localedir"
297##msgstr ""
298
299###: Lib/test/test_gettext.py:48 Lib/test/test_gettext.py:58
300###: Lib/test/test_gettext.py:68 Lib/test/test_gettext.py:78
301##msgid "raw Unicode string translation failed"
302##msgstr ""
303
304###: Lib/test/test_gettext.py:42 Lib/test/test_gettext.py:52
305###: Lib/test/test_gettext.py:62 Lib/test/test_gettext.py:72
306##msgid "Unicode translation failed"
307##msgstr ""
308
309###: Lib/test/test_gettext.py:90
310##msgid "multiline string translation failed"
311##msgstr ""
312
313###: Lib/test/test_gettext.py:81
314##msgid ""
315##"This module provides internationalization and localization\n"
316##"support for your Python programs by providing an interface to the GNU\n"
317##"gettext message catalog library."
318##msgstr "Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba\n"
319##"fhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH\n"
320##"trggrkg zrffntr pngnybt yvoenel."
321
322###: Lib/test/test_gettext.py:26
323##msgid "calling bindtextdomain with localdir %s"
324##msgstr ""