Skip to content

Commit 4d58c8c

Browse files
authored
pythongh-130320: gettext: Test fallback translations (pythonGH-130321)
1 parent 4a88bba commit 4d58c8c

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

Lib/test/test_gettext.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,62 @@ def test_cache(self):
748748
self.assertEqual(t.__class__, DummyGNUTranslations)
749749

750750

751+
class FallbackTranslations(gettext.NullTranslations):
752+
def gettext(self, message):
753+
return f'gettext: {message}'
754+
755+
def ngettext(self, msgid1, msgid2, n):
756+
return f'ngettext: {msgid1}, {msgid2}, {n}'
757+
758+
def pgettext(self, context, message):
759+
return f'pgettext: {context}, {message}'
760+
761+
def npgettext(self, context, msgid1, msgid2, n):
762+
return f'npgettext: {context}, {msgid1}, {msgid2}, {n}'
763+
764+
765+
class FallbackTestCase(GettextBaseTest):
766+
def test_null_translations_fallback(self):
767+
t = gettext.NullTranslations()
768+
t.add_fallback(FallbackTranslations())
769+
self.assertEqual(t.gettext('foo'), 'gettext: foo')
770+
self.assertEqual(t.ngettext('foo', 'foos', 1),
771+
'ngettext: foo, foos, 1')
772+
self.assertEqual(t.pgettext('context', 'foo'),
773+
'pgettext: context, foo')
774+
self.assertEqual(t.npgettext('context', 'foo', 'foos', 1),
775+
'npgettext: context, foo, foos, 1')
776+
777+
def test_gnu_translations_fallback(self):
778+
with open(MOFILE, 'rb') as fp:
779+
t = gettext.GNUTranslations(fp)
780+
t.add_fallback(FallbackTranslations())
781+
self.assertEqual(t.gettext('foo'), 'gettext: foo')
782+
self.assertEqual(t.ngettext('foo', 'foos', 1),
783+
'ngettext: foo, foos, 1')
784+
self.assertEqual(t.pgettext('context', 'foo'),
785+
'pgettext: context, foo')
786+
self.assertEqual(t.npgettext('context', 'foo', 'foos', 1),
787+
'npgettext: context, foo, foos, 1')
788+
789+
def test_nested_fallbacks(self):
790+
class NestedFallback(gettext.NullTranslations):
791+
def gettext(self, message):
792+
if message == 'foo':
793+
return 'fallback'
794+
return super().gettext(message)
795+
796+
fallback1 = NestedFallback()
797+
fallback2 = FallbackTranslations()
798+
t = gettext.NullTranslations()
799+
t.add_fallback(fallback1)
800+
t.add_fallback(fallback2)
801+
802+
self.assertEqual(fallback1.gettext('bar'), 'gettext: bar')
803+
self.assertEqual(t.gettext('foo'), 'fallback')
804+
self.assertEqual(t.gettext('bar'), 'gettext: bar')
805+
806+
751807
class ExpandLangTestCase(unittest.TestCase):
752808
def test_expand_lang(self):
753809
# Test all combinations of territory, charset and

0 commit comments

Comments
 (0)