24 lines
789 B
JavaScript
24 lines
789 B
JavaScript
export const translations = $state({
|
|
values: {}
|
|
})
|
|
|
|
export async function loadTranslation(lang){
|
|
var url = `${location.protocol}//${location.host.replace('5173','8080')}/api/translations/${lang}`;
|
|
translations.values = await fetch(url).then(resp => resp.json());
|
|
}
|
|
|
|
export function t(key,args = {}){
|
|
if (key === undefined) return "";
|
|
if (key instanceof Response) key = 'status.'+key.status;
|
|
let set = translations.values;
|
|
let keys = key.split('.');
|
|
for (let token of keys){
|
|
if (!set[token]){
|
|
console.warn('Missing translation for '+key);
|
|
return keys[keys.length-1].replaceAll('_',' ');
|
|
}
|
|
set = set[token];
|
|
}
|
|
for (var key of Object.keys(args)) set = set.replace(`{${key}}`,args[key]);
|
|
return set;
|
|
} |