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
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
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
def test_get_available_languages_exists_trailing(): """Check langlist includes valid file.""" langlist = get_available_languages(LANGDIRTRAIL) assert "eng" in langlist