def coverage(font, threshold=10): cmap = set(chr(c) for c in font.getBestCmap()) languages = set() scripts = set() partial = {} for locale in Locale.getAvailableLocales(): data = LocaleData(locale) examplar = set("".join(data.getExemplarSet())) if not cmap.isdisjoint(examplar): locale = Locale(locale) locale.addLikelySubtags() diff = examplar - cmap if not diff: scripts.add(locale.getDisplayScript()) languages.add(locale.getDisplayLanguage()) elif len(diff) <= threshold: partial[locale.getDisplayLanguage()] = diff return scripts, languages, partial
class Language(object): def __init__(self, choice): basic_name, code, confidence, bytesize = choice self.locale = Locale(code) self.confidence = float(confidence) self.read_bytes = int(bytesize) @property def name(self): return self.locale.getDisplayLanguage() @property def code(self): return self.locale.getName() def __str__(self): return ("name: {:<12}code: {:<9}confidence: {:>5.1f} " "read bytes:{:>6}".format(self.name, self.code, self.confidence, self.read_bytes)) @staticmethod def from_code(code): return Language(("", code, 100, 0))
def get_locale_name(locale_id: str) -> str: """Returns the name of the locale represented by `locale_id`, in its own language. """ locale = Locale(locale_id) return locale.getDisplayLanguage(locale)