mirror of
https://forge.chapril.org/tykayn/libre-charge-map
synced 2025-06-20 01:34:43 +02:00
70 lines
1.9 KiB
JavaScript
70 lines
1.9 KiB
JavaScript
![]() |
|
||
|
/**
|
||
|
* Gestion des traductions dans libre charge map
|
||
|
*/
|
||
|
class LcmI18n {
|
||
|
|
||
|
constructor() {
|
||
|
this.i18n = {};
|
||
|
this.language = this.detectLanguage();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Détecte la langue préférée du navigateur
|
||
|
* @returns {string} Code de langue sur 2 caractères (ex: 'fr', 'en')
|
||
|
*/
|
||
|
detectLanguage() {
|
||
|
// Récupérer la langue du navigateur
|
||
|
const browserLang = navigator.language || navigator.userLanguage;
|
||
|
|
||
|
// Extraire les 2 premiers caractères (code langue)
|
||
|
const lang = browserLang.substring(0, 2).toLowerCase();
|
||
|
|
||
|
// Par défaut retourner 'en' si la langue n'est pas reconnue
|
||
|
return lang || 'en';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Récupère la langue courante
|
||
|
* @returns {string} Code de langue sur 2 caractères (ex: 'fr', 'en')
|
||
|
*/
|
||
|
getCurrentLanguage() {
|
||
|
return this.language;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Traduit une chaîne de caractères dans la langue courante
|
||
|
* @param {string} key - Clé de traduction
|
||
|
* @param {Object} params - Paramètres optionnels pour la substitution
|
||
|
* @returns {string} Chaîne traduite
|
||
|
*/
|
||
|
translate(key, params = {}) {
|
||
|
// Vérifier si la clé existe dans les traductions
|
||
|
if (!this.i18n[this.language] || !this.i18n[this.language][key]) {
|
||
|
console.error(`[LcmI18n] Clé de traduction introuvable: "${key}" pour la langue "${this.language}"`);
|
||
|
|
||
|
return 'I18N_RROR[' + key + ']';
|
||
|
}
|
||
|
// Obtenir les traductions pour la langue courante
|
||
|
const translations = this.i18n[this.language] || {};
|
||
|
|
||
|
// Récupérer la traduction ou utiliser la clé par défaut
|
||
|
let translation = translations[key] || key;
|
||
|
|
||
|
// Remplacer les paramètres dans la traduction
|
||
|
Object.keys(params).forEach(param => {
|
||
|
translation = translation.replace(`{${param}}`, params[param]);
|
||
|
});
|
||
|
|
||
|
return translation;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Alias raccourci pour la méthode translate()
|
||
|
*/
|
||
|
t(key, params = {}) {
|
||
|
return this.translate(key, params);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export const lcm_i18n = new LcmI18n();
|