예제 #1
0
def get_messages(language, messagefiles, fallback="eng", fileformat="json"):
    """Get a dict with message-name: value for a language based on file. Default to english version if missing.

    Args:
        language (str): language to load
        messagefiles (str): path to messages.  Example: /path/{}
        fallback (str): fallback language if requested is missing messages. Default: 'eng'
        fileformat (str): filetype. Default: json

    Returns:
        dict: message-name: value for each detected message

    Raises:
        ValueError: 'language' parameter does not match a valid language with a file.
    """
    available_lang_codes = get_available_languages(messagefiles,
                                                   fileformat=fileformat)
    with open(f'{messagefiles.rstrip("/")}/{fallback}.{fileformat}',
              "r") as messagefileeng:
        messages = loads(messagefileeng.read())
        if language in available_lang_codes:
            if language != fallback:
                with open(
                        f'{messagefiles.rstrip("/")}/{language}.{fileformat}',
                        "r") as messagefilelangs:
                    filedata = loads(messagefilelangs.read())
                    for message in filedata.keys():
                        messages[message] = filedata[message]
        else:
            raise ValueError("Language is not available")
    return messages
예제 #2
0
def test_get_available_not_on_non_lang_trailing():
    """Check langlist does not include incorrect language."""
    langlist = get_available_languages(LANGDIRTRAIL)
    assert "aaj" not in langlist
예제 #3
0
def test_get_available_not_on_missing_trailing():
    """Check langlist does not include missing file."""
    langlist = get_available_languages(LANGDIRTRAIL)
    assert "aaa" not in langlist
예제 #4
0
def test_get_available_languages_exists_trailing():
    """Check langlist includes valid file."""
    langlist = get_available_languages(LANGDIRTRAIL)
    assert "eng" in langlist