radh-ui
Version:
Stencil Component Starter
29 lines (28 loc) • 1.04 kB
JavaScript
function getComponentClosestLanguage(element) {
let closestElement = element.closest('[lang]');
return closestElement ? closestElement.lang : 'en';
}
function fetchLocaleStringsForComponent(componentName, locale) {
return new Promise((resolve, reject) => {
fetch(`/assets/i18n/${componentName}.${locale}.json`)
.then((result) => {
if (result.ok)
resolve(result.json());
else
reject();
}, () => reject());
});
}
export async function getLocaleComponentStrings(element) {
let componentName = element.tagName.toLowerCase();
let componentLanguage = getComponentClosestLanguage(element);
let strings;
try {
strings = await fetchLocaleStringsForComponent(componentName, componentLanguage);
}
catch (e) {
console.warn(`no locale for ${componentName} (${componentLanguage}) loading default locale en.`);
strings = await fetchLocaleStringsForComponent(componentName, 'en');
}
return strings;
}