Add language switcher and translations for menu items

This commit is contained in:
vista-man
2025-02-20 09:52:41 +01:00
parent df75d5221c
commit 49b055ca14
3 changed files with 88 additions and 15 deletions

View File

@@ -18,15 +18,15 @@
<!-- Top bar menu -->
<div class="menu-bar">
<div class="menu-item" onclick="showCategory('Broodjes')">Broodjes</div>
<div class="menu-item" onclick="showCategory('Koude-Dranken')">Koude Dranken</div>
<div class="menu-item" onclick="showCategory('Warme-Dranken')">Warme Dranken</div>
<div class="menu-item" onclick="showCategory('Snacks')">Snacks</div>
<div class="menu-item" onclick="showCategory('deserts')">Ijsjes</div>
<div class="menu-item" onclick="showCategory('Deals')">Deals</div>
<div class="menu-item" onclick="showCategory('Soepen')">Soepen</div>
<div class="menu-item" onclick="showCategory('Salades')">Salades</div>
<div class="menu-item" onclick="showCategory('Sausjes')">Sausjes</div>
<div class="menu-item" onclick="showCategory('Broodjes')" data-translate="Broodjes">Broodjes</div>
<div class="menu-item" onclick="showCategory('Koude-Dranken')" data-translate="Koude Dranken">Koude Dranken</div>
<div class="menu-item" onclick="showCategory('Warme-Dranken')" data-translate="Warme Dranken">Warme Dranken</div>
<div class="menu-item" onclick="showCategory('Snacks')" data-translate="Snacks">Snacks</div>
<div class="menu-item" onclick="showCategory('deserts')" data-translate="deserts">Ijsjes</div>
<div class="menu-item" onclick="showCategory('Deals')" data-translate="Deals">Deals</div>
<div class="menu-item" onclick="showCategory('Soepen')" data-translate="Soepen">Soepen</div>
<div class="menu-item" onclick="showCategory('Salades')" data-translate="Salades">Salades</div>
<div class="menu-item" onclick="showCategory('Sausjes')" data-translate="Sausjes">Sausjes</div>
</div>
<!-- Productweergave -->
@@ -38,23 +38,23 @@
<div id="modal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeModal()">&times;</span>
<h2 id="modal-title"></h2>
<h2 id="modal-title" data-translate="Prijs"></h2>
<img id="modal-image" src="" alt="">
<p id="modal-description"></p>
<p id="modal-price"></p>
<button id="add-to-cart">Toevoegen aan winkelmandje</button>
<p id="modal-price" data-translate="Prijs"></p>
<button id="add-to-cart" data-translate="Toevoegen aan winkelmandje">Toevoegen aan winkelmandje</button>
</div>
</div>
<!-- Winkelmandje sectie -->
<div id="cart" class="cart">
<h2>Winkelmandje</h2>
<h2 data-translate="Winkelmandje">Winkelmandje</h2>
<ul id="cart-items">
<!-- Winkelmandje items worden hier dynamisch toegevoegd -->
</ul>
<p>Totaal: €<span id="total-price">0.00</span></p>
<a href="betalen.html">
<button id="order-button">Bestellen</button>
<button id="order-button" data-translate="Bestellen">Bestellen</button>
</a>
</div>
@@ -64,6 +64,8 @@
<span id="cart-count" class="cart-count">0</span> <!-- Aantal producten -->
</div>
<!-- Language switcher -->
<div id="language-switcher" class="language-switcher">EN</div>
<script src="script.js"></script>
</body>

View File

@@ -257,3 +257,56 @@ window.onclick = function(event) {
// Initial call to updateCart to ensure the button is hidden on page load
updateCart();
const translations = {
en: {
"Broodjes": "Sandwiches",
"Koude Dranken": "Cold Drinks",
"Warme Dranken": "Hot Drinks",
"Snacks": "Snacks",
"deserts": "Desserts",
"Deals": "Deals",
"Soepen": "Soups",
"Salades": "Salads",
"Sausjes": "Sauces",
"Winkelmandje": "Shopping Cart",
"Bestellen": "Order",
"Prijs": "Price",
"Toevoegen aan winkelmandje": "Add to Cart",
"Soep van de dag! (Allergieën? Meld het bij ons!)": "Soup of the day! (Allergies? Let us know!)",
// Add more translations as needed
},
nl: {
"Sandwiches": "Broodjes",
"Cold Drinks": "Koude Dranken",
"Hot Drinks": "Warme Dranken",
"Snacks": "Snacks",
"Desserts": "deserts",
"Deals": "Deals",
"Soups": "Soepen",
"Salads": "Salades",
"Sauces": "Sausjes",
"Shopping Cart": "Winkelmandje",
"Order": "Bestellen",
"Price": "Prijs",
"Add to Cart": "Toevoegen aan winkelmandje",
"Soup of the day! (Allergies? Let us know!)": "Soep van de dag! (Allergieën? Meld het bij ons!)",
// Add more translations as needed
}
};
function switchLanguage(lang) {
document.querySelectorAll("[data-translate]").forEach(element => {
const key = element.getAttribute("data-translate");
element.textContent = translations[lang][key] || key;
});
}
document.addEventListener("DOMContentLoaded", () => {
document.getElementById("language-switcher").addEventListener("click", () => {
const currentLang = document.documentElement.lang;
const newLang = currentLang === "nl" ? "en" : "nl";
document.documentElement.lang = newLang;
switchLanguage(newLang);
});
});

View File

@@ -150,7 +150,7 @@ body {
display: none; /* Initially hide the cart icon */
position: fixed;
top: 80px; /* Move the cart icon down */
right: 20px;
right: 60px; /* Adjust right position to make space for language switcher */
background-color: #ff6600;
color: white;
padding: 10px 15px;
@@ -312,4 +312,22 @@ body {
.logo.hidden {
opacity: 0; /* Hide the logo */
visibility: hidden; /* Ensure the logo is not clickable */
}
.language-switcher {
position: fixed;
bottom: 20px; /* Position at the bottom */
left: 20px; /* Position at the left */
background-color: #ff8c00;
color: white;
padding: 10px 20px;
border-radius: 25px;
cursor: pointer;
font-size: 1em;
transition: all 0.3s ease;
z-index: 1100; /* Ensure it is above other elements */
}
.language-switcher:hover {
background-color: #e65c00;
}