Source code for gtts.lang

# -*- coding: utf-8 -*-
from gtts.langs import _main_langs
from warnings import warn
import logging

__all__ = ['tts_langs']

# Logger
log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())


[docs]def tts_langs(): """Languages Google Text-to-Speech supports. Returns: dict: A dictionary of the type `{ '<lang>': '<name>'}` Where `<lang>` is an IETF language tag such as `en` or `zh-TW`, and `<name>` is the full English name of the language, such as `English` or `Chinese (Mandarin/Taiwan)`. The dictionary returned combines languages from two origins: - Languages fetched from Google Translate (pre-generated in :mod:`gtts.langs`) - Languages that are undocumented variations that were observed to work and present different dialects or accents. """ langs = dict() langs.update(_main_langs()) langs.update(_extra_langs()) log.debug("langs: {}".format(langs)) return langs
def _extra_langs(): """Define extra languages. Returns: dict: A dictionnary of extra languages manually defined. Variations of the ones generated in `_main_langs`, observed to provide different dialects or accents or just simply accepted by the Google Translate Text-to-Speech API. """ return { # Chinese 'zh-TW': 'Chinese (Mandarin/Taiwan)', 'zh': 'Chinese (Mandarin)' } def _fallback_deprecated_lang(lang): """Languages Google Text-to-Speech used to support. Language tags that don't work anymore, but that can fallback to a more general language code to maintain compatibility. Args: lang (string): The language tag. Returns: string: The language tag, as-is if not deprecated, or a fallack if it exits. Example: ``en-GB`` returns ``en``. ``en-gb`` returns ``en``. """ deprecated = { # '<fallback>': [<list of deprecated langs>] 'en': ['en-us', 'en-ca', 'en-uk', 'en-gb', 'en-au', 'en-gh', 'en-in', 'en-ie', 'en-nz', 'en-ng', 'en-ph', 'en-za', 'en-tz'], 'fr': ['fr-ca', 'fr-fr'], 'pt': ['pt-br', 'pt-pt'], 'es': ['es-es', 'es-us'], 'zh-CN': ['zh-cn'], 'zh-TW': ['zh-tw'], } for fallback_lang, deprecated_langs in deprecated.items(): if lang.lower() in deprecated_langs: msg = ( "'{}' has been deprecated, falling back to '{}'. " "This fallback will be removed in a future version." ).format(lang, fallback_lang) warn(msg, DeprecationWarning) log.warning(msg) return fallback_lang return lang