From 8abb9c3fd1b89d39d017811614e00a54f76684c4 Mon Sep 17 00:00:00 2001 From: KittenTM Date: Tue, 28 Apr 2026 06:16:11 +0200 Subject: [PATCH 1/2] feat: language selection persist across pages --- assets/general.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/assets/general.js b/assets/general.js index 03b3072..296ca33 100644 --- a/assets/general.js +++ b/assets/general.js @@ -116,6 +116,10 @@ window.initDropdown = function() { var $toggle = $('#dropdownToggle'); var $optionsList = $('#dropdownOptions'); var $selectedImg = $('#selected-img'); + var savedLangSrc = localStorage.getItem('selected_lang_src'); + if (savedLangSrc && $selectedImg.length) { + $selectedImg.attr('src', savedLangSrc); + } if ($toggle.length) { $toggle.off('click').on('click', function(e) { @@ -125,8 +129,11 @@ window.initDropdown = function() { $optionsList.off('click').on('click', 'li', function() { var newSrc = $(this).attr('data-src'); + var langValue = $(this).attr('data-value'); // en or jp $selectedImg.attr('src', newSrc); $optionsList.removeClass('show'); + localStorage.setItem('selected_lang_src', newSrc); + localStorage.setItem('selected_lang_value', langValue); }); $(document).off('click.dropdown').on('click.dropdown', function() { From d65c8d2a73a508a2b4d0083d93e6774c52e0475d Mon Sep 17 00:00:00 2001 From: KittenTM Date: Tue, 28 Apr 2026 06:20:05 +0200 Subject: [PATCH 2/2] feat: header switch lang based on selection --- assets/general.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/assets/general.js b/assets/general.js index 296ca33..c6618f3 100644 --- a/assets/general.js +++ b/assets/general.js @@ -116,10 +116,6 @@ window.initDropdown = function() { var $toggle = $('#dropdownToggle'); var $optionsList = $('#dropdownOptions'); var $selectedImg = $('#selected-img'); - var savedLangSrc = localStorage.getItem('selected_lang_src'); - if (savedLangSrc && $selectedImg.length) { - $selectedImg.attr('src', savedLangSrc); - } if ($toggle.length) { $toggle.off('click').on('click', function(e) { @@ -129,11 +125,11 @@ window.initDropdown = function() { $optionsList.off('click').on('click', 'li', function() { var newSrc = $(this).attr('data-src'); - var langValue = $(this).attr('data-value'); // en or jp - $selectedImg.attr('src', newSrc); - $optionsList.removeClass('show'); + var langValue = $(this).attr('data-value'); + var headerFile = (langValue === 'jp') ? "../header-jp.html" : "../header.html"; + localStorage.setItem('selected_header', headerFile); localStorage.setItem('selected_lang_src', newSrc); - localStorage.setItem('selected_lang_value', langValue); + window.location.reload(); }); $(document).off('click.dropdown').on('click.dropdown', function() { @@ -151,12 +147,21 @@ window.loadHeader = function(callback) { } }; -fetch("../header.html") +const targetHeader = localStorage.getItem('selected_header') || "../header.html"; + +fetch(targetHeader) .then(res => res.text()) .then(html => { const container = document.getElementById("header-container"); if (container) { container.innerHTML = html; + + const savedLangSrc = localStorage.getItem('selected_lang_src'); + const selectedImg = container.querySelector('#selected-img'); + if (savedLangSrc && selectedImg) { + selectedImg.src = savedLangSrc; + } + window.headerLoaded = true; window.loadHeaderCallbacks.forEach(cb => cb(container)); }