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