Files
cv-generator/index.html
stanig2106 4e9746c308 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)
2026-04-05 22:43:44 +01:00

105 lines
3.1 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CV Generator</title>
<link rel="stylesheet" href="css/form.css">
<link rel="stylesheet" href="css/cv.css">
</head>
<body>
<div class="container">
<header>
<div class="header-top">
<h1 data-i18n="header.title">CV Generator</h1>
<div id="lang-switcher" class="lang-switcher" aria-label="Language switcher"></div>
</div>
<p data-i18n="header.subtitle">Remplissez vos informations pour générer votre CV</p>
</header>
<div class="card">
<form id="cv-form" novalidate>
<!-- ── Section Identité ── -->
<!-- Voir sections/identite/identite.html pour le découpage complet -->
<div class="form-group">
<label for="nom" data-i18n="form.nom">Nom</label>
<input
type="text"
id="nom"
name="nom"
data-i18n-placeholder="form.nom_placeholder"
placeholder="Dupont"
autocomplete="family-name"
required
minlength="1"
aria-required="true"
>
</div>
<div class="form-group">
<label for="prenom" data-i18n="form.prenom">Prénom</label>
<input
type="text"
id="prenom"
name="prenom"
data-i18n-placeholder="form.prenom_placeholder"
placeholder="Jean"
autocomplete="given-name"
required
minlength="1"
aria-required="true"
>
</div>
<div class="form-group">
<label for="email" data-i18n="form.email">Email</label>
<input
type="email"
id="email"
name="email"
data-i18n-placeholder="form.email_placeholder"
placeholder="jean.dupont@email.com"
autocomplete="email"
required
aria-required="true"
>
</div>
<div class="form-group">
<label for="titre" data-i18n="form.titre">Titre du poste</label>
<input
type="text"
id="titre"
name="titre"
data-i18n-placeholder="form.titre_placeholder"
placeholder="Développeur Full Stack"
autocomplete="organization-title"
required
minlength="1"
aria-required="true"
>
</div>
<!-- ── Futures sections (à venir) ──
- Formation → sections/formation/
- Expérience → sections/experience/
- Compétences → sections/competences/
- Hobbies → sections/hobbies/
-->
<button type="submit" class="btn-generate" data-i18n="form.submit">Générer mon CV</button>
<p class="success-message" id="success"></p>
</form>
</div>
<footer>
<p data-i18n="footer">CV Generator &copy; 2026</p>
</footer>
</div>
<script type="module" src="js/main.js"></script>
</body>
</html>