100 lines
1.9 KiB
JavaScript
100 lines
1.9 KiB
JavaScript
/*
|
|
* GLOBAL VARIABLE!
|
|
* list of loaded scripts (only itself at start)
|
|
**/
|
|
var __scripts = [ 'main.js' ];
|
|
var __lang = undefined;
|
|
|
|
async function load_lang()
|
|
{
|
|
let language = navigator.language.slice(0,2).toLowerCase();
|
|
if (!(['en', 'fr'].includes(language)))
|
|
{
|
|
language === 'en';
|
|
}
|
|
__lang = await fetch('./lang/'+language+'.json')
|
|
.then((response) => response.json())
|
|
.then((json) => { return json });
|
|
console.info(_('success_load'));
|
|
}
|
|
|
|
/* i18n small function */
|
|
function _(content, replacements = {})
|
|
{
|
|
if (typeof __lang !== 'undefined')
|
|
{
|
|
if (content in __lang)
|
|
{
|
|
content = __lang[content];
|
|
}
|
|
}
|
|
if (Object.keys(replacements).length)
|
|
{
|
|
let tokens = content.split(/({[^}\\]*})/g);
|
|
Object.keys(replacements).forEach((name) =>
|
|
{
|
|
if (tokens.includes('{'+name+'}'))
|
|
{
|
|
Object.keys(tokens).forEach((key) =>
|
|
{
|
|
if ('{'+name+'}' === tokens[key])
|
|
{
|
|
tokens[key] = replacements[name];
|
|
}
|
|
});
|
|
}
|
|
});
|
|
content = tokens.join('');
|
|
}
|
|
return content;
|
|
}
|
|
|
|
/* include other scripts to the html file */
|
|
async function include(src, script_list)
|
|
{
|
|
/* DOM operations */
|
|
let script = document.createElement('script');
|
|
script.setAttribute('src' , src );
|
|
document.getElementsByTagName('head')[0].appendChild(script);
|
|
|
|
/* check if the element is added to the DOM */
|
|
let script_loaded = new Promise( (resolve, reject) => {
|
|
if (script !== undefined)
|
|
{
|
|
script.addEventListener('load', () => {
|
|
resolve(0);
|
|
});
|
|
}
|
|
else
|
|
{
|
|
reject(_('err_include', {src: src}))
|
|
}
|
|
} );
|
|
|
|
script_list.push(src); // the script is considered as loaded
|
|
|
|
return script_loaded.then(
|
|
() =>
|
|
{
|
|
console.info(_(
|
|
'script_load',
|
|
{
|
|
script: src,
|
|
} ,
|
|
));
|
|
return script_list
|
|
},
|
|
(error) => {
|
|
throw error;
|
|
}
|
|
);
|
|
}
|
|
|
|
async function launch()
|
|
{
|
|
await load_lang();
|
|
__scripts = await include('./lichartee.js', __scripts);
|
|
__scripts = await include('./test.js', __scripts);
|
|
}
|
|
|
|
launch()
|