Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tests/units/toolkit/i18n.py
blob: 6c4c0cade5ec816282a2c592a0d0229164d6621a (plain)
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()