How to use the langcodes.tag_parser.parse function in langcodes

To help you get started, we’ve selected a few langcodes examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github LuminosoInsight / langcodes / langcodes / semantics.py View on Github external
{'language': 'sgn', 'region': 'US'}

    >>> pprint(tag_to_meaning('zh-cmn-Hant'))  # promote extlangs to languages
    {'language': 'cmn', 'macrolanguage': 'zh', 'script': 'Hant'}

    >>> pprint(tag_to_meaning('zh-cmn-Hant', normalize=False))
    {'extlang': {'cmn'}, 'language': 'zh', 'script': 'Hant'}
    """
    meaning = {}
    # if the complete tag appears as something to normalize, do the
    # normalization right away. Smash case when checking, because the
    # case normalization that comes from parse() hasn't been applied yet.
    if normalize and tag.lower() in NORMALIZED_LANGUAGES:
        tag = NORMALIZED_LANGUAGES[tag.lower()]

    components = parse(tag)

    for typ, value in components:
        if typ == 'extlang' and normalize and meaning['language']:
            # smash extlangs when possible
            minitag = '%s-%s' % (meaning['language'], value)
            if minitag in NORMALIZED_LANGUAGES:
                meaning.update(tag_to_meaning(NORMALIZED_LANGUAGES[minitag], normalize))
            else:
                meaning.setdefault(typ, set()).add(value)
        elif typ in {'extlang', 'variant', 'extension'}:
            meaning.setdefault(typ, set()).add(value)
        elif typ == 'language':
            if value == 'und':
                pass
            elif normalize and value in NORMALIZED_LANGUAGES:
                replacement = NORMALIZED_LANGUAGES[value]