Das wäre möglich, wenn man z.B. sowas einbaut.
Ich denke das größte Problem, bei der Sprachauswahl von Plenty ist immer die Möglichkeit, darüber auch das Lieferland zu wählen, was natürlich auch nicht optimal gelöst ist.
Das Script wäre jetzt darauf ausgelegt Popup und Funktion verzögert darzustellen.
Man könnte es noch erweitern, ich hab jetzt z.B. keinen Button erzeugt, der zeigt welche Sprache aktuell aktiv ist.
Ist eine Version die ich schon länger nicht mehr im Einsatz hab, da ich die Seite mal off genommen hab, müsste aber alles abgedeckt sein, was man oft mal benötigt.
Ich würde aber grundsätzlich erst einmal schauen, ob es möglich ist, die CLS-Probleme in dem Widget behoben werden können.
(function() {
const defaultLanguage = "de";
const supportedLanguages = [
{ code: "de", url: "https://example.com/" },
{ code: "en", url: "https://example.com/en/" },
{ code: "fr", url: "https://irgendwas-mit-brot.com/" },
{ code: "es", url: "https://example.com/es/" },
{ code: "it", url: "https://example.com/it/" },
{ code: "nl", url: "https://example.com/nl/" }
];
const browserLanguages = navigator.languages || [navigator.language];
let popupCreated = false;
// Hilfsfunktionen für Cookies
function setCookie(name, value, days) {
const d = new Date();
d.setTime(d.getTime() + (days*24*60*60*1000));
const expires = "expires="+ d.toUTCString();
document.cookie = name + "=" + value + ";" + expires + ";path=/";
}
function getCookie(name) {
const cname = name + "=";
const decodedCookie = decodeURIComponent(document.cookie);
const ca = decodedCookie.split(';');
for(let i = 0; i < ca.length; i++) {
let c = ca[i].trim();
if (c.indexOf(cname) === 0) {
return c.substring(cname.length, c.length);
}
}
return "";
}
// Popup erzeugen
function createPopup() {
if (popupCreated) {
document.getElementById("languagePopup").style.display = "block";
return;
}
popupCreated = true;
const popup = document.createElement("div");
popup.id = "languagePopup";
const title = document.createElement("h2");
title.textContent = "Bitte Sprache auswählen";
popup.appendChild(title);
const optionsContainer = document.createElement("div");
popup.appendChild(optionsContainer);
// Sortiere Sprachen nach Browserpräferenz
sortedLanguages.forEach(langObj => {
const btn = document.createElement("button");
btn.textContent = langObj.code.toUpperCase();
btn.onclick = () => {
// Cookie für 30 Tage setzen
setCookie("selectedLanguage", langObj.code, 30);
// Weiterleitung zur individuellen URL
window.location.href = langObj.url;
};
optionsContainer.appendChild(btn);
});
document.body.appendChild(popup);
popup.style.display = "block";
}
// Automatisches Popup nur, wenn kein Cookie gesetzt ist
if (!getCookie("selectedLanguage") && !browserLanguages[0].toLowerCase().startsWith(defaultLanguage)) {
let popupTriggered = false;
function triggerPopup() {
if (!popupTriggered) {
popupTriggered = true;
createPopup();
window.removeEventListener("scroll", triggerPopup);
}
}
setTimeout(triggerPopup, 3000);
window.addEventListener("scroll", triggerPopup);
}
// Manueller Button, wenn man das irgendwo per Klick starten will.
document.getElementById("openPopupBtn").addEventListener("click", createPopup);
})();