File: test_integration.py

package info (click to toggle)
python-translationstring 1.4-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 248 kB
  • sloc: python: 797; makefile: 70
file content (132 lines) | stat: -rw-r--r-- 5,255 bytes parent folder | download | duplicates (6)
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import unittest
from translationstring.tests.translations import Translations

class TranslatorIntegrationTests(unittest.TestCase):
    def _makeTranslations(self):
        import os
        here = os.path.abspath(os.path.dirname(__file__))
        localedir = os.path.join(here, 'fixtures', 'locales')
        return Translations.load(localedir, locales=['de'])

    def test_translator_ugettext_policy(self):
        translations = self._makeTranslations()
        from translationstring import Translator
        from translationstring import ugettext_policy
        from translationstring import TranslationString

        translator = Translator(translations, ugettext_policy)

        tstring = TranslationString(
            'Enter a comma separated list of user names.')

        result = translator(tstring)
        self.assertEqual(result, 'Eine kommagetrennte Liste von Benutzernamen.')

    def test_translator_dugettext_policy(self):
        translations = self._makeTranslations()
        from translationstring import Translator
        from translationstring import dugettext_policy
        from translationstring import TranslationString

        translator = Translator(translations, dugettext_policy)

        tstring = TranslationString(
            'Enter a comma separated list of user names.')

        result = translator(tstring)
        self.assertEqual(result, 'Eine kommagetrennte Liste von Benutzernamen.')

    def test_translator_with_interpolation(self):
        translations = self._makeTranslations()
        from translationstring import Translator
        from translationstring import dugettext_policy
        from translationstring import TranslationString

        translator = Translator(translations, dugettext_policy)

        tstring = TranslationString('Visit ${url}', mapping={'url':'url'})

        result = translator(tstring)
        self.assertEqual(result, 'Besuchen url')

    def test_translator_with_interpolation_in_translate(self):
        translations = self._makeTranslations()
        from translationstring import Translator
        from translationstring import dugettext_policy
        from translationstring import TranslationString

        translator = Translator(translations, dugettext_policy)

        tstring = TranslationString('Visit ${url}')

        result = translator(tstring, mapping={'url':'url'})
        self.assertEqual(result, 'Besuchen url')

    def test_translator_with_interpolation_overridden_in_translate(self):
        translations = self._makeTranslations()
        from translationstring import Translator
        from translationstring import dugettext_policy
        from translationstring import TranslationString

        translator = Translator(translations, dugettext_policy)

        tstring = TranslationString('Visit ${url}', mapping={'url':'url'})

        result = translator(tstring, mapping={'url':'new_url'})
        self.assertEqual(result, 'Besuchen new_url')

    def test_translator_with_interpolation_partially_overridden_in_translate(self):
        translations = self._makeTranslations()
        from translationstring import Translator
        from translationstring import dugettext_policy
        from translationstring import TranslationString

        translator = Translator(translations, dugettext_policy)

        # Partial initial mapping
        tstring = TranslationString('${one} ${two} ${three}', mapping={
            'one': 'yksi', 'two': 'kaksi'})

        # Partial override
        result = translator(tstring, mapping={'two': 'kakkonen'})
        self.assertEqual(result, 'yksi kakkonen ${three}')

        # Make sure original mapping is not touched
        self.assertEqual(tstring.mapping, {'one': 'yksi', 'two': 'kaksi'})


class PluralizerIntegrationTests(unittest.TestCase):
    def _makeTranslations(self):
        import os
        here = os.path.abspath(os.path.dirname(__file__))
        localedir = os.path.join(here, 'fixtures', 'locales')
        return Translations.load(localedir, locales=['de'])

    def test_pluralizer_ungettext_policy(self):
        translations = self._makeTranslations()
        from translationstring import Pluralizer
        from translationstring import ungettext_policy

        pluralizer = Pluralizer(translations, ungettext_policy)

        result = pluralizer('Unable to find user: ${users}',
                            'Unable to find users: ${users}',
                            1,
                            mapping={'users':'users'})
        self.assertEqual(result,
                         "Benutzer konnte nicht gefunden werden: users")

    def test_pluralizer_dungettext_policy(self):
        translations = self._makeTranslations()
        from translationstring import Pluralizer
        from translationstring import dungettext_policy

        pluralizer = Pluralizer(translations, dungettext_policy)

        result = pluralizer('Unable to find user: ${users}',
                            'Unable to find users: ${users}',
                            1,
                            domain='messages',
                            mapping={'users':'users'})
        self.assertEqual(result,
                         "Benutzer konnte nicht gefunden werden: users")