-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontacts.html
More file actions
118 lines (107 loc) · 4.16 KB
/
contacts.html
File metadata and controls
118 lines (107 loc) · 4.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Portfolio - Thomas LE DRET</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<script src="lang.js"></script>
<nav class="toolbar">
<div class="toolbar-left">
<button id="menu-toggle" aria-label="Menu">☰</button>
<ul id="toolbar-menu" class="toolbar-menu">
<li><a href="index.html">Profil</a></li>
<li><a href="skills.html">Compétences</a></li>
<li><a href="contacts.html">Contacts</a></li>
</ul>
</div>
<div class="toolbar-right">
<div class="lang-select">
<label for="language">Choisir une langue :</label>
<input type="hidden" id="language" name="language" value="fr">
<div id="custom-language-dropdown" style="display:inline-block;position:relative;color:black">
<button id="selected-lang" type="button">🇫🇷 Français</button>
<ul id="lang-list" style="display:none;position:absolute;list-style:none;margin:0;padding:0;background:#fff;border:1px solid #ccc;">
<li data-value="fr">🇫🇷 Français</li>
<li data-value="en">🇬🇧 English</li>
<li data-value="it">🇮🇹 Italiano</li>
<li data-value="ja">🇯🇵 日本語</li>
<li data-value="tr">🇹🇷 Türkçe</li>
</ul>
</div>
</div>
<script>
const dropdownBtn = document.getElementById('selected-lang');
const langList = document.getElementById('lang-list');
dropdownBtn.onclick = () => {
langList.style.display = langList.style.display === 'block' ? 'none' : 'block';
};
langList.onclick = (e) => {
if (e.target.tagName === 'LI') {
dropdownBtn.textContent = e.target.textContent;
langList.style.display = 'none';
document.getElementById('language').value = e.target.dataset.value;
// Trigger change event if needed
document.getElementById('language').dispatchEvent(new Event('change'));
}
};
// Close dropdown when clicking outside
document.addEventListener('click', (e) => {
if (!dropdownBtn.contains(e.target) && !langList.contains(e.target)) {
langList.style.display = 'none';
}
});
</script>
</div>
</nav>
<div class="section">
<h2 data-i18n="contact">Me contacter</h2>
<p><strong>Email:</strong> <span data-i18n="email">ledret.thomas@gmail.com</span></p>
<p><strong>Téléphone:</strong> <span data-i18n="phone">+33 7 71 20 96 95</span></p>
<p><strong>Adresse:</strong> <span data-i18n="address">122 Rue de Châtillon, Rennes</span></p>
</div>
<script>
function loadLanguageFile(lang, callback) {
fetch(`translations/${lang}.json`)
.then(response => {
if (!response.ok) throw new Error("Language file not found");
return response.json();
})
.then(data => {
applyTranslations(data);
if (callback) callback();
})
.catch(error => {
console.error("Error loading translation file:", error);
});
}
function applyTranslations(translations) {
document.querySelectorAll("[data-i18n]").forEach(el => {
const key = el.getAttribute("data-i18n");
if (translations[key]) {
el.innerHTML = translations[key];
}
});
}
const langSelector = document.getElementById("language");
langSelector.addEventListener("change", (e) => {
const lang = e.target.value;
localStorage.setItem("preferredLang", lang);
loadLanguageFile(lang);
});
document.addEventListener("DOMContentLoaded", () => {
const savedLang = localStorage.getItem("preferredLang") || "fr";
langSelector.value = savedLang;
loadLanguageFile(savedLang);
// Update label
const selectedLangBtn = document.getElementById("selected-lang");
const selectedOption = document.querySelector(`#lang-list li[data-value="${savedLang}"]`);
if (selectedLangBtn && selectedOption) {
selectedLangBtn.textContent = selectedOption.textContent;
}
});
</script>
</body>
</html>