84 lines
2.1 KiB
JavaScript
84 lines
2.1 KiB
JavaScript
const i18n = {};
|
|
const languageDefault = 'en';
|
|
const defaultEngText = {
|
|
title: 'Download Twake Mail application',
|
|
description: 'Faster and more convenient',
|
|
open: 'Open'
|
|
};
|
|
|
|
/**
|
|
* @description Check if the language is valid
|
|
* @param {String} language
|
|
* @returns {boolean}
|
|
*/
|
|
function isValidUserLanguage(language) {
|
|
if (language == null || language == undefined) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @description Get the user language
|
|
* @returns {String}
|
|
*/
|
|
function getUserLanguage() {
|
|
console.info(`[Twake Mail] Current Language: `, navigator.language);
|
|
if (isValidUserLanguage(navigator.language)) {
|
|
return navigator.language.split('-')[0];
|
|
}
|
|
return languageDefault;
|
|
}
|
|
|
|
/**
|
|
* @description Load the language resources
|
|
* @returns {Promise<void>}
|
|
*/
|
|
async function loadLanguageResources() {
|
|
const language = getUserLanguage();
|
|
try {
|
|
const response = await fetch(`/i18n/${language}.json`);
|
|
const data = await response.json();
|
|
i18n[language] = data;
|
|
console.info(`[Twake Mail] Successfully loaded ${language} resources:`, i18n[language]);
|
|
} catch (error) {
|
|
console.error(`[Twake Mail] Error loading ${language} resources:`, error);
|
|
i18n['en'] = defaultEngText;
|
|
console.info(`[Twake Mail] Using default English resources:`, i18n['en']);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description Set the text content of smart banner
|
|
* @typedef SetTextContentParams
|
|
* @property {String} id
|
|
* @property {String} text
|
|
* @param {SetTextContentParams} param
|
|
* @returns {void}
|
|
*/
|
|
function setTextContent({id, text}) {
|
|
document.getElementById(id).textContent = text;
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
const language = getUserLanguage();
|
|
|
|
let languageResources = defaultEngText;
|
|
|
|
if (i18n[language] !== null && i18n[language] !== undefined) {
|
|
languageResources = i18n[language];
|
|
}
|
|
|
|
setTextContent({
|
|
id: 'banner-title-id',
|
|
text: languageResources.title
|
|
});
|
|
setTextContent({
|
|
id: 'banner-description-id',
|
|
text: languageResources.description
|
|
});
|
|
setTextContent({
|
|
id: 'open-button-id',
|
|
text: languageResources.open
|
|
});
|
|
}); |