Esempio n. 1
0
def best_match(requested_langs: LanguageAccept,
               supported_langs: list) -> Optional[str]:
    result = requested_langs.best_match(supported_langs)

    if result is None:
        # Try again with just the language codes (no country/region codes).
        requested = []

        for code, weight in requested_langs:
            code = code.split("-")[0]
            requested.append((code, weight))

        supported_shorted = [code.split("-")[0] for code in supported_langs]
        result = LanguageAccept(requested).best_match(supported_shorted)

        # If match, convert back to the full language code.
        if result:
            idx = supported_shorted.index(result)
            result = supported_langs[idx]

    return result
 def test_best_match_fallback(self, values, matches, default, expect):
     accept = LanguageAccept(values)
     best = accept.best_match(matches, default=default)
     assert best == expect