1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#!/usr/bin/env python
# sugar-lint: disable
import gettext
from __init__ import tests
from sugar_network.toolkit import i18n
class I18nTest(tests.Test):
def test_decode(self):
# Fallback to default lang
i18n._default_langs = ['default']
self.assertEqual('foo', i18n.decode({'lang': 'foo', 'default': 'bar'}, 'lang'))
self.assertEqual('bar', i18n.decode({'lang': 'foo', 'default': 'bar'}, 'fake'))
# Exact accept_language
self.assertEqual('', i18n.decode(None, 'lang'))
self.assertEqual('foo', i18n.decode('foo', 'lang'))
self.assertEqual('foo', i18n.decode({'lang': 'foo', 'fake': 'bar', 'default': 'default'}, 'lang'))
self.assertEqual('foo', i18n.decode({'lang': 'foo', 'fake': 'bar', 'default': 'default'}, ['lang', 'fake']))
self.assertEqual('bar', i18n.decode({'lang': 'foo', 'fake': 'bar', 'default': 'default'}, ['fake', 'lang']))
# Last resort
self.assertEqual('foo', i18n.decode({'1': 'foo', '2': 'bar'}, 'fake'))
# Primed accept_language
self.assertEqual('foo', i18n.decode({'1': 'foo', '2': 'bar', 'default': 'default'}, '1-a'))
# Primed i18n value
self.assertEqual('bar', i18n.decode({'1-a': 'foo', '1': 'bar', 'default': 'default'}, '1-b'))
self.assertEqual('foo', i18n.decode({'1-a': 'foo', '2': 'bar', 'default': 'default'}, '1-b'))
def test_decode_EnAsTheLastResort(self):
i18n._default_langs = ['en-us']
self.assertEqual('right', i18n.decode({'a': 'wrong', 'en': 'right'}, 'probe'))
self.assertEqual('exact', i18n.decode({'a': 'wrong', 'en': 'right', 'probe': 'exact'}, 'probe'))
def test_encode(self):
self.assertEqual({
'en': 'Delete Log File',
'es': 'Borrar el archivo de registro',
'fr': 'Supprimer le fichier log',
}, i18n.encode('Delete Log File'))
self.assertEqual({
'en': "Error: Can't open file 'probe'\n",
'es': "Error: No se puede abrir el archivo 'probe'\n",
'fr': "Erreur : Ouverture du fichier 'probe' impossible\n",
}, i18n.encode("Error: Can't open file '%s'\n", 'probe'))
self.assertEqual({
'en': "Error: Can't open file '1'\n",
'es': "Error: No se puede abrir el archivo '2'\n",
'fr': "Erreur : Ouverture du fichier '3' impossible\n",
}, i18n.encode("Error: Can't open file '%s'\n", {'en': 1, 'es': 2, 'fr': 3}))
self.assertEqual({
'en': '1 when deleting 5',
'es': '2 borrando 6',
'fr': '3 lors de la suppression de 7',
}, i18n.encode('%(error)s when deleting %(file)s', error={'en': 1, 'es': 2, 'fr': 3}, file={'en': 5, 'es': 6, 'fr': 7}))
if __name__ == '__main__':
tests.main()
|