Exemplo n.º 1
0
    def test_countries(self):
        for s, country, expected in country_test_cases:
            languages = get_country_languages(country)
            self.assertTrue(bool(languages))

            lang = disambiguate_language(s, languages.items())
            self.assertEqual(lang, expected, '{} != {} for {}, langs={}'.format(lang, expected, s, languages.items()))
Exemplo n.º 2
0
    def test_countries(self):
        for s, country, expected in country_test_cases:
            languages = get_country_languages(country)
            self.assertTrue(bool(languages))

            lang = disambiguate_language(s, languages.items())
            self.assertEqual(
                lang, expected,
                '{} != {} for {}, langs={}'.format(lang, expected, s,
                                                   languages.items()))
Exemplo n.º 3
0
    def test_regional(self):
        for s, country, k, v, expected in regional_test_cases:
            languages = get_country_languages(country)
            self.assertTrue(bool(languages))
            regional = get_regional_languages(country, k, v)
            self.assertTrue(bool(regional))
            regional.update(languages)

            lang = disambiguate_language(s, regional.items())

            self.assertEqual(lang, expected, '{} != {} for {}, langs={}'.format(lang, expected, s, regional.items()))
Exemplo n.º 4
0
    def test_regional(self):
        for s, country, k, v, expected in regional_test_cases:
            languages = get_country_languages(country)
            self.assertTrue(bool(languages))
            regional = get_regional_languages(country, k, v)
            self.assertTrue(bool(regional))
            regional.update(languages)

            lang = disambiguate_language(s, regional.items())

            self.assertEqual(
                lang, expected,
                '{} != {} for {}, langs={}'.format(lang, expected, s,
                                                   regional.items()))
Exemplo n.º 5
0
    def best_country_and_language(self, latitude, longitude, name):
        country, candidate_languages, language_props = self.country_and_languages(
            latitude, longitude)
        if not (country and candidate_languages):
            return None, None

        num_langs = len(candidate_languages)
        default_langs = set(
            [l['lang'] for l in candidate_languages if l.get('default')])
        num_defaults = len(default_langs)

        regional_defaults = 0
        country_defaults = 0
        regional_langs = set()
        country_langs = set()
        for p in language_props:
            if p['admin_level'] > 0:
                regional_defaults += sum(
                    (1 for lang in p['languages'] if lang.get('default')))
                regional_langs |= set([l['lang'] for l in p['languages']])
            else:
                country_defaults += sum(
                    (1 for lang in p['languages'] if lang.get('default')))
                country_langs |= set([l['lang'] for l in p['languages']])

        if num_langs == 1:
            return country, candidate_languages[0]['lang']
        else:
            lang = disambiguate_language(name, [(l['lang'], l['default'])
                                                for l in candidate_languages])
            default_lang = candidate_languages[0]['lang']

            if lang == UNKNOWN_LANGUAGE and num_defaults == 1:
                return country, default_lang
            elif lang == AMBIGUOUS_LANGUAGE:
                return country, lang
            elif lang != UNKNOWN_LANGUAGE:
                if lang != default_lang and lang in country_langs and country_defaults > 1 and regional_defaults > 0 and lang in WELL_REPRESENTED_LANGUAGES:
                    return country, UNKNOWN_LANGUAGE
                return country, lang
            else:
                return country, lang
Exemplo n.º 6
0
    def best_country_and_language(self, latitude, longitude, name):
        country, candidate_languages, language_props = self.country_and_languages(latitude, longitude)
        if not (country and candidate_languages):
            return None, None

        num_langs = len(candidate_languages)
        default_langs = set([l['lang'] for l in candidate_languages if l.get('default')])
        num_defaults = len(default_langs)

        regional_defaults = 0
        country_defaults = 0
        regional_langs = set()
        country_langs = set()
        for p in language_props:
            if p['admin_level'] > 0:
                regional_defaults += sum((1 for lang in p['languages'] if lang.get('default')))
                regional_langs |= set([l['lang'] for l in p['languages']])
            else:
                country_defaults += sum((1 for lang in p['languages'] if lang.get('default')))
                country_langs |= set([l['lang'] for l in p['languages']])

        if num_langs == 1:
            return country, candidate_languages[0]['lang']
        else:
            lang = disambiguate_language(name, [(l['lang'], l['default']) for l in candidate_languages])
            default_lang = candidate_languages[0]['lang']

            if lang == UNKNOWN_LANGUAGE and num_defaults == 1:
                return country, default_lang
            elif lang == AMBIGUOUS_LANGUAGE:
                return country, lang
            elif lang != UNKNOWN_LANGUAGE:
                if lang != default_lang and lang in country_langs and country_defaults > 1 and regional_defaults > 0 and lang in WELL_REPRESENTED_LANGUAGES:
                    return country, UNKNOWN_LANGUAGE
                return country, lang
            else:
                return country, lang