add language selector dropdown and fix translation system

Add LANG dropdown to desktop and mobile navbars with all available
translations. Use localStorage to persist language choice across
page loads. Fix undefined key errors in traduction.js. Handle
English selection by clearing stored preference and reloading.
This commit is contained in:
jwinterm
2026-03-19 14:47:45 -04:00
parent a1264b6820
commit 65f5fbe602
2 changed files with 32 additions and 4 deletions
+23 -1
View File
@@ -23,7 +23,7 @@
<script src="js/translations/traduction.js"></script>
<meta http-equiv="onion-location" content="http://wownero2x67npb3ovmy6efclulrg4bg56jmq5kqaoqzvtxrybqqkchad.onion/" />
</head>
<body onload="translate(navigator.language)" style="overflow-x: hidden;">
<body onload="translate(localStorage.getItem('wowLang') || navigator.language)" style="overflow-x: hidden;">
<script>
AOS.init({
@@ -51,6 +51,17 @@
<li class="nav-item">
<a href="#wallets" class="myButton" id="walletss">WALLETS</a>
</li>
<li class="nav-item dropdown">
<a class="myButton dropdown-toggle" href="#" id="langDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">LANG</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="langDropdown">
<a class="dropdown-item" href="#" onclick="translate('en-US'); return false;">English</a>
<a class="dropdown-item" href="#" onclick="translate('fr-FR'); return false;">Fran&#231;ais</a>
<a class="dropdown-item" href="#" onclick="translate('it-IT'); return false;">Italiano</a>
<a class="dropdown-item" href="#" onclick="translate('ru'); return false;">&#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;</a>
<a class="dropdown-item" href="#" onclick="translate('pt-BR'); return false;">Portugu&#234;s (BR)</a>
<a class="dropdown-item" href="#" onclick="translate('pt-PT'); return false;">Portugu&#234;s (PT)</a>
</div>
</li>
</ul>
</div>
</div>
@@ -66,6 +77,17 @@
<li class="nav-item">
<a href="#wallets" class="myButton-mobile-nav" id="walletss">WALLETS</a>
</li>
<li class="nav-item dropdown">
<a class="myButton-mobile-nav dropdown-toggle" href="#" id="langDropdownMobile" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">LANG</a>
<div class="dropdown-menu" aria-labelledby="langDropdownMobile">
<a class="dropdown-item" href="#" onclick="translate('en-US'); return false;">English</a>
<a class="dropdown-item" href="#" onclick="translate('fr-FR'); return false;">Fran&#231;ais</a>
<a class="dropdown-item" href="#" onclick="translate('it-IT'); return false;">Italiano</a>
<a class="dropdown-item" href="#" onclick="translate('ru'); return false;">&#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;</a>
<a class="dropdown-item" href="#" onclick="translate('pt-BR'); return false;">Portugu&#234;s (BR)</a>
<a class="dropdown-item" href="#" onclick="translate('pt-PT'); return false;">Portugu&#234;s (PT)</a>
</div>
</li>
</ul>
</div>
</div>
+7 -1
View File
@@ -1,7 +1,12 @@
async function translate(lang) {
if (lang == 'en-US') return;
if (lang == 'en-US' || lang == 'en') {
localStorage.removeItem('wowLang');
location.reload();
return;
}
if (lang == "it" || lang == "it-CH") lang = "it-IT";
if (lang == "pt") lang = "pt-BR";
localStorage.setItem('wowLang', lang);
var ids = [];
ids = Array.from(document.querySelectorAll('[id]'));
var ids_arr = Array.prototype.map.call(ids, (element, i)=>{return element.id});
@@ -12,5 +17,6 @@ async function translate(lang) {
};
async function getTranslation(data, keys) {
if (data[keys] === undefined) return;
document.getElementById(keys).textContent = JSON.stringify(data[keys]).replace(/["]+/g, '');
};