import {getRestServiceUrl} from './global'; let dictionary; let version; let language; const clearDictionary = () => { window.localStorage.removeItem('dictionary'); } const loadDictionary = (version, language) => { const localDictionary = window.localStorage.getItem('dictionary'); if (localDictionary) { const json = JSON.parse(localDictionary); if (json.version === version && json.language === language) { dictionary = json.dictionary; return; } //console.log("Version=" + version + ", lang="+ language + ", json.version=" + json.version + ", json.language=" + json.language); } else { //console.log("Version=" + version + ", lang="+ language + ", json=undefined"); } fetchNewDictionary(version, language); }; const fetchNewDictionary = (currentVersion, currentLanguage) => { //e.log(new Date().toISOString() + ": version=" + currentVersion + ", lang=" + currentLanguage); fetch(getRestServiceUrl('i18n/list'), { method: 'GET', headers: { 'Accept': 'application/json' } }) .then(response => { if (!response.ok) { throw new Error(response.statusText); } return response.json(); }) .then(json => { dictionary = json; version = currentVersion; language = currentLanguage; saveDictionary(); }); }; const saveDictionary = () => window.localStorage.setItem('dictionary', JSON.stringify({ version, language, dictionary })); const getTranslation = (key, params) => { if (!dictionary) { return ''; } let message = dictionary[key]; if (message && params) { params.forEach((param, index) => { message = message.replace(`{${index}}`, param); }); } return message; }; export {clearDictionary, getTranslation, loadDictionary, fetchNewDictionary};