From 56991b704f4de8ba7f8c3bbe5b598c370c059a06 Mon Sep 17 00:00:00 2001 From: dutlist <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Wed, 26 Jun 2024 06:41:53 +0200 Subject: [PATCH 1/5] language change for items --- .../custom/getItemListsController.ts | 19 +++-- src/services/itemDataService.ts | 82 ++++++++++++++++++- static/webui/index.html | 16 ++-- static/webui/script.js | 65 ++++++++++++++- 4 files changed, 165 insertions(+), 17 deletions(-) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index 962b8857..ed90e495 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -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, diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 3bf039dd..1a30400d 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -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; }; diff --git a/static/webui/index.html b/static/webui/index.html index 533b2f20..59ec3bab 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -13,11 +13,17 @@ OpenWF WebUI - diff --git a/static/webui/script.js b/static/webui/script.js index db5b831c..5ba3d5d1 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -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); +}); -- 2.47.2 From 955b39bf9e5f2680e5c79cf2f6524e8dd9eed192 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon Date: Wed, 26 Jun 2024 04:46:32 +0000 Subject: [PATCH 2/5] Apply prettier changes --- .../custom/getItemListsController.ts | 2 +- src/services/itemDataService.ts | 62 ++++++++-------- static/webui/script.js | 72 +++++++++---------- 3 files changed, 68 insertions(+), 68 deletions(-) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index ed90e495..3fc6730b 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -19,7 +19,7 @@ interface ListedItem { const getItemListsController: RequestHandler = (req, res) => { const weapons = []; const miscitems = []; - const lang = req.query.lang?.toString() + const lang = req.query.lang?.toString(); for (const [uniqueName, item] of Object.entries(ExportWeapons)) { if (item.productCategory !== "OperatorAmps") { if (item.totalDamage !== 0) { diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 1a30400d..730e0907 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -93,64 +93,64 @@ export const getString = (key: string, lang: string | undefined): string => { let dict; switch (lang) { case "de": - dict = dict_de - break; + dict = dict_de; + break; case "es": - dict = dict_es - break; + dict = dict_es; + break; case "fr": - dict = dict_fr - break; - + dict = dict_fr; + break; + case "it": - dict = dict_it - break; + dict = dict_it; + break; case "ja": - dict = dict_ja - break; + dict = dict_ja; + break; case "ko": - dict = dict_ko - break; + dict = dict_ko; + break; case "pl": - dict = dict_pl - break; + dict = dict_pl; + break; case "pt": - dict = dict_pt - break; + dict = dict_pt; + break; case "ru": - dict = dict_ru - break; + dict = dict_ru; + break; case "tc": - dict = dict_tc - break; + dict = dict_tc; + break; case "th": - dict = dict_th - break; + dict = dict_th; + break; case "tr": - dict = dict_tr - break; + dict = dict_tr; + break; case "uk": - dict = dict_uk - break; + dict = dict_uk; + break; case "zh": - dict = dict_zh - break; - + dict = dict_zh; + break; + case "en": default: - dict = dict_en + dict = dict_en; break; } diff --git a/static/webui/script.js b/static/webui/script.js index 5ba3d5d1..99759335 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -929,21 +929,21 @@ 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" + 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"; @@ -953,31 +953,31 @@ function handleLangClick(lang) { window.location.reload(); } -document.addEventListener('DOMContentLoaded', () => { +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" + 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'); + 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 = '#'; + 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); -- 2.47.2 From 50ae9463da386a6c3c218dd1ffb37308de8ede98 Mon Sep 17 00:00:00 2001 From: dutlist <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Wed, 26 Jun 2024 07:51:32 +0200 Subject: [PATCH 3/5] find dict once --- .../custom/getItemListsController.ts | 18 +-- src/services/itemDataService.ts | 116 ++++++++---------- 2 files changed, 60 insertions(+), 74 deletions(-) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index 3fc6730b..0282ba6e 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,5 +1,5 @@ import { RequestHandler } from "express"; -import { getString } from "@/src/services/itemDataService"; +import { getDict, getString } from "@/src/services/itemDataService"; import { ExportArcanes, ExportGear, @@ -19,18 +19,18 @@ interface ListedItem { const getItemListsController: RequestHandler = (req, res) => { const weapons = []; const miscitems = []; - const lang = req.query.lang?.toString(); + const dict = getDict(req.query.dict?.toString()); for (const [uniqueName, item] of Object.entries(ExportWeapons)) { if (item.productCategory !== "OperatorAmps") { if (item.totalDamage !== 0) { weapons.push({ uniqueName, - name: getString(item.name, lang) + name: getString(item.name, dict) }); } else if (!item.excludeFromCodex) { miscitems.push({ uniqueName: "MiscItems:" + uniqueName, - name: getString(item.name, lang) + name: getString(item.name, dict) }); } } @@ -38,13 +38,13 @@ const getItemListsController: RequestHandler = (req, res) => { for (const [uniqueName, item] of Object.entries(ExportResources)) { miscitems.push({ uniqueName: "MiscItems:" + uniqueName, - name: getString(item.name, lang) + name: getString(item.name, dict) }); } for (const [uniqueName, item] of Object.entries(ExportGear)) { miscitems.push({ uniqueName: "Consumables:" + uniqueName, - name: getString(item.name, lang) + name: getString(item.name, dict) }); } @@ -53,7 +53,7 @@ const getItemListsController: RequestHandler = (req, res) => { for (const [uniqueName, upgrade] of Object.entries(ExportUpgrades)) { mods.push({ uniqueName, - name: getString(upgrade.name, lang), + name: getString(upgrade.name, dict), fusionLimit: upgrade.fusionLimit }); if (upgrade.isStarter || upgrade.isFrivolous || upgrade.upgradeEntries) { @@ -63,7 +63,7 @@ const getItemListsController: RequestHandler = (req, res) => { for (const [uniqueName, arcane] of Object.entries(ExportArcanes)) { mods.push({ uniqueName, - name: getString(arcane.name, lang) + name: getString(arcane.name, dict) }); } @@ -73,7 +73,7 @@ const getItemListsController: RequestHandler = (req, res) => { .map(([uniqueName, warframe]) => { return { uniqueName, - name: getString(warframe.name, lang) + name: getString(warframe.name, dict) }; }), weapons, diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 730e0907..623d8476 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -89,70 +89,56 @@ export const getSuitByUniqueName = (uniqueName: string): IPowersuit | undefined return ExportWarframes[uniqueName]; }; -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; - } - +export const getString = (key: string, dict: Record): string => { return dict[key] ?? key; }; + +export const getDict = (lang: string | undefined) =>{ + switch (lang) { + case "de": + return dict_de; + + case "es": + return dict_es; + + case "fr": + return dict_fr; + + case "it": + return dict_it; + + case "ja": + return dict_ja; + + case "ko": + return dict_ko; + + case "pl": + return dict_pl; + + case "pt": + return dict_pt; + + case "ru": + return dict_ru; + + case "tc": + return dict_tc; + + case "th": + return dict_th; + + case "tr": + return dict_tr; + + case "uk": + return dict_uk; + + case "zh": + return dict_zh; + + case "en": + default: + return dict_en; + } +} -- 2.47.2 From 995ffc23cce4a252f5ed3e5efc92b7b1b71d8752 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon Date: Wed, 26 Jun 2024 05:51:59 +0000 Subject: [PATCH 4/5] Apply prettier changes --- src/services/itemDataService.ts | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 623d8476..e5be76dd 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -93,52 +93,52 @@ export const getString = (key: string, dict: Record): string => return dict[key] ?? key; }; -export const getDict = (lang: string | undefined) =>{ +export const getDict = (lang: string | undefined) => { switch (lang) { case "de": return dict_de; case "es": return dict_es; - + case "fr": return dict_fr; - + case "it": return dict_it; - + case "ja": return dict_ja; - + case "ko": return dict_ko; - + case "pl": return dict_pl; - + case "pt": return dict_pt; - + case "ru": - return dict_ru; + return dict_ru; case "tc": return dict_tc; - + case "th": return dict_th; - + case "tr": return dict_tr; - + case "uk": return dict_uk; - + case "zh": return dict_zh; - + case "en": default: - return dict_en; + return dict_en; } -} +}; -- 2.47.2 From 374cc9824830f411676e38567de746a6c1f6ccce Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Wed, 26 Jun 2024 09:19:44 +0200 Subject: [PATCH 5/5] Update src/controllers/custom/getItemListsController.ts Co-authored-by: Master --- src/controllers/custom/getItemListsController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index 0282ba6e..e6284f8d 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -19,7 +19,7 @@ interface ListedItem { const getItemListsController: RequestHandler = (req, res) => { const weapons = []; const miscitems = []; - const dict = getDict(req.query.dict?.toString()); + const dict = getDict(req.query.lang?.toString()); for (const [uniqueName, item] of Object.entries(ExportWeapons)) { if (item.productCategory !== "OperatorAmps") { if (item.totalDamage !== 0) { -- 2.47.2