Source code for jwlib.weblang

"""
Wrapper for website language API
"""
from __future__ import annotations

from .common import _DictWrapper, _get_json

_LANGUAGE_API = 'https://www.jw.org/en/languages'

[docs] class Language(_DictWrapper): def __repr__(self): try: return f'<{self.__class__.__name__} {self.code!r}>' except (TypeError, LookupError, ValueError): return super().__repr__() @property def code(self) -> str: """JW language code""" return self.data['langcode'] @property def isocode(self) -> str: """ISO 639 language code""" return self.data['symbol'] @property def name(self) -> str: """Display name""" return self._get_string('name', '') @property def names(self) -> list[str]: """List of alternative names""" return self.data.get('altSpellings', []) @property def rtl(self) -> bool: """Right to left""" return self.data.get('direction') == 'rtl' @property def script(self) -> str: """Example: ROMAN""" return self.data['script'] @property def signed(self) -> bool: """Sign language""" return self.data['isSignLanguage'] @property def vernacular(self) -> str: """Display name in the language itself""" return self.data['vernacularName']
[docs] def get_languages() -> list[Language]: """Return list of available Languages""" return [Language(L) for L in _get_json(_LANGUAGE_API)['languages']]