feat: ajoute le système i18n frontend (FR/EN)
- Crée js/i18n/i18n.js : module central avec t(), getLocale(), setLocale() - Crée js/i18n/locales/fr.json et en.json : traductions FR et EN - Crée js/i18n/applyTranslations.js : applique les data-i18n au DOM - Crée js/i18n/langSwitcher.js : sélecteur de langue (boutons FR/EN) - Modifie index.html : ajoute les attributs data-i18n sur tous les textes - Modifie js/main.js : intègre i18n et relance l'application des traductions - Modifie css/form.css : styles pour le sélecteur de langue - Persistance de la langue dans localStorage (clé cv_lang)
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
import { getLocale, setLocale, getSupportedLocales } from './i18n.js';
|
||||
|
||||
export function initLangSwitcher() {
|
||||
const switcher = document.getElementById('lang-switcher');
|
||||
if (!switcher) return;
|
||||
|
||||
const supported = getSupportedLocales();
|
||||
switcher.innerHTML = supported
|
||||
.map(lang => `<button class="lang-btn${lang === getLocale() ? ' active' : ''}" data-lang="${lang}">${lang.toUpperCase()}</button>`)
|
||||
.join('');
|
||||
|
||||
switcher.addEventListener('click', (e) => {
|
||||
const btn = e.target.closest('.lang-btn');
|
||||
if (!btn) return;
|
||||
setLocale(btn.dataset.lang);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user