From bf13106c7dfd00f33f25e9e77364aa4e8916b279 Mon Sep 17 00:00:00 2001 From: Boris Waaub Date: Tue, 7 Apr 2026 14:19:36 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Commenter=20le=20s=C3=A9lecteur=20de=20l?= =?UTF-8?q?angue=20dans=20l'en-t=C3=AAte=20et=20supprimer=20la=20d=C3=A9te?= =?UTF-8?q?ction=20de=20langue=20via=20VisitorAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hugo.toml | 6 +- .../chill-theme/layouts/partials/header.html | 2 +- .../static/js/language-preference.js | 142 ------------------ 3 files changed, 4 insertions(+), 146 deletions(-) diff --git a/hugo.toml b/hugo.toml index 1a4a565..4a8b894 100644 --- a/hugo.toml +++ b/hugo.toml @@ -148,7 +148,7 @@ pagination = { pagerSize = 6, path = "page" } [menu.main.params] has_submenu = true submenu = [ - { name = "Blog", url = "/resources/blog" }, + # { name = "Blog", url = "/resources/blog" }, { name = "Manuels", url = "/resources/manuals" }, { name = "Tutoriels", url = "/resources/tutorials" }, { name = "Installation", url = "/resources/installation" }, @@ -188,7 +188,7 @@ pagination = { pagerSize = 6, path = "page" } [languages.en.menu.main.params] has_submenu = true submenu = [ - { name = "Blog", url = "/resources/blog" }, + # { name = "Blog", url = "/resources/blog" }, { name = "Technical Documentation", url = "/resources/technical-documentation" }, { name = "Manuals", url = "/resources/manuals" }, { name = "Tutorials", url = "/resources/tutorials" }, @@ -232,7 +232,7 @@ pagination = { pagerSize = 6, path = "page" } { name = "Handleidingen", url = "/resources/manuals" }, { name = "Tutorials", url = "/resources/tutorials" }, { name = "FAQ", url = "/resources/faq" }, - { name = "Blog", url = "/resources/blog" } + # { name = "Blog", url = "/resources/blog" } ] [[languages.nl.menu.main]] name = "Contacteer Ons" diff --git a/themes/chill-theme/layouts/partials/header.html b/themes/chill-theme/layouts/partials/header.html index bf871e6..dc12708 100644 --- a/themes/chill-theme/layouts/partials/header.html +++ b/themes/chill-theme/layouts/partials/header.html @@ -42,7 +42,7 @@ {{ end }} - {{ partial "language-switcher" . }} + {{/* {{ partial "language-switcher" . }} */}} diff --git a/themes/chill-theme/static/js/language-preference.js b/themes/chill-theme/static/js/language-preference.js index 351faaf..8707e78 100644 --- a/themes/chill-theme/static/js/language-preference.js +++ b/themes/chill-theme/static/js/language-preference.js @@ -47,153 +47,12 @@ redirectToLanguage(preferredLang); return; } - - // If no stored preference and VisitorAPI is configured, call it every time - if (!preferredLang && VISITOR_API_PID) { - detectLanguageViaVisitorAPI(); - } else if (!preferredLang) { - console.log('Language preference: No stored preference and VisitorAPI not configured'); - } } catch (e) { // Silently fail if localStorage/sessionStorage is unavailable console.warn('Language preference: Storage unavailable', e); } } - /** - * Detect user's language using VisitorAPI - */ - function detectLanguageViaVisitorAPI() { - console.log('VisitorAPI: Calling API to detect language...'); - - // VisitorAPI implementation - var VisitorAPI = function(projectId, successCallback, errorCallback) { - var xhr = new XMLHttpRequest(); - xhr.onreadystatechange = function() { - if (xhr.readyState === XMLHttpRequest.DONE) { - try { - var response = JSON.parse(xhr.responseText); - if (response.status === 200) { - successCallback(response.data); - } else { - errorCallback(response.status, response.result); - } - } catch (e) { - errorCallback(0, 'Failed to parse response'); - } - } - }; - xhr.open("GET", "https://api.visitorapi.com/api/?pid=" + projectId); - xhr.send(null); - }; - - // Call VisitorAPI - VisitorAPI( - VISITOR_API_PID, - function(data) { - handleVisitorAPISuccess(data); - }, - function(errorCode, errorMessage) { - console.warn('VisitorAPI error:', errorCode, errorMessage); - } - ); - } - - /** - * Handle successful VisitorAPI response - * @param {Object} data - VisitorAPI response data - */ - function handleVisitorAPISuccess(data) { - console.log('VisitorAPI: Received data:', data); - - // Get languages from response (e.g., ["en", "eng"]) - var languages = data.languages || []; - - if (languages.length === 0) { - console.log('VisitorAPI: No languages detected in response'); - return; - } - - console.log('VisitorAPI: Detected languages:', languages); - - // Get current language to check if already on preferred language - var currentLang = getCurrentLanguage(); - console.log('VisitorAPI: Current language:', currentLang); - - // Get all available Hugo language codes from the page - var availableHugoLangs = []; - var languageLinks = document.querySelectorAll('.language-switch-link'); - - for (var i = 0; i < languageLinks.length; i++) { - var hugoLang = languageLinks[i].getAttribute('data-lang'); - if (hugoLang) { - availableHugoLangs.push(hugoLang.toLowerCase()); - } - } - - // Add current language to available languages if not already present - // This handles the case where default language (e.g., "en") might not have a visible switch link - if (currentLang && availableHugoLangs.indexOf(currentLang) === -1) { - availableHugoLangs.unshift(currentLang); // Add to beginning of array - console.log('VisitorAPI: Added current language to available languages:', currentLang); - } - - console.log('VisitorAPI: Available Hugo languages:', availableHugoLangs); - - // Try to match visitor's language to available Hugo languages - // Match using first 2 characters of language code (e.g., "en" matches "en", "zh" matches "zh-cn") - // IMPORTANT: Iterate through visitor's languages IN ORDER to respect preference - var detectedLang = null; - - for (var i = 0; i < languages.length; i++) { - var visitorLang = languages[i].toLowerCase(); - // Get first 2 characters of the visitor's language code - var langPrefix = visitorLang.substring(0, 2); - - console.log('VisitorAPI: Checking visitor language:', visitorLang, '(prefix: ' + langPrefix + ')'); - - // Check if any available Hugo language matches this visitor language - for (var j = 0; j < availableHugoLangs.length; j++) { - var hugoLang = availableHugoLangs[j]; - // Get first 2 characters of Hugo language code - var hugoPrefix = hugoLang.substring(0, 2); - - // Match based on first 2 characters - if (langPrefix === hugoPrefix) { - detectedLang = hugoLang; - console.log('VisitorAPI: Matched language:', visitorLang, '(' + langPrefix + ') -> Hugo language:', hugoLang); - break; - } - } - - // Break immediately when first match is found (respects visitor's language preference order) - if (detectedLang) { - break; - } - } - - // If we detected a valid language and it's different from current, redirect - if (detectedLang) { - console.log('VisitorAPI: Detected lang:', detectedLang, 'Current lang:', currentLang); - - if (detectedLang !== currentLang) { - console.log('VisitorAPI: Storing preference and redirecting to:', detectedLang); - - // Store the detected language as preference - setStoredLanguage(detectedLang); - - // Redirect to detected language - redirectToLanguage(detectedLang); - } else { - console.log('VisitorAPI: Already on detected language, no redirect needed'); - // Store the preference even if we're already on the right language - setStoredLanguage(detectedLang); - } - } else { - console.log('VisitorAPI: No matching Hugo language found for detected languages'); - } - } - /** * Attach click event listeners to all language switch links */ @@ -297,7 +156,6 @@ */ function redirectToLanguage(targetLang) { const currentPath = window.location.pathname; - const currentLang = getCurrentLanguage(); const search = window.location.search; const hash = window.location.hash;