diff --git a/package.json b/package.json index 28cac72a..ab1d182c 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "build": "tsc && copyfiles static/webui/** build", "lint": "eslint --ext .ts .", "lint:fix": "eslint --fix --ext .ts .", - "prettier": "prettier --write ." + "prettier": "prettier --write .", + "update-translations": "ts-node-dev -r tsconfig-paths/register static/webui/translations/update-translations.ts " }, "license": "GNU", "dependencies": { diff --git a/src/routes/webui.ts b/src/routes/webui.ts index 5ae72040..c94d05ea 100644 --- a/src/routes/webui.ts +++ b/src/routes/webui.ts @@ -15,6 +15,13 @@ webuiRouter.use("/webui", (req, res, next) => { if (req.originalUrl === "/") { return res.redirect("/webui/"); } + if ( + req.originalUrl.includes("translations/update-locales.ts") || + req.originalUrl.includes("translations/old_en.json") + ) { + res.status(404).json({ error: "endpoint was not found" }); + return; + } next(); }); diff --git a/static/webui/translations/de.json b/static/webui/translations/de.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/de.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/es.json b/static/webui/translations/es.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/es.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/fr.json b/static/webui/translations/fr.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/fr.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/it.json b/static/webui/translations/it.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/it.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/ja.json b/static/webui/translations/ja.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/ja.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/ko.json b/static/webui/translations/ko.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/ko.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/old_en.json b/static/webui/translations/old_en.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/old_en.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/pl.json b/static/webui/translations/pl.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/pl.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/pt.json b/static/webui/translations/pt.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/pt.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/tc.json b/static/webui/translations/tc.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/tc.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/th.json b/static/webui/translations/th.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/th.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/tr.json b/static/webui/translations/tr.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/tr.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/uk.json b/static/webui/translations/uk.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/uk.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +} diff --git a/static/webui/translations/update-translations.ts b/static/webui/translations/update-translations.ts new file mode 100644 index 00000000..3c8758b2 --- /dev/null +++ b/static/webui/translations/update-translations.ts @@ -0,0 +1,108 @@ +import { logger } from "@/src/utils/logger"; +import fs from "fs"; +import path from "path"; +import prettier from "prettier"; + +const languageList = ["de", "es", "fr", "it", "ja", "ko", "pl", "pt", "ru", "tr", "uk", "zh", "tc", "th"]; +const baseLangFile = "./static/webui/translations/en.json"; +const oldLangFile = "./static/webui/translations/old_en.json"; + +function mergeTranslations(source: Record, target: Record) { + Object.keys(source).forEach(key => { + if (typeof source[key] === "object" && source[key] !== null) { + if (!target[key] || typeof target[key] !== "object") { + target[key] = {}; + } + mergeTranslations(source[key] as Record, target[key] as Record); + } else if (!(key in target)) { + target[key] = ""; + } + }); +} + +function compareAndUpdateTranslations( + newData: Record, + oldData: Record, + langData: Record +): boolean { + let updated = false; + + Object.keys(newData).forEach(key => { + const newValue = newData[key]; + const oldValue = oldData[key]; + + if (typeof newValue === "object" && newValue !== null) { + if (typeof oldValue !== "object" || oldValue === null) { + langData[key] = { ...newValue }; + updated = true; + } else { + const isSubUpdated = compareAndUpdateTranslations( + newValue as Record, + oldValue as Record, + langData[key] as Record + ); + if (isSubUpdated) { + updated = true; + } + } + } else { + if (newValue !== oldValue) { + langData[key] = newValue; + updated = true; + } + } + }); + + return updated; +} + +async function processTranslations() { + let enData: Record; + let oldEnData: Record = {}; + + try { + enData = JSON.parse(fs.readFileSync(baseLangFile, "utf-8")); + oldEnData = fs.existsSync(oldLangFile) ? JSON.parse(fs.readFileSync(oldLangFile, "utf-8")) : {}; + } catch (error) { + logger.error("Error reading base or old language files:", error); + process.exit(1); + } + + for (const lang of languageList) { + const langFile = `./static/webui/translations/${lang}.json`; + const langPath = path.resolve(langFile); + + if (!fs.existsSync(langPath)) { + logger.warn(`File ${langFile} not found! Creating a new one.`); + fs.writeFileSync(langPath, JSON.stringify({}, null, 2), "utf-8"); + } + + try { + const langData: Record = JSON.parse(fs.readFileSync(langPath, "utf-8")); + + const originalLangDataStr = JSON.stringify(langData); + + compareAndUpdateTranslations(enData, oldEnData, langData); + mergeTranslations(enData, langData); + + const newLangDataStr = JSON.stringify(langData); + if (originalLangDataStr !== newLangDataStr) { + const formattedLangData = await prettier.format(newLangDataStr, { parser: "json" }); + fs.writeFileSync(langPath, formattedLangData, "utf-8"); + logger.info(`Updated: ${langFile}`); + } + } catch (error) { + logger.error(`Error processing ${langFile}:`, error); + } + } + + const formattedEnData = await prettier.format(JSON.stringify(enData), { + parser: "json" + }); + + fs.writeFileSync(oldLangFile, formattedEnData, "utf-8"); + logger.info("Updated old_en.json with the latest translations."); + process.exit(0); +} + +processTranslations(); diff --git a/static/webui/translations/zh.json b/static/webui/translations/zh.json new file mode 100644 index 00000000..8a4cc569 --- /dev/null +++ b/static/webui/translations/zh.json @@ -0,0 +1,129 @@ +{ + "general": { + "inventoryUpdateNote": "Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.", + "addButton": "Add", + "bulkActions": "Bulk Actions" + }, + "code": { + "nonValidAuthz": "Your credentials are no longer valid.", + "changeNameConfirm": "What would you like to change your account name to?", + "deleteAccountConfirm": "Are you sure you want to delete your account {{displayName}} ({{email}})? This action cannot be undone.", + "archgun": "Archgun", + "melee": "Melee", + "pistol": "Pistol", + "rifle": "Rifle", + "shotgun": "Shotgun", + "kitgun": "Kitgun", + "zaw": "Zaw", + "moteAmp": "Mote Amp", + "amp": "Amp", + "sirocco": "Sirocco", + "kDrive": "K-Drive", + "legendaryCore": "Legendary Core", + "traumaticPeculiar": "Traumatic Peculiar", + "badItem": "(Imposter)", + "maxRank": "Max Rank", + "rename": "Rename", + "renamePrompt": "Enter new custom name:", + "remove": "Remove", + "addItemsConfirm": "Are you sure you want to add {{count}} items to your account?", + "noEquipmentToRankUp": "No equipment to rank up.", + "succAdded": "Successfully added.", + "buffsNumber": "Number of buffs", + "cursesNumber": "Number of curses", + "rerollsNumber": "Number of rerolls", + "viewStats": "View Stats", + "rank": "Rank", + "count": "Count", + "focusAllUnlocked": "All focus schools are already unlocked.", + "focusUnlocked": "Unlocked {{count}} new focus schools! An inventory update will be needed for the changes to be reflected in-game. Visiting the navigation should be the easiest way to trigger that.", + "addModsConfirm": "Are you sure you want to add {{count}} mods to your account?", + "succImport": "Successfully imported." + }, + "login": { + "description": "Login using your OpenWF account credentials (same as in-game when connecting to this server).", + "emailLabel": "Email address", + "passwordLabel": "Password", + "loginButton": "Login" + }, + "navbar": { + "logout": "Logout", + "renameAccount": "Rename Account", + "deleteAccount": "Delete Account", + "inventory": "Inventory", + "mods": "Mods", + "cheats": "Cheats", + "import": "Import" + }, + "inventory": { + "addItems": "Add Items", + "suits": "Warframes", + "longGuns": "Primary Weapons", + "pistols": "Secondary Weapons", + "melee": "Melee Weapons", + "spaceSuits": "Archwings", + "spaceGuns": "Archwing Primary Weapons", + "spaceMelee": "Archwing Melee Weapons", + "mechSuits": "Necramechs", + "sentinels": "Sentinels", + "sentinelWeapons": "Sentinel Weapons", + "operatorAmps": "Amps", + "hoverboards": "K-Drives", + "bulkAddSuits": "Add Missing Warframes", + "bulkAddWeapons": "Add Missing Weapons", + "bulkAddSpaceSuits": "Add Missing Archwings", + "bulkAddSpaceWeapons": "Add Missing Archwing Weapons", + "bulkAddSentinels": "Add Missing Sentinels", + "bulkAddSentinelWeapons": "Add Missing Sentinel Weapons", + "bulkRankUpSuits": "Max Rank All Warframes", + "bulkRankUpWeapons": "Max Rank All Weapons", + "bulkRankUpSpaceSuits": "Max Rank All Archwings", + "bulkRankUpSpaceWeapons": "Max Rank All Archwing Weapons", + "bulkRankUpSentinels": "Max Rank All Sentinels", + "bulkRankUpSentinelWeapons": "Max Rank All Sentinel Weapons" + }, + "powersuit": { + "archonShardsLabel": "Archon Shard Slots", + "archonShardsDescription": "You can use these unlimited slots to apply a wide range of upgrades." + }, + "mods": { + "addRiven": "Add Riven", + "fingerprint": "Fingerprint", + "fingerprintHelp": "Need help with the fingerprint?", + "rivens": "Rivens", + "mods": "Mods", + "bulkAddMods": "Add Missing Mods" + }, + "cheats": { + "administratorRequirement": "You must be an administrator to use this feature. To become an administrator, add \"\" to administratorNames in the config.json.", + "skipTutorial": "Skip Tutorial", + "skipAllDialogue": "Skip All Dialogue", + "unlockAllScans": "Unlock All Scans", + "unlockAllMissions": "Unlock All Missions", + "unlockAllQuests": "Unlock All Quests", + "completeAllQuests": "Complete All Quests", + "infiniteCredits": "Infinite Credits", + "infinitePlatinum": "Infinite Platinum", + "infiniteEndo": "Infinite Endo", + "infiniteRegalAya": "Infinite Regal Aya", + "unlockAllShipFeatures": "Unlock All Ship Features", + "unlockAllShipDecorations": "Unlock All Ship Decorations", + "unlockAllFlavourItems": "Unlock All Flavor Items", + "unlockAllSkins": "Unlock All Skins", + "unlockAllCapturaScenes": "Unlock All Captura Scenes", + "universalPolarityEverywhere": "Universal Polarity Everywhere", + "unlockDoubleCapacityPotatoesEverywhere": "Potatoes Everywhere", + "unlockExilusEverywhere": "Exilus Adapters Everywhere", + "unlockArcanesEverywhere": "Arcane Adapters Everywhere", + "noDailyStandingLimits": "No Daily Standing Limits", + "spoofMasteryRank": "Spoofed Mastery Rank (-1 to disable)", + "saveSettings": "Save Settings", + "account": "Account", + "unlockAllFocusSchools": "Unlock All Focus Schools", + "helminthUnlockAll": "Fully Level Up Helminth" + }, + "import": { + "importNote": "You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.", + "submit": "Submit" + } +}