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)
105 lines
3.1 KiB
HTML
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 © 2026</p>
|
|
</footer>
|
|
</div>
|
|
|
|
<script type="module" src="js/main.js"></script>
|
|
</body>
|
|
</html>
|