4e9746c308
- 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)
45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
import { collectIdentite, renderIdentite } from './sections/identite.js';
|
|
import { collectCompetences, renderCompetences } from './sections/competences.js';
|
|
import { collectFormation, renderFormation } from './sections/formation.js';
|
|
import { collectExperience, renderExperience } from './sections/experience.js';
|
|
import { collectHobbies, renderHobbies } from './sections/hobbies.js';
|
|
import { t, getLocale } from './i18n/i18n.js';
|
|
import { applyTranslations } from './i18n/applyTranslations.js';
|
|
import { initLangSwitcher } from './i18n/langSwitcher.js';
|
|
|
|
function generateCV() {
|
|
const identite = collectIdentite();
|
|
|
|
if (!identite.nom || !identite.prenom || !identite.email || !identite.titre) return;
|
|
|
|
renderIdentite(identite);
|
|
renderCompetences(collectCompetences());
|
|
renderFormation(collectFormation());
|
|
renderExperience(collectExperience());
|
|
renderHobbies(collectHobbies());
|
|
|
|
localStorage.setItem('cvData', JSON.stringify(identite));
|
|
|
|
const success = document.getElementById('success');
|
|
if (success) {
|
|
success.textContent = t('success', { prenom: identite.prenom, nom: identite.nom });
|
|
success.style.display = 'block';
|
|
}
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
document.documentElement.lang = getLocale();
|
|
applyTranslations();
|
|
initLangSwitcher();
|
|
|
|
document.addEventListener('localechange', () => {
|
|
applyTranslations();
|
|
initLangSwitcher();
|
|
});
|
|
|
|
document.getElementById('cv-form')?.addEventListener('submit', (e) => {
|
|
e.preventDefault();
|
|
generateCV();
|
|
});
|
|
});
|