Ejemplo n.º 1
0
    def test_get_available_languages(self):
        # All the available languages for which locale data is available
        def _mock_locale_identifiers():
            return ['zh', 'es', 'nl', 'fr']

        self.stubs.Set(localedata,
                       'list' if hasattr(localedata, 'list')
                       else 'locale_identifiers',
                       _mock_locale_identifiers)

        # Only the languages available for a specific translation domain
        def _mock_gettext_find(domain, localedir=None, languages=[], all=0):
            if domain == 'test_domain':
                return 'translation-file' if any(x in ['zh', 'es']
                                                 for x in languages) else None
            return None
        self.stubs.Set(gettext, 'find', _mock_gettext_find)

        domain_languages = gettextutils.get_available_languages('test_domain')
        # en_US should always be available no matter the domain
        # en_US should also always be the first element since order matters
        # finally only the domain languages should be included after en_US
        self.assertTrue('en_US', domain_languages)
        self.assertEquals(3, len(domain_languages))
        self.assertEquals('en_US', domain_languages[0])
        self.assertTrue('zh' in domain_languages)
        self.assertTrue('es' in domain_languages)

        # Clear languages to test an unknown domain
        gettextutils._AVAILABLE_LANGUAGES = []
        unknown_domain_languages = gettextutils.get_available_languages('huh')
        self.assertEquals(1, len(unknown_domain_languages))
        self.assertTrue('en_US' in unknown_domain_languages)
Ejemplo n.º 2
0
    def test_get_available_languages(self):
        # All the available languages for which locale data is available
        def _mock_locale_identifiers():
            # 'zh', 'zh_Hant'. 'zh_Hant_HK', 'fil' all have aliases missing
            # from babel but we add them in gettextutils, we test that here too
            return ['zh', 'es', 'nl', 'fr', 'zh_Hant', 'zh_Hant_HK', 'fil']

        self.stubs.Set(localedata,
                       'list' if hasattr(localedata, 'list')
                       else 'locale_identifiers',
                       _mock_locale_identifiers)

        # Only the languages available for a specific translation domain
        def _mock_gettext_find(domain, localedir=None, languages=[], all=0):
            if domain == 'domain_1':
                return 'translation-file' if any(x in ['zh', 'es', 'fil']
                                                 for x in languages) else None
            elif domain == 'domain_2':
                return 'translation-file' if any(x in ['fr', 'zh_Hant']
                                                 for x in languages) else None
            return None
        self.stubs.Set(gettext, 'find', _mock_gettext_find)

        # en_US should always be available no matter the domain
        # and it should also always be the first element since order matters
        domain_1_languages = gettextutils.get_available_languages('domain_1')
        domain_2_languages = gettextutils.get_available_languages('domain_2')
        self.assertEqual('en_US', domain_1_languages[0])
        self.assertEqual('en_US', domain_2_languages[0])
        # The domain languages should be included after en_US with
        # with their respective aliases when it applies
        self.assertEqual(6, len(domain_1_languages))
        self.assertIn('zh', domain_1_languages)
        self.assertIn('zh_CN', domain_1_languages)
        self.assertIn('es', domain_1_languages)
        self.assertIn('fil', domain_1_languages)
        self.assertIn('tl_PH', domain_1_languages)
        self.assertEqual(4, len(domain_2_languages))
        self.assertIn('fr', domain_2_languages)
        self.assertIn('zh_Hant', domain_2_languages)
        self.assertIn('zh_TW', domain_2_languages)
        self.assertEqual(2, len(gettextutils._AVAILABLE_LANGUAGES))
        # Now test an unknown domain, only en_US should be included
        unknown_domain_languages = gettextutils.get_available_languages('huh')
        self.assertEqual(1, len(unknown_domain_languages))
        self.assertIn('en_US', unknown_domain_languages)
Ejemplo n.º 3
0
    def test_get_available_languages(self):
        # All the available languages for which locale data is available
        def _mock_locale_identifiers():
            return ['zh', 'es', 'nl', 'fr']

        self.stubs.Set(
            localedata,
            'list' if hasattr(localedata, 'list') else 'locale_identifiers',
            _mock_locale_identifiers)

        # Only the languages available for a specific translation domain
        def _mock_gettext_find(domain, localedir=None, languages=[], all=0):
            if domain == 'domain_1':
                return 'translation-file' if any(x in ['zh', 'es']
                                                 for x in languages) else None
            elif domain == 'domain_2':
                return 'translation-file' if any(x in ['fr']
                                                 for x in languages) else None
            return None

        self.stubs.Set(gettext, 'find', _mock_gettext_find)

        # en_US should always be available no matter the domain
        # and it should also always be the first element since order matters
        domain_1_languages = gettextutils.get_available_languages('domain_1')
        domain_2_languages = gettextutils.get_available_languages('domain_2')
        self.assertEquals('en_US', domain_1_languages[0])
        self.assertEquals('en_US', domain_2_languages[0])
        # Only the domain languages should be included after en_US
        self.assertEquals(3, len(domain_1_languages))
        self.assertIn('zh', domain_1_languages)
        self.assertIn('es', domain_1_languages)
        self.assertEquals(2, len(domain_2_languages))
        self.assertIn('fr', domain_2_languages)
        self.assertEquals(2, len(gettextutils._AVAILABLE_LANGUAGES))
        # Now test an unknown domain, only en_US should be included
        unknown_domain_languages = gettextutils.get_available_languages('huh')
        self.assertEquals(1, len(unknown_domain_languages))
        self.assertIn('en_US', unknown_domain_languages)
Ejemplo n.º 4
0
    def test_get_available_languages(self):
        # All the available languages for which locale data is available
        def _mock_locale_identifiers():
            return ["zh", "es", "nl", "fr"]

        self.stubs.Set(
            localedata, "list" if hasattr(localedata, "list") else "locale_identifiers", _mock_locale_identifiers
        )

        # Only the languages available for a specific translation domain
        def _mock_gettext_find(domain, localedir=None, languages=[], all=0):
            if domain == "domain_1":
                return "translation-file" if any(x in ["zh", "es"] for x in languages) else None
            elif domain == "domain_2":
                return "translation-file" if any(x in ["fr"] for x in languages) else None
            return None

        self.stubs.Set(gettext, "find", _mock_gettext_find)

        # en_US should always be available no matter the domain
        # and it should also always be the first element since order matters
        domain_1_languages = gettextutils.get_available_languages("domain_1")
        domain_2_languages = gettextutils.get_available_languages("domain_2")
        self.assertEqual("en_US", domain_1_languages[0])
        self.assertEqual("en_US", domain_2_languages[0])
        # Only the domain languages should be included after en_US
        self.assertEqual(3, len(domain_1_languages))
        self.assertIn("zh", domain_1_languages)
        self.assertIn("es", domain_1_languages)
        self.assertEqual(2, len(domain_2_languages))
        self.assertIn("fr", domain_2_languages)
        self.assertEqual(2, len(gettextutils._AVAILABLE_LANGUAGES))
        # Now test an unknown domain, only en_US should be included
        unknown_domain_languages = gettextutils.get_available_languages("huh")
        self.assertEqual(1, len(unknown_domain_languages))
        self.assertIn("en_US", unknown_domain_languages)