// URLから言語パラメータを取得 const urlParams = new URLSearchParams(window.location.search); const langParam = urlParams.get('language'); const uuidParam = urlParams.get('uuid'); if (uuidParam){ localStorage.setItem('uuid', uuidParam); } var uuid = localStorage.getItem('uuid') // クッキーから言語パラメータを取得 const cookies = document.cookie.split('; '); let langCookie = cookies.find(row => row.startsWith('language=')); // クッキーの存在チェック if (langCookie) { langCookie = langCookie.split('=')[1]; } // URLパラメータとクッキーが一致しない場合、クッキーを更新してページをリロード if (langParam && langCookie !== langParam) { document.cookie = `language=${langParam}; path=/;`; // 現在のURLを取得 const currentUrl = new URL(window.location.href); // 'language' パラメータを削除 currentUrl.searchParams.delete('language'); // 新しいURLに移動 window.location.assign(currentUrl.toString()); }else{ // 現在のURLを取得 const currentUrl = new URL(window.location.href); // 'language' パラメータを削除 currentUrl.searchParams.delete('language'); // アドレスバーのURLを更新(ページ再読み込みは行われない) history.pushState({}, '', currentUrl.toString()); } // 現在のURLから新しいURLオブジェクトを生成 const originalUrl = new URL(window.location.href); // URLのクエリパラメータを操作するためのSearchParamsオブジェクトを生成 const paramsEng = new URLSearchParams(originalUrl.search); const paramsJpn = new URLSearchParams(originalUrl.search); // 'language'パラメータをそれぞれ'eng'と'jpn'に設定 paramsEng.set('language', 'eng'); paramsJpn.set('language', 'jpn'); // 変更したSearchParamsを元のURLに適用して新しいURLを生成 const urlEng = originalUrl.toString().split('?')[0] + '?' + paramsEng.toString(); const urlJpn = originalUrl.toString().split('?')[0] + '?' + paramsJpn.toString(); // 結果のURLを確認(実際のコードではこの部分は必要に応じて変更してください) console.log(urlEng); // language=engを設定したURL console.log(urlJpn); // language=jpnを設定したURL var header_jp =`
JP EN
` var header_en =`
JP EN
` var footer_en = ` ` var footer_jp = ` ` // 0.5秒ごとにチェックする関数を定義 function checkAndModifyHeader() { console.log("check") // bodyが読み込まれているかチェック if (document.body) { // custom-headerというIDを持つheader要素を探す var existingHeader = document.getElementById('custom-header'); // 新しいheader要素を作成 var newHeader = document.createElement('header'); newHeader.id = 'custom-header'; newHeader.classList.add('v-application'); newHeader.style.display = 'block'; if (langCookie === "eng"){ newHeader.classList.add('header', 'page-en'); newHeader.innerHTML = header_en; // 必要に応じて内容を変更 }else{ newHeader.classList.add('header', 'page-jp'); newHeader.innerHTML = header_jp; // 必要に応じて内容を変更 } // custom-headerが存在するかチェック if (existingHeader) { // 既に存在する場合は置き換える document.body.replaceChild(newHeader, existingHeader); } else { // 存在しない場合はbodyの一番上に追加 document.body.insertBefore(newHeader, document.body.firstChild); } // 処理が完了したらインターバルをクリア clearInterval(checkAndModifyHeaderInterval); const enButton = document.getElementById("js-lang-en"); const jpButton = document.getElementById("js-lang-jp"); enButton.addEventListener("click",(e) => { e.preventDefault(); // alert("eng") document.cookie = `language=eng; path=/;`; location.reload() }); jpButton.addEventListener("click",(e) => { e.preventDefault(); // alert("jpn") document.cookie = `language=jpn; path=/;`; location.reload() }); } } // 0.5秒ごとに実行するインターバルを設定{ if (!uuid){ var checkAndModifyHeaderInterval = setInterval(checkAndModifyHeader, 500); } // 0.5秒ごとにチェックする関数を定義 function checkAndModifyFooter() { const layoutDiv = document.getElementById('__layout'); const wrapSection = layoutDiv ? layoutDiv.querySelector('.wrap') : null; // __layoutが存在し、その中にwrapクラスのセクションがあるかチェック if (wrapSection) { var existingFooter = document.getElementById('custom-footer'); // 新しいfooter要素を作成 var newFooter = document.createElement('footer'); newFooter.id = 'custom-footer'; newFooter.classList.add('footer','v-application'); newFooter.style.display = 'block'; if (langCookie === "eng"){ newFooter.innerHTML = footer_en; // 必要に応じて内容を変更 }else{ newFooter.innerHTML = footer_jp; // 必要に応じて内容を変更 } // custom-footerが存在するかチェック if (existingFooter) { // 既に存在する場合は置き換える existingFooter.parentNode.replaceChild(newFooter, existingFooter); } else { // 存在しない場合はwrapセクションの末尾に追加 wrapSection.appendChild(newFooter); } // 処理が完了したらインターバルをクリア clearInterval(checkAndModifyFooterInterval); } } // 0.5秒ごとに実行するインターバルを設定 const checkAndModifyFooterInterval = setInterval(checkAndModifyFooter, 500);