language change for items
This commit is contained in:
parent
07c84214ac
commit
56991b704f
@ -1,5 +1,5 @@
|
||||
import { RequestHandler } from "express";
|
||||
import { getEnglishString } from "@/src/services/itemDataService";
|
||||
import { getString } from "@/src/services/itemDataService";
|
||||
import {
|
||||
ExportArcanes,
|
||||
ExportGear,
|
||||
@ -16,20 +16,21 @@ interface ListedItem {
|
||||
fusionLimit?: number;
|
||||
}
|
||||
|
||||
const getItemListsController: RequestHandler = (_req, res) => {
|
||||
const getItemListsController: RequestHandler = (req, res) => {
|
||||
const weapons = [];
|
||||
const miscitems = [];
|
||||
const lang = req.query.lang?.toString()
|
||||
for (const [uniqueName, item] of Object.entries(ExportWeapons)) {
|
||||
if (item.productCategory !== "OperatorAmps") {
|
||||
if (item.totalDamage !== 0) {
|
||||
weapons.push({
|
||||
uniqueName,
|
||||
name: getEnglishString(item.name)
|
||||
name: getString(item.name, lang)
|
||||
});
|
||||
} else if (!item.excludeFromCodex) {
|
||||
miscitems.push({
|
||||
uniqueName: "MiscItems:" + uniqueName,
|
||||
name: getEnglishString(item.name)
|
||||
name: getString(item.name, lang)
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -37,13 +38,13 @@ const getItemListsController: RequestHandler = (_req, res) => {
|
||||
for (const [uniqueName, item] of Object.entries(ExportResources)) {
|
||||
miscitems.push({
|
||||
uniqueName: "MiscItems:" + uniqueName,
|
||||
name: getEnglishString(item.name)
|
||||
name: getString(item.name, lang)
|
||||
});
|
||||
}
|
||||
for (const [uniqueName, item] of Object.entries(ExportGear)) {
|
||||
miscitems.push({
|
||||
uniqueName: "Consumables:" + uniqueName,
|
||||
name: getEnglishString(item.name)
|
||||
name: getString(item.name, lang)
|
||||
});
|
||||
}
|
||||
|
||||
@ -52,7 +53,7 @@ const getItemListsController: RequestHandler = (_req, res) => {
|
||||
for (const [uniqueName, upgrade] of Object.entries(ExportUpgrades)) {
|
||||
mods.push({
|
||||
uniqueName,
|
||||
name: getEnglishString(upgrade.name),
|
||||
name: getString(upgrade.name, lang),
|
||||
fusionLimit: upgrade.fusionLimit
|
||||
});
|
||||
if (upgrade.isStarter || upgrade.isFrivolous || upgrade.upgradeEntries) {
|
||||
@ -62,7 +63,7 @@ const getItemListsController: RequestHandler = (_req, res) => {
|
||||
for (const [uniqueName, arcane] of Object.entries(ExportArcanes)) {
|
||||
mods.push({
|
||||
uniqueName,
|
||||
name: getEnglishString(arcane.name)
|
||||
name: getString(arcane.name, lang)
|
||||
});
|
||||
}
|
||||
|
||||
@ -72,7 +73,7 @@ const getItemListsController: RequestHandler = (_req, res) => {
|
||||
.map(([uniqueName, warframe]) => {
|
||||
return {
|
||||
uniqueName,
|
||||
name: getEnglishString(warframe.name)
|
||||
name: getString(warframe.name, lang)
|
||||
};
|
||||
}),
|
||||
weapons,
|
||||
|
@ -1,7 +1,21 @@
|
||||
import { getIndexAfter } from "@/src/helpers/stringHelpers";
|
||||
import { logger } from "@/src/utils/logger";
|
||||
import {
|
||||
dict_de,
|
||||
dict_en,
|
||||
dict_es,
|
||||
dict_fr,
|
||||
dict_it,
|
||||
dict_ja,
|
||||
dict_ko,
|
||||
dict_pl,
|
||||
dict_pt,
|
||||
dict_ru,
|
||||
dict_tc,
|
||||
dict_th,
|
||||
dict_tr,
|
||||
dict_uk,
|
||||
dict_zh,
|
||||
ExportRecipes,
|
||||
ExportWarframes,
|
||||
ExportWeapons,
|
||||
@ -75,6 +89,70 @@ export const getSuitByUniqueName = (uniqueName: string): IPowersuit | undefined
|
||||
return ExportWarframes[uniqueName];
|
||||
};
|
||||
|
||||
export const getEnglishString = (key: string): string => {
|
||||
return dict_en[key] ?? key;
|
||||
export const getString = (key: string, lang: string | undefined): string => {
|
||||
let dict;
|
||||
switch (lang) {
|
||||
case "de":
|
||||
dict = dict_de
|
||||
break;
|
||||
|
||||
case "es":
|
||||
dict = dict_es
|
||||
break;
|
||||
|
||||
case "fr":
|
||||
dict = dict_fr
|
||||
break;
|
||||
|
||||
case "it":
|
||||
dict = dict_it
|
||||
break;
|
||||
|
||||
case "ja":
|
||||
dict = dict_ja
|
||||
break;
|
||||
|
||||
case "ko":
|
||||
dict = dict_ko
|
||||
break;
|
||||
|
||||
case "pl":
|
||||
dict = dict_pl
|
||||
break;
|
||||
|
||||
case "pt":
|
||||
dict = dict_pt
|
||||
break;
|
||||
|
||||
case "ru":
|
||||
dict = dict_ru
|
||||
break;
|
||||
|
||||
case "tc":
|
||||
dict = dict_tc
|
||||
break;
|
||||
|
||||
case "th":
|
||||
dict = dict_th
|
||||
break;
|
||||
|
||||
case "tr":
|
||||
dict = dict_tr
|
||||
break;
|
||||
|
||||
case "uk":
|
||||
dict = dict_uk
|
||||
break;
|
||||
|
||||
case "zh":
|
||||
dict = dict_zh
|
||||
break;
|
||||
|
||||
case "en":
|
||||
default:
|
||||
dict = dict_en
|
||||
break;
|
||||
}
|
||||
|
||||
return dict[key] ?? key;
|
||||
};
|
||||
|
@ -13,11 +13,17 @@
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<a class="navbar-brand">OpenWF WebUI</a>
|
||||
<div class="nav-item dropdown">
|
||||
<button class="nav-link dropdown-toggle displayname" data-bs-toggle="dropdown" aria-expanded="false"></button>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li><a class="dropdown-item" href="/webui/" onclick="logout();">Logout</a></li>
|
||||
</ul>
|
||||
<div class="btn-group dropdown">
|
||||
<div class="nav-item dropdown">
|
||||
<button class="nav-link dropdown-toggle currentLanguage" data-bs-toggle="dropdown" aria-expanded="false"></button>
|
||||
<ul class="dropdown-menu" id="languageMenu"></ul>
|
||||
</div>
|
||||
<div class="nav-item dropdown">
|
||||
<button class="nav-link dropdown-toggle displayname" data-bs-toggle="dropdown" aria-expanded="false"></button>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li><a class="dropdown-item" href="/webui/" onclick="logout();">Logout</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
@ -85,7 +85,7 @@ single.on("route_load", function (event) {
|
||||
});
|
||||
|
||||
window.itemListPromise = new Promise(resolve => {
|
||||
const req = $.get("/custom/getItemLists");
|
||||
const req = $.get(`/custom/getItemLists?lang=${localStorage.getItem("lang")}`);
|
||||
req.done(data => {
|
||||
window.archonCrystalUpgrades = data.archonCrystalUpgrades;
|
||||
|
||||
@ -926,3 +926,66 @@ function doPopArchonCrystalUpgrade(type) {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function handleLangClick(lang) {
|
||||
const languages = {
|
||||
"de": "German",
|
||||
"en": "English",
|
||||
"es": "Spanish",
|
||||
"fr": "French",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pl": "Polish",
|
||||
"pt": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"tc": "Traditional Chinese",
|
||||
"th": "Thai",
|
||||
"tr": "Turkish",
|
||||
"uk": "Ukrainian",
|
||||
"zh": "Simplified Chinese"
|
||||
};
|
||||
const selectedLangText = languages[lang] || "English";
|
||||
|
||||
$(".currentLanguage").text(selectedLangText);
|
||||
|
||||
localStorage.setItem("lang", lang);
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const languages = {
|
||||
"de": "German",
|
||||
"en": "English",
|
||||
"es": "Spanish",
|
||||
"fr": "French",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pl": "Polish",
|
||||
"pt": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"tc": "Traditional Chinese",
|
||||
"th": "Thai",
|
||||
"tr": "Turkish",
|
||||
"uk": "Ukrainian",
|
||||
"zh": "Simplified Chinese"
|
||||
};
|
||||
const languageMenu = document.getElementById('languageMenu');
|
||||
|
||||
Object.keys(languages).forEach(lang => {
|
||||
const listItem = document.createElement('li');
|
||||
const linkItem = document.createElement('a');
|
||||
linkItem.className = 'dropdown-item';
|
||||
linkItem.href = '#';
|
||||
linkItem.dataset.lang = lang;
|
||||
linkItem.textContent = languages[lang];
|
||||
linkItem.onclick = () => handleLangClick(lang);
|
||||
listItem.appendChild(linkItem);
|
||||
languageMenu.appendChild(listItem);
|
||||
});
|
||||
|
||||
const savedLang = localStorage.getItem("lang") || "en";
|
||||
const savedLangText = languages[savedLang];
|
||||
$(".currentLanguage").text(savedLangText);
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user