WIP: feat(webui): translations support #903
@ -9,7 +9,8 @@
|
|||||||
"build": "tsc && copyfiles static/webui/** build",
|
"build": "tsc && copyfiles static/webui/** build",
|
||||||
"lint": "eslint --ext .ts .",
|
"lint": "eslint --ext .ts .",
|
||||||
"lint:fix": "eslint --fix --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",
|
"license": "GNU",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -15,6 +15,13 @@ webuiRouter.use("/webui", (req, res, next) => {
|
|||||||
if (req.originalUrl === "/") {
|
if (req.originalUrl === "/") {
|
||||||
return res.redirect("/webui/");
|
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();
|
next();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -34,13 +34,13 @@
|
|||||||
<li><a class="dropdown-item" href="#" data-lang="th" onclick="event.preventDefault();setLanguage('th');">แบบไทย</a></li>
|
<li><a class="dropdown-item" href="#" data-lang="th" onclick="event.preventDefault();setLanguage('th');">แบบไทย</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown user-dropdown">
|
||||||
<button class="nav-link dropdown-toggle displayname" data-bs-toggle="dropdown" aria-expanded="false"></button>
|
<button class="nav-link dropdown-toggle displayname" data-bs-toggle="dropdown" aria-expanded="false"></button>
|
||||||
<ul class="dropdown-menu dropdown-menu-end">
|
<ul class="dropdown-menu dropdown-menu-end">
|
||||||
<li><a class="dropdown-item" href="/webui/" onclick="logout();">Logout</a></li>
|
<li><a class="dropdown-item" href="/webui/" onclick="logout();" data-i18n="navbar.logout"></a></li>
|
||||||
<li><hr class="dropdown-divider"></li>
|
<li><hr class="dropdown-divider"></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="event.preventDefault();renameAccount();">Rename Account</a></li>
|
<li><a class="dropdown-item" href="#" onclick="event.preventDefault();renameAccount();" data-i18n="navbar.renameAccount"></a></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="event.preventDefault();deleteAccount();">Delete Account</a></li>
|
<li><a class="dropdown-item" href="#" onclick="event.preventDefault();deleteAccount();" data-i18n="navbar.deleteAccount"></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -56,16 +56,16 @@
|
|||||||
<div class="navbar p-0">
|
<div class="navbar p-0">
|
||||||
<ul class="navbar-nav justify-content-end">
|
<ul class="navbar-nav justify-content-end">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/webui/inventory" data-bs-dismiss="offcanvas" data-bs-target="#sidebar">Inventory</a>
|
<a class="nav-link" href="/webui/inventory" data-bs-dismiss="offcanvas" data-bs-target="#sidebar" data-i18n="navbar.inventory"></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/webui/mods" data-bs-dismiss="offcanvas" data-bs-target="#sidebar">Mods</a>
|
<a class="nav-link" href="/webui/mods" data-bs-dismiss="offcanvas" data-bs-target="#sidebar" data-i18n="navbar.mods"></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/webui/cheats" data-bs-dismiss="offcanvas" data-bs-target="#sidebar">Cheats</a>
|
<a class="nav-link" href="/webui/cheats" data-bs-dismiss="offcanvas" data-bs-target="#sidebar" data-i18n="navbar.cheats"></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/webui/import" data-bs-dismiss="offcanvas" data-bs-target="#sidebar">Import</a>
|
<a class="nav-link" href="/webui/import" data-bs-dismiss="offcanvas" data-bs-target="#sidebar" data-i18n="navbar.import"></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -73,38 +73,35 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="w-100">
|
<div class="w-100">
|
||||||
<div data-route="/webui/" data-title="Login | OpenWF WebUI">
|
<div data-route="/webui/" data-title="Login | OpenWF WebUI">
|
||||||
<p>Login using your OpenWF account credentials.</p>
|
<p data-i18n="login.description"></p>
|
||||||
<form onsubmit="doLogin();return false;">
|
<form onsubmit="doLogin();return false;">
|
||||||
<label for="email">Email address</label>
|
<label for="email" data-i18n="login.emailLabel"></label>
|
||||||
<input class="form-control" type="email" id="email" required />
|
<input class="form-control" type="email" id="email" required />
|
||||||
<br />
|
<br />
|
||||||
<label for="password">Password</label>
|
<label for="password" data-i18n="login.passwordLabel"></label>
|
||||||
<input class="form-control" type="password" id="password" required />
|
<input class="form-control" type="password" id="password" required />
|
||||||
<br />
|
<br />
|
||||||
<button class="btn btn-primary" type="submit">Login</button>
|
<button class="btn btn-primary" type="submit" data-i18n="login.loginButton"></button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div data-route="/webui/inventory" data-title="Inventory | OpenWF WebUI">
|
<div data-route="/webui/inventory" data-title="Inventory | OpenWF WebUI">
|
||||||
<p class="mb-3">
|
<p class="mb-3" data-i18n="general.inventoryUpdateNote"></p>
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header">Add Items</h5>
|
<h5 class="card-header" data-i18n="inventory.addItems"></h5>
|
||||||
<form class="card-body input-group" onsubmit="doAcquireMiscItems();return false;">
|
<form class="card-body input-group" onsubmit="doAcquireMiscItems();return false;">
|
||||||
<input class="form-control" id="miscitem-count" type="number" min="1" value="1" />
|
<input class="form-control" id="miscitem-count" type="number" min="1" value="1" />
|
||||||
<input class="form-control w-50" id="miscitem-type" list="datalist-miscitems" />
|
<input class="form-control w-50" id="miscitem-type" list="datalist-miscitems" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Warframes</h5>
|
<h5 class="card-header" data-i18n="inventory.suits"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Suits');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Suits');return false;">
|
||||||
<input class="form-control" id="acquire-type-Suits" list="datalist-Suits" />
|
<input class="form-control" id="acquire-type-Suits" list="datalist-Suits" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="Suits-list"></tbody>
|
<tbody id="Suits-list"></tbody>
|
||||||
@ -114,11 +111,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Primary Weapons</h5>
|
<h5 class="card-header" data-i18n="inventory.longGuns"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('LongGuns');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('LongGuns');return false;">
|
||||||
<input class="form-control" id="acquire-type-LongGuns" list="datalist-LongGuns" />
|
<input class="form-control" id="acquire-type-LongGuns" list="datalist-LongGuns" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="LongGuns-list"></tbody>
|
<tbody id="LongGuns-list"></tbody>
|
||||||
@ -130,11 +127,11 @@
|
|||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Secondary Weapons</h5>
|
<h5 class="card-header" data-i18n="inventory.pistols"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Pistols');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Pistols');return false;">
|
||||||
<input class="form-control" id="acquire-type-Pistols" list="datalist-Pistols" />
|
<input class="form-control" id="acquire-type-Pistols" list="datalist-Pistols" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="Pistols-list"></tbody>
|
<tbody id="Pistols-list"></tbody>
|
||||||
@ -144,11 +141,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Melee Weapons</h5>
|
<h5 class="card-header" data-i18n="inventory.melee"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Melee');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Melee');return false;">
|
||||||
<input class="form-control" id="acquire-type-Melee" list="datalist-Melee" />
|
<input class="form-control" id="acquire-type-Melee" list="datalist-Melee" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="Melee-list"></tbody>
|
<tbody id="Melee-list"></tbody>
|
||||||
@ -160,11 +157,11 @@
|
|||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Archwing</h5>
|
<h5 class="card-header" data-i18n="inventory.spaceSuits"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceSuits');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceSuits');return false;">
|
||||||
<input class="form-control" id="acquire-type-SpaceSuits" list="datalist-SpaceSuits" />
|
<input class="form-control" id="acquire-type-SpaceSuits" list="datalist-SpaceSuits" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="SpaceSuits-list"></tbody>
|
<tbody id="SpaceSuits-list"></tbody>
|
||||||
@ -174,11 +171,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Archwing Primary Weapons</h5>
|
<h5 class="card-header" data-i18n="inventory.spaceGuns"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceGuns');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceGuns');return false;">
|
||||||
<input class="form-control" id="acquire-type-SpaceGuns" list="datalist-SpaceGuns" />
|
<input class="form-control" id="acquire-type-SpaceGuns" list="datalist-SpaceGuns" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="SpaceGuns-list"></tbody>
|
<tbody id="SpaceGuns-list"></tbody>
|
||||||
@ -190,11 +187,11 @@
|
|||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Archwing Melee Weapons</h5>
|
<h5 class="card-header" data-i18n="inventory.spaceMelee"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceMelee');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceMelee');return false;">
|
||||||
<input class="form-control" id="acquire-type-SpaceMelee" list="datalist-SpaceMelee" />
|
<input class="form-control" id="acquire-type-SpaceMelee" list="datalist-SpaceMelee" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="SpaceMelee-list"></tbody>
|
<tbody id="SpaceMelee-list"></tbody>
|
||||||
@ -204,11 +201,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Necramechs</h5>
|
<h5 class="card-header" data-i18n="inventory.mechSuits"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('MechSuits');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('MechSuits');return false;">
|
||||||
<input class="form-control" id="acquire-type-MechSuits" list="datalist-MechSuits" />
|
<input class="form-control" id="acquire-type-MechSuits" list="datalist-MechSuits" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="MechSuits-list"></tbody>
|
<tbody id="MechSuits-list"></tbody>
|
||||||
@ -220,11 +217,11 @@
|
|||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Sentinels</h5>
|
<h5 class="card-header" data-i18n="inventory.sentinels"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Sentinels');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Sentinels');return false;">
|
||||||
<input class="form-control" id="acquire-type-Sentinels" list="datalist-Sentinels" />
|
<input class="form-control" id="acquire-type-Sentinels" list="datalist-Sentinels" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="Sentinels-list"></tbody>
|
<tbody id="Sentinels-list"></tbody>
|
||||||
@ -234,11 +231,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Sentinel Weapons</h5>
|
<h5 class="card-header" data-i18n="inventory.sentinelWeapons"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SentinelWeapons');return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SentinelWeapons');return false;">
|
||||||
<input class="form-control" id="acquire-type-SentinelWeapons" list="datalist-SentinelWeapons" />
|
<input class="form-control" id="acquire-type-SentinelWeapons" list="datalist-SentinelWeapons" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="SentinelWeapons-list"></tbody>
|
<tbody id="SentinelWeapons-list"></tbody>
|
||||||
@ -250,7 +247,7 @@
|
|||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">Amps</h5>
|
<h5 class="card-header" data-i18n="inventory.operatorAmps"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="OperatorAmps-list"></tbody>
|
<tbody id="OperatorAmps-list"></tbody>
|
||||||
@ -260,7 +257,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="card mb-3" style="height: 400px;">
|
<div class="card mb-3" style="height: 400px;">
|
||||||
<h5 class="card-header">K-Drives</h5>
|
<h5 class="card-header" data-i18n="inventory.hoverboards"></h5>
|
||||||
<div class="card-body overflow-auto">
|
<div class="card-body overflow-auto">
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="Hoverboards-list"></tbody>
|
<tbody id="Hoverboards-list"></tbody>
|
||||||
@ -270,23 +267,23 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header">Bulk Actions</h5>
|
<h5 class="card-header" data-i18n="general.bulkActions"></h5>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="mb-2 d-flex flex-wrap gap-2">
|
<div class="mb-2 d-flex flex-wrap gap-2">
|
||||||
<button class="btn btn-primary" onclick="addMissingEquipment(['Suits']);">Add Missing Warframes</button>
|
<button class="btn btn-primary" onclick="addMissingEquipment(['Suits']);" data-i18n="inventory.bulkAddSuits"></button>
|
||||||
<button class="btn btn-primary" onclick="addMissingEquipment(['Melee', 'LongGuns', 'Pistols']);">Add Missing Weapons</button>
|
<button class="btn btn-primary" onclick="addMissingEquipment(['Melee', 'LongGuns', 'Pistols']);" data-i18n="inventory.bulkAddWeapons"></button>
|
||||||
<button class="btn btn-primary" onclick="addMissingEquipment(['SpaceSuits']);">Add Missing Archwings</button>
|
<button class="btn btn-primary" onclick="addMissingEquipment(['SpaceSuits']);" data-i18n="inventory.bulkAddSpaceSuits"></button>
|
||||||
<button class="btn btn-primary" onclick="addMissingEquipment(['SpaceGuns', 'SpaceMelee']);">Add Missing Archwing Weapons</button>
|
<button class="btn btn-primary" onclick="addMissingEquipment(['SpaceGuns', 'SpaceMelee']);" data-i18n="inventory.bulkAddSpaceWeapons"></button>
|
||||||
<button class="btn btn-primary" onclick="addMissingEquipment(['Sentinels']);">Add Missing Sentinels</button>
|
<button class="btn btn-primary" onclick="addMissingEquipment(['Sentinels']);" data-i18n="inventory.bulkAddSentinels"></button>
|
||||||
<button class="btn btn-primary" onclick="addMissingEquipment(['SentinelWeapons']);">Add Missing Sentinel Weapons</button>
|
<button class="btn btn-primary" onclick="addMissingEquipment(['SentinelWeapons']);" data-i18n="inventory.bulkAddSentinelWeapons"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-2 d-flex flex-wrap gap-2">
|
<div class="mb-2 d-flex flex-wrap gap-2">
|
||||||
<button class="btn btn-success" onclick="maxRankAllEquipment(['Suits']);">Max Rank All Warframes</button>
|
<button class="btn btn-success" onclick="maxRankAllEquipment(['Suits']);" data-i18n="inventory.bulkRankUpSuits"></button>
|
||||||
<button class="btn btn-success" onclick="maxRankAllEquipment(['Melee', 'LongGuns', 'Pistols']);">Max Rank All Weapons</button>
|
<button class="btn btn-success" onclick="maxRankAllEquipment(['Melee', 'LongGuns', 'Pistols']);" data-i18n="inventory.bulkRankUpWeapons"></button>
|
||||||
<button class="btn btn-success" onclick="maxRankAllEquipment(['SpaceSuits']);">Max Rank All Archwings</button>
|
<button class="btn btn-success" onclick="maxRankAllEquipment(['SpaceSuits']);" data-i18n="inventory.bulkRankUpSpaceSuits"></button>
|
||||||
<button class="btn btn-success" onclick="maxRankAllEquipment(['SpaceGuns', 'SpaceMelee']);">Max Rank All Archwing Weapons</button>
|
<button class="btn btn-success" onclick="maxRankAllEquipment(['SpaceGuns', 'SpaceMelee']);" data-i18n="inventory.bulkRankUpSpaceWeapons"></button>
|
||||||
<button class="btn btn-success" onclick="maxRankAllEquipment(['Sentinels']);">Max Rank All Sentinels</button>
|
<button class="btn btn-success" onclick="maxRankAllEquipment(['Sentinels']);" data-i18n="inventory.bulkRankUpSentinels"></button>
|
||||||
<button class="btn btn-success" onclick="maxRankAllEquipment(['SentinelWeapons']);">Max Rank All Sentinel Weapons</button>
|
<button class="btn btn-success" onclick="maxRankAllEquipment(['SentinelWeapons']);" data-i18n="inventory.bulkRankUpSentinelWeapons"></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -295,14 +292,14 @@
|
|||||||
<h3 class="mb-0"></h3>
|
<h3 class="mb-0"></h3>
|
||||||
<p class="text-body-secondary"></p>
|
<p class="text-body-secondary"></p>
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header">Archon Shard Slots</h5>
|
<h5 class="card-header" data-i18n="powersuit.archonShardsLabel"></h5>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p>You can use these unlimited slots to apply a wide range of upgrades.</p>
|
<p data-i18n="powersuit.archonShardsDescription"></p>
|
||||||
<form class="input-group mb-3" onsubmit="doPushArchonCrystalUpgrade();return false;">
|
<form class="input-group mb-3" onsubmit="doPushArchonCrystalUpgrade();return false;">
|
||||||
<input type="number" id="archon-crystal-add-count" min="1" max="10000" value="1" class="form-control" style="max-width:100px" />
|
<input type="number" id="archon-crystal-add-count" min="1" max="10000" value="1" class="form-control" style="max-width:100px" />
|
||||||
<span class="input-group-text">x</span>
|
<span class="input-group-text">x</span>
|
||||||
<input class="form-control" list="datalist-archonCrystalUpgrades" />
|
<input class="form-control" list="datalist-archonCrystalUpgrades" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="crystals-list"></tbody>
|
<tbody id="crystals-list"></tbody>
|
||||||
@ -311,14 +308,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div data-route="/webui/mods" data-title="Mods | OpenWF WebUI">
|
<div data-route="/webui/mods" data-title="Mods | OpenWF WebUI">
|
||||||
<p class="mb-3">
|
<p class="mb-3" data-i18n="general.inventoryUpdateNote"></p>
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-xxl-6">
|
<div class="col-xxl-6">
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header">Add Riven</h5>
|
<h5 class="card-header" data-i18n="mods.addRiven"></h5>
|
||||||
<form class="card-body" onsubmit="doAcquireRiven();return false;">
|
<form class="card-body" onsubmit="doAcquireRiven();return false;">
|
||||||
<select class="form-control mb-3" id="addriven-type">
|
<select class="form-control mb-3" id="addriven-type">
|
||||||
<option value="LotusArchgunRandomModRare">LotusArchgunRandomModRare</option>
|
<option value="LotusArchgunRandomModRare">LotusArchgunRandomModRare</option>
|
||||||
@ -329,13 +323,13 @@
|
|||||||
<option value="LotusShotgunRandomModRare">LotusShotgunRandomModRare</option>
|
<option value="LotusShotgunRandomModRare">LotusShotgunRandomModRare</option>
|
||||||
<option value="PlayerMeleeWeaponRandomModRare">PlayerMeleeWeaponRandomModRare</option>
|
<option value="PlayerMeleeWeaponRandomModRare">PlayerMeleeWeaponRandomModRare</option>
|
||||||
</select>
|
</select>
|
||||||
<textarea id="addriven-fingerprint" class="form-control mb-3" placeholder="Fingerprint"></textarea>
|
<textarea id="addriven-fingerprint" class="form-control mb-3" data-i18n-placeholder="mods.fingerprint"></textarea>
|
||||||
<button class="btn btn-primary" style="margin-right: 5px" type="submit">Add</button>
|
<button class="btn btn-primary" style="margin-right: 5px" type="submit" data-i18n="general.addButton"></button>
|
||||||
<a href="riven-tool/" target="_blank">Need help with the fingerprint?</a>
|
<a href="riven-tool/" target="_blank" data-i18n="mods.fingerprintHelp"></a>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header">Rivens</h5>
|
<h5 class="card-header" data-i18n="mods.rivens"></h5>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="riven-list"></tbody>
|
<tbody id="riven-list"></tbody>
|
||||||
@ -345,12 +339,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-xxl-6">
|
<div class="col-xxl-6">
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header">Mods</h5>
|
<h5 class="card-header" data-i18n="mods.mods"></h5>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireMod();return false;">
|
<form class="input-group mb-3" onsubmit="doAcquireMod();return false;">
|
||||||
<input class="form-control" id="mod-count" type="number" min="1" value="1"/>
|
<input class="form-control" id="mod-count" type="number" min="1" value="1"/>
|
||||||
<input class="form-control w-50" id="mod-to-acquire" list="datalist-mods" />
|
<input class="form-control w-50" id="mod-to-acquire" list="datalist-mods" />
|
||||||
<button class="btn btn-primary" type="submit">Add</button>
|
<button class="btn btn-primary" type="submit" data-i18n="general.addButton"></button>
|
||||||
</form>
|
</form>
|
||||||
<table class="table table-hover w-100">
|
<table class="table table-hover w-100">
|
||||||
<tbody id="mods-list"></tbody>
|
<tbody id="mods-list"></tbody>
|
||||||
@ -358,9 +352,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header">Bulk Actions</h5>
|
<h5 class="card-header" data-i18n="general.bulkActions"></h5>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<button class="btn btn-primary" onclick="doAddAllMods();">Add Missing Mods</button>
|
<button class="btn btn-primary" onclick="doAddAllMods();" data-i18n="mods.bulkAddMods"></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -373,127 +367,113 @@
|
|||||||
<h5 class="card-header">Server</h5>
|
<h5 class="card-header">Server</h5>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div id="server-settings-no-perms" class="d-none">
|
<div id="server-settings-no-perms" class="d-none">
|
||||||
<p class="card-text">You must be an administrator to use this feature. To become an administrator, add <code>"<span class="displayname"></span>"</code> to <code>administratorNames</code> in the config.json.</p>
|
<p class="card-text" data-i18n="cheats.administratorRequirement"></p>
|
||||||
</div>
|
</div>
|
||||||
<form id="server-settings" class="d-none" onsubmit="doChangeSettings();return false;">
|
<form id="server-settings" class="d-none" onsubmit="doChangeSettings();return false;">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="skipTutorial" />
|
<input class="form-check-input" type="checkbox" id="skipTutorial" />
|
||||||
<label class="form-check-label" for="skipTutorial">Skip Tutorial</label>
|
<label class="form-check-label" for="skipTutorial" data-i18n="cheats.skipTutorial"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="skipAllDialogue" />
|
<input class="form-check-input" type="checkbox" id="skipAllDialogue" />
|
||||||
<label class="form-check-label" for="skipAllDialogue">Skip All Dialogue</label>
|
<label class="form-check-label" for="skipAllDialogue" data-i18n="cheats.skipAllDialogue"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllScans" />
|
<input class="form-check-input" type="checkbox" id="unlockAllScans" />
|
||||||
<label class="form-check-label" for="unlockAllScans">Unlock All Scans</label>
|
<label class="form-check-label" for="unlockAllScans" data-i18n="cheats.unlockAllScans"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllMissions" />
|
<input class="form-check-input" type="checkbox" id="unlockAllMissions" />
|
||||||
<label class="form-check-label" for="unlockAllMissions">Unlock All Missions</label>
|
<label class="form-check-label" for="unlockAllMissions" data-i18n="cheats.unlockAllMissions"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllQuests" />
|
<input class="form-check-input" type="checkbox" id="unlockAllQuests" />
|
||||||
<label class="form-check-label" for="unlockAllQuests">Unlock All Quests</label>
|
<label class="form-check-label" for="unlockAllQuests" data-i18n="cheats.unlockAllQuests"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="completeAllQuests" />
|
<input class="form-check-input" type="checkbox" id="completeAllQuests" />
|
||||||
<label class="form-check-label" for="completeAllQuests">Complete All Quests</label>
|
<label class="form-check-label" for="completeAllQuests" data-i18n="cheats.completeAllQuests"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="infiniteCredits" />
|
<input class="form-check-input" type="checkbox" id="infiniteCredits" />
|
||||||
<label class="form-check-label" for="infiniteCredits">Infinite Credits</label>
|
<label class="form-check-label" for="infiniteCredits" data-i18n="cheats.infiniteCredits"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="infinitePlatinum" />
|
<input class="form-check-input" type="checkbox" id="infinitePlatinum" />
|
||||||
<label class="form-check-label" for="infinitePlatinum">Infinite Platinum</label>
|
<label class="form-check-label" for="infinitePlatinum" data-i18n="cheats.infinitePlatinum"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="infiniteEndo" />
|
<input class="form-check-input" type="checkbox" id="infiniteEndo" />
|
||||||
<label class="form-check-label" for="infiniteEndo">Infinite Endo</label>
|
<label class="form-check-label" for="infiniteEndo" data-i18n="cheats.infiniteEndo"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="infiniteRegalAya" />
|
<input class="form-check-input" type="checkbox" id="infiniteRegalAya" />
|
||||||
<label class="form-check-label" for="infiniteRegalAya">Infinite Regal Aya</label>
|
<label class="form-check-label" for="infiniteRegalAya" data-i18n="cheats.infiniteRegalAya"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllShipFeatures" />
|
<input class="form-check-input" type="checkbox" id="unlockAllShipFeatures" />
|
||||||
<label class="form-check-label" for="unlockAllShipFeatures">Unlock All Ship Features</label>
|
<label class="form-check-label" for="unlockAllShipFeatures" data-i18n="cheats.unlockAllShipFeatures"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllShipDecorations" />
|
<input class="form-check-input" type="checkbox" id="unlockAllShipDecorations" />
|
||||||
<label class="form-check-label" for="unlockAllShipDecorations">Unlock All Ship Decorations</label>
|
<label class="form-check-label" for="unlockAllShipDecorations" data-i18n="cheats.unlockAllShipDecorations"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllFlavourItems" />
|
<input class="form-check-input" type="checkbox" id="unlockAllFlavourItems" />
|
||||||
<label class="form-check-label" for="unlockAllFlavourItems">
|
<label class="form-check-label" for="unlockAllFlavourItems" data-i18n="cheats.unlockAllFlavourItems"></label>
|
||||||
Unlock All <abbr title="Animation Sets, Glyphs, Plattes, etc.">Flavor Items</abbr>
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllSkins" />
|
<input class="form-check-input" type="checkbox" id="unlockAllSkins" />
|
||||||
<label class="form-check-label" for="unlockAllSkins">Unlock All Skins</label>
|
<label class="form-check-label" for="unlockAllSkins" data-i18n="cheats.unlockAllSkins"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllCapturaScenes" />
|
<input class="form-check-input" type="checkbox" id="unlockAllCapturaScenes" />
|
||||||
<label class="form-check-label" for="unlockAllCapturaScenes">Unlock All Captura Scenes</label>
|
<label class="form-check-label" for="unlockAllCapturaScenes" data-i18n="cheats.unlockAllCapturaScenes"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="universalPolarityEverywhere" />
|
<input class="form-check-input" type="checkbox" id="universalPolarityEverywhere" />
|
||||||
<label class="form-check-label" for="universalPolarityEverywhere">
|
<label class="form-check-label" for="universalPolarityEverywhere" data-i18n="cheats.universalPolarityEverywhere"></label>
|
||||||
Universal Polarity Everywhere
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockDoubleCapacityPotatoesEverywhere" />
|
<input class="form-check-input" type="checkbox" id="unlockDoubleCapacityPotatoesEverywhere" />
|
||||||
<label class="form-check-label" for="unlockDoubleCapacityPotatoesEverywhere">
|
<label class="form-check-label" for="unlockDoubleCapacityPotatoesEverywhere" data-i18n="cheats.unlockDoubleCapacityPotatoesEverywhere"></label>
|
||||||
Potatoes Everywhere
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockExilusEverywhere" />
|
<input class="form-check-input" type="checkbox" id="unlockExilusEverywhere" />
|
||||||
<label class="form-check-label" for="unlockExilusEverywhere">
|
<label class="form-check-label" for="unlockExilusEverywhere" data-i18n="cheats.unlockExilusEverywhere"></label>
|
||||||
Exilus Adapters Everywhere
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockArcanesEverywhere" />
|
<input class="form-check-input" type="checkbox" id="unlockArcanesEverywhere" />
|
||||||
<label class="form-check-label" for="unlockArcanesEverywhere">
|
<label class="form-check-label" for="unlockArcanesEverywhere" data-i18n="cheats.unlockArcanesEverywhere"></label>
|
||||||
Arcane Adapters Everywhere
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="noDailyStandingLimits" />
|
<input class="form-check-input" type="checkbox" id="noDailyStandingLimits" />
|
||||||
<label class="form-check-label" for="noDailyStandingLimits">
|
<label class="form-check-label" for="noDailyStandingLimits" data-i18n="cheats.noDailyStandingLimits"></label>
|
||||||
No Daily Standing Limits
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group mt-2">
|
<div class="form-group mt-2">
|
||||||
<label class="form-label" for="spoofMasteryRank">
|
<label class="form-label" for="spoofMasteryRank" data-i18n="cheats.spoofMasteryRank"></label>
|
||||||
Spoofed Mastery Rank (-1 to disable)
|
|
||||||
</label>
|
|
||||||
<input class="form-control" id="spoofMasteryRank" type="number" min="-1" max="65535" />
|
<input class="form-control" id="spoofMasteryRank" type="number" min="-1" max="65535" />
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-primary mt-3" type="submit">Save Settings</button>
|
<button class="btn btn-primary mt-3" type="submit" data-i18n="cheats.saveSettings"></button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header">Account</h5>
|
<h5 class="card-header" data-i18n="cheats.account"></h5>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p><button class="btn btn-primary" onclick="doUnlockAllFocusSchools();">Unlock All Focus Schools</button></p>
|
<p><button class="btn btn-primary" onclick="doUnlockAllFocusSchools();" data-i18n="cheats.unlockAllFocusSchools"></button></p>
|
||||||
<button class="btn btn-primary" onclick="doHelminthUnlockAll();">Fully Level Up Helminth</button>
|
<button class="btn btn-primary" onclick="doHelminthUnlockAll();" data-i18n="cheats.helminthUnlockAll"></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div data-route="/webui/import" data-title="Import | OpenWF WebUI">
|
<div data-route="/webui/import" data-title="Import | OpenWF WebUI">
|
||||||
<p>You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer <b>will be overwritten</b> in your account.</p>
|
<p data-i18n="import.importNote"></p>
|
||||||
<textarea class="form-control" id="import-inventory"></textarea>
|
<textarea class="form-control" id="import-inventory"></textarea>
|
||||||
<button class="btn btn-primary mt-3" onclick="doImport();">Submit</button>
|
<button class="btn btn-primary mt-3" onclick="doImport();" data-i18n="import.submit"></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -510,8 +490,8 @@
|
|||||||
<datalist id="datalist-MechSuits"></datalist>
|
<datalist id="datalist-MechSuits"></datalist>
|
||||||
<datalist id="datalist-miscitems"></datalist>
|
<datalist id="datalist-miscitems"></datalist>
|
||||||
<datalist id="datalist-mods">
|
<datalist id="datalist-mods">
|
||||||
<option data-key="/Lotus/Upgrades/Mods/Fusers/LegendaryModFuser" value="Legendary Core"></option>
|
<option data-key="/Lotus/Upgrades/Mods/Fusers/LegendaryModFuser" data-i18n-value="code.legendaryCore"></option>
|
||||||
<option data-key="/Lotus/Upgrades/CosmeticEnhancers/Peculiars/CyoteMod" value="Traumatic Peculiar"></option>
|
<option data-key="/Lotus/Upgrades/CosmeticEnhancers/Peculiars/CyoteMod" data-i18n-value="code.traumaticPeculiar"></option>
|
||||||
</datalist>
|
</datalist>
|
||||||
<datalist id="datalist-archonCrystalUpgrades"></datalist>
|
<datalist id="datalist-archonCrystalUpgrades"></datalist>
|
||||||
<script src="/webui/libs/jquery-3.6.0.min.js"></script>
|
<script src="/webui/libs/jquery-3.6.0.min.js"></script>
|
||||||
@ -520,5 +500,6 @@
|
|||||||
<script src="/webui/riven-tool/RivenParser.js"></script>
|
<script src="/webui/riven-tool/RivenParser.js"></script>
|
||||||
<script src="/webui/script.js"></script>
|
<script src="/webui/script.js"></script>
|
||||||
<script src="/webui/libs/bootstrap.bundle.min.js"></script>
|
<script src="/webui/libs/bootstrap.bundle.min.js"></script>
|
||||||
|
<script src="/webui/libs/i18next.min.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
1
static/webui/libs/i18next.min.js
vendored
Normal file
1
static/webui/libs/i18next.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -12,6 +12,7 @@ function loginFromLocalStorage() {
|
|||||||
single.loadRoute("/webui/inventory");
|
single.loadRoute("/webui/inventory");
|
||||||
}
|
}
|
||||||
$(".displayname").text(data.DisplayName);
|
$(".displayname").text(data.DisplayName);
|
||||||
|
localStorage.setItem("displayName", data.DisplayName);
|
||||||
window.accountId = data.id;
|
window.accountId = data.id;
|
||||||
window.authz = "accountId=" + data.id + "&nonce=" + data.Nonce;
|
window.authz = "accountId=" + data.id + "&nonce=" + data.Nonce;
|
||||||
updateInventory();
|
updateInventory();
|
||||||
@ -50,7 +51,7 @@ function revalidateAuthz(succ_cb) {
|
|||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
logout();
|
logout();
|
||||||
alert("Your credentials are no longer valid.");
|
alert(i18next.t("code.nonValidAuthz"));
|
||||||
single.loadRoute("/webui/"); // Show login screen
|
single.loadRoute("/webui/"); // Show login screen
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -59,12 +60,14 @@ function revalidateAuthz(succ_cb) {
|
|||||||
function logout() {
|
function logout() {
|
||||||
localStorage.removeItem("email");
|
localStorage.removeItem("email");
|
||||||
localStorage.removeItem("password");
|
localStorage.removeItem("password");
|
||||||
|
localStorage.removeItem("displayName");
|
||||||
}
|
}
|
||||||
|
|
||||||
function renameAccount() {
|
function renameAccount() {
|
||||||
const newname = window.prompt("What would you like to change your account name to?");
|
const newname = window.prompt(i18next.t("code.changeNameConfirm"));
|
||||||
if (newname) {
|
if (newname) {
|
||||||
fetch("/custom/renameAccount?" + window.authz + "&newname=" + newname).then(() => {
|
fetch("/custom/renameAccount?" + window.authz + "&newname=" + newname).then(() => {
|
||||||
|
localStorage.setItem("displayName", newname);
|
||||||
$(".displayname").text(newname);
|
$(".displayname").text(newname);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -73,11 +76,10 @@ function renameAccount() {
|
|||||||
function deleteAccount() {
|
function deleteAccount() {
|
||||||
if (
|
if (
|
||||||
window.confirm(
|
window.confirm(
|
||||||
"Are you sure you want to delete your account " +
|
i18next.t("code.deleteAccountConfirm", {
|
||||||
document.querySelector(".displayname").textContent +
|
displayName: localStorage.getItem("displayName"),
|
||||||
" (" +
|
email: localStorage.getItem("email")
|
||||||
localStorage.getItem("email") +
|
})
|
||||||
")? This action cannot be undone."
|
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
fetch("/custom/deleteAccount?" + window.authz).then(() => {
|
fetch("/custom/deleteAccount?" + window.authz).then(() => {
|
||||||
@ -110,20 +112,61 @@ single.on("route_load", function (event) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function setActiveLanguage(lang) {
|
async function setActiveLanguage(lang) {
|
||||||
window.lang = lang;
|
window.lang = lang;
|
||||||
const lang_name = document.querySelector("[data-lang=" + lang + "]").textContent;
|
const lang_name = document.querySelector("[data-lang=" + lang + "]").textContent;
|
||||||
document.getElementById("active-lang-name").textContent = lang_name;
|
document.getElementById("active-lang-name").textContent = lang_name;
|
||||||
document.querySelector("[data-lang].active").classList.remove("active");
|
document.querySelector("[data-lang].active").classList.remove("active");
|
||||||
document.querySelector("[data-lang=" + lang + "]").classList.add("active");
|
document.querySelector("[data-lang=" + lang + "]").classList.add("active");
|
||||||
|
const response = await fetch(`/webui/translations/${lang}.json`);
|
||||||
|
const translations = await response.json();
|
||||||
|
const fallbackResponse = await fetch(`/webui/translations/en.json`);
|
||||||
|
const fallbackTranslations = await fallbackResponse.json();
|
||||||
|
|
||||||
|
i18next.init(
|
||||||
|
{
|
||||||
|
lng: lang,
|
||||||
|
fallbackLng: "en",
|
||||||
|
resources: {
|
||||||
|
[lang]: {
|
||||||
|
translation: translations
|
||||||
|
},
|
||||||
|
en: {
|
||||||
|
translation: fallbackTranslations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
function () {
|
||||||
|
document.querySelectorAll("[data-i18n]").forEach(element => {
|
||||||
|
const key = element.getAttribute("data-i18n");
|
||||||
|
element.innerHTML = i18next.t(key);
|
||||||
|
const displayNameElement = element.querySelector(".displayname");
|
||||||
|
if (displayNameElement) {
|
||||||
|
displayNameElement.textContent = localStorage.getItem("displayName");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
document.querySelectorAll("[data-i18n-placeholder]").forEach(element => {
|
||||||
|
const key = element.getAttribute("data-i18n-placeholder");
|
||||||
|
element.setAttribute("placeholder", i18next.t(key));
|
||||||
|
});
|
||||||
|
|
||||||
|
document.querySelectorAll("[data-i18n-value]").forEach(element => {
|
||||||
|
const key = element.getAttribute("data-i18n-value");
|
||||||
|
element.setAttribute("value", i18next.t(key));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
setActiveLanguage(localStorage.getItem("lang") ?? "en");
|
setActiveLanguage(localStorage.getItem("lang") ?? "en");
|
||||||
|
|
||||||
function setLanguage(lang) {
|
async function setLanguage(lang) {
|
||||||
setActiveLanguage(lang);
|
await setActiveLanguage(lang);
|
||||||
localStorage.setItem("lang", lang);
|
localStorage.setItem("lang", lang);
|
||||||
|
if (localStorage.getItem("email")) {
|
||||||
fetchItemList();
|
fetchItemList();
|
||||||
updateInventory();
|
updateInventory();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let uniqueLevelCaps = {};
|
let uniqueLevelCaps = {};
|
||||||
@ -135,30 +178,110 @@ function fetchItemList() {
|
|||||||
|
|
||||||
const itemMap = {
|
const itemMap = {
|
||||||
// Generics for rivens
|
// Generics for rivens
|
||||||
"/Lotus/Weapons/Tenno/Archwing/Primary/ArchGun": { name: "Archgun" },
|
"/Lotus/Weapons/Tenno/Archwing/Primary/ArchGun": {
|
||||||
"/Lotus/Weapons/Tenno/Melee/PlayerMeleeWeapon": { name: "Melee" },
|
get name() {
|
||||||
"/Lotus/Weapons/Tenno/Pistol/LotusPistol": { name: "Pistol" },
|
return i18next.t("code.archgun");
|
||||||
"/Lotus/Weapons/Tenno/Rifle/LotusRifle": { name: "Rifle" },
|
}
|
||||||
"/Lotus/Weapons/Tenno/Shotgun/LotusShotgun": { name: "Shotgun" },
|
|
||||||
// Modular weapons
|
|
||||||
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary": { name: "Kitgun" },
|
|
||||||
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam": { name: "Kitgun" },
|
|
||||||
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryLauncher": { name: "Kitgun" },
|
|
||||||
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryShotgun": { name: "Kitgun" },
|
|
||||||
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimarySniper": { name: "Kitgun" },
|
|
||||||
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary": { name: "Kitgun" },
|
|
||||||
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam": { name: "Kitgun" },
|
|
||||||
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun": { name: "Kitgun" },
|
|
||||||
"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon": { name: "Zaw" },
|
|
||||||
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/OperatorTrainingAmpWeapon": {
|
|
||||||
name: "Mote Amp"
|
|
||||||
},
|
},
|
||||||
"/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon": { name: "Amp" },
|
"/Lotus/Weapons/Tenno/Melee/PlayerMeleeWeapon": {
|
||||||
"/Lotus/Weapons/Operator/Pistols/DrifterPistol/DrifterPistolPlayerWeapon": { name: "Sirocco" },
|
get name() {
|
||||||
"/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit": { name: "K-Drive" },
|
return i18next.t("code.melee");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/Tenno/Pistol/LotusPistol": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.pistol");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/Tenno/Rifle/LotusRifle": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.rifle");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/Tenno/Shotgun/LotusShotgun": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.shotgun");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Modular weapons
|
||||||
|
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.kitgun");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.kitgun");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryLauncher": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.kitgun");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryShotgun": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.kitgun");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimarySniper": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.kitgun");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.kitgun");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.kitgun");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.kitgun");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.zaw");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/OperatorTrainingAmpWeapon": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.moteAmp");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.amp");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Weapons/Operator/Pistols/DrifterPistol/DrifterPistolPlayerWeapon": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.sirocco");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.kDrive");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// Missing in data sources
|
// Missing in data sources
|
||||||
"/Lotus/Upgrades/Mods/Fusers/LegendaryModFuser": { name: "Legendary Core" },
|
"/Lotus/Upgrades/Mods/Fusers/LegendaryModFuser": {
|
||||||
"/Lotus/Upgrades/CosmeticEnhancers/Peculiars/CyoteMod": { name: "Traumatic Peculiar" }
|
get name() {
|
||||||
|
return i18next.t("code.legendaryCore");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/Lotus/Upgrades/CosmeticEnhancers/Peculiars/CyoteMod": {
|
||||||
|
get name() {
|
||||||
|
return i18next.t("code.traumaticPeculiar");
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
for (const [type, items] of Object.entries(data)) {
|
for (const [type, items] of Object.entries(data)) {
|
||||||
if (type == "archonCrystalUpgrades") {
|
if (type == "archonCrystalUpgrades") {
|
||||||
@ -173,7 +296,7 @@ function fetchItemList() {
|
|||||||
} else if (type != "badItems") {
|
} else if (type != "badItems") {
|
||||||
items.forEach(item => {
|
items.forEach(item => {
|
||||||
if (item.uniqueName in data.badItems) {
|
if (item.uniqueName in data.badItems) {
|
||||||
item.name += " (Imposter)";
|
item.name += " " + i18next.t("code.badItem");
|
||||||
} else if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/") {
|
} else if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/") {
|
||||||
const option = document.createElement("option");
|
const option = document.createElement("option");
|
||||||
option.setAttribute("data-key", item.uniqueName);
|
option.setAttribute("data-key", item.uniqueName);
|
||||||
@ -272,7 +395,7 @@ function updateInventory() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
a.title = "Max Rank";
|
a.title = i18next.t("code.maxRank");
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -287,12 +410,12 @@ function updateInventory() {
|
|||||||
a.href = "#";
|
a.href = "#";
|
||||||
a.onclick = function (event) {
|
a.onclick = function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const name = prompt("Enter new custom name:");
|
const name = prompt(i18next.t("code.renamePrompt"));
|
||||||
if (name !== null) {
|
if (name !== null) {
|
||||||
renameGear(category, item.ItemId.$oid, name);
|
renameGear(category, item.ItemId.$oid, name);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
a.title = "Rename";
|
a.title = i18next.t("code.rename");
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -303,7 +426,7 @@ function updateInventory() {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
disposeOfGear(category, item.ItemId.$oid);
|
disposeOfGear(category, item.ItemId.$oid);
|
||||||
};
|
};
|
||||||
a.title = "Remove";
|
a.title = i18next.t("code.remove");
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -327,11 +450,9 @@ function updateInventory() {
|
|||||||
const td = document.createElement("td");
|
const td = document.createElement("td");
|
||||||
td.textContent = itemMap[fingerprint.compat]?.name ?? fingerprint.compat;
|
td.textContent = itemMap[fingerprint.compat]?.name ?? fingerprint.compat;
|
||||||
td.textContent += " " + RivenParser.parseRiven(rivenType, fingerprint, 1).name;
|
td.textContent += " " + RivenParser.parseRiven(rivenType, fingerprint, 1).name;
|
||||||
td.innerHTML += " <span title='Number of buffs'>▲ " + fingerprint.buffs.length + "</span>";
|
td.innerHTML += ` <span title="${i18next.t("code.buffsNumber")}">▲ ${fingerprint.buffs.length}</span>`;
|
||||||
td.innerHTML +=
|
td.innerHTML += ` <span title="${i18next.t("code.cursesNumber")}">▼ ${fingerprint.curses.length}</span>`;
|
||||||
" <span title='Number of curses'>▼ " + fingerprint.curses.length + "</span>";
|
td.innerHTML += ` <span title="${i18next.t("code.rerollsNumber")}">⟳ ${parseInt(fingerprint.rerolls)}</span>`;
|
||||||
td.innerHTML +=
|
|
||||||
" <span title='Number of rerolls'>⟳ " + parseInt(fingerprint.rerolls) + "</span>";
|
|
||||||
tr.appendChild(td);
|
tr.appendChild(td);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -349,7 +470,7 @@ function updateInventory() {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
a.target = "_blank";
|
a.target = "_blank";
|
||||||
a.title = "View Stats";
|
a.title = i18next.t("code.viewStats");
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -360,7 +481,7 @@ function updateInventory() {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
disposeOfGear("Upgrades", item.ItemId.$oid);
|
disposeOfGear("Upgrades", item.ItemId.$oid);
|
||||||
};
|
};
|
||||||
a.title = "Remove";
|
a.title = i18next.t("code.remove");
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -376,7 +497,7 @@ function updateInventory() {
|
|||||||
{
|
{
|
||||||
const td = document.createElement("td");
|
const td = document.createElement("td");
|
||||||
td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType;
|
td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType;
|
||||||
td.innerHTML += " <span title='Rank'>★ " + rank + "/" + maxRank + "</span>";
|
td.innerHTML += ` <span title="${i18next.t("code.rank")}">★ 0/${maxRank}</span>`;
|
||||||
tr.appendChild(td);
|
tr.appendChild(td);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -389,7 +510,7 @@ function updateInventory() {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
setFingerprint(item.ItemType, item.ItemId, { lvl: maxRank });
|
setFingerprint(item.ItemType, item.ItemId, { lvl: maxRank });
|
||||||
};
|
};
|
||||||
a.title = "Max Rank";
|
a.title = i18next.t("code.maxRank");
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -400,7 +521,7 @@ function updateInventory() {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
disposeOfGear("Upgrades", item.ItemId.$oid);
|
disposeOfGear("Upgrades", item.ItemId.$oid);
|
||||||
};
|
};
|
||||||
a.title = "Remove";
|
a.title = i18next.t("code.remove");
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -415,9 +536,9 @@ function updateInventory() {
|
|||||||
{
|
{
|
||||||
const td = document.createElement("td");
|
const td = document.createElement("td");
|
||||||
td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType;
|
td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType;
|
||||||
td.innerHTML += " <span title='Rank'>★ 0/" + maxRank + "</span>";
|
td.innerHTML += ` <span title="${i18next.t("code.rank")}">★ 0/${maxRank}</span>`;
|
||||||
if (item.ItemCount > 1) {
|
if (item.ItemCount > 1) {
|
||||||
td.innerHTML += " <span title='Count'>🗍 " + parseInt(item.ItemCount) + "</span>";
|
td.innerHTML += ` <span title="${i18next.t("code.count")}">🗍 ${parseInt(item.ItemCount)}</span>`;
|
||||||
}
|
}
|
||||||
tr.appendChild(td);
|
tr.appendChild(td);
|
||||||
}
|
}
|
||||||
@ -431,7 +552,7 @@ function updateInventory() {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
setFingerprint(item.ItemType, item.LastAdded, { lvl: maxRank });
|
setFingerprint(item.ItemType, item.LastAdded, { lvl: maxRank });
|
||||||
};
|
};
|
||||||
a.title = "Max Rank";
|
a.title = i18next.t("code.maxRank");
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -442,7 +563,7 @@ function updateInventory() {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
disposeOfItems("Upgrades", item.ItemType, item.ItemCount);
|
disposeOfItems("Upgrades", item.ItemType, item.ItemCount);
|
||||||
};
|
};
|
||||||
a.title = "Remove";
|
a.title = i18next.t("code.remove");
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -491,7 +612,7 @@ function updateInventory() {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
doPopArchonCrystalUpgrade(upgradeType);
|
doPopArchonCrystalUpgrade(upgradeType);
|
||||||
};
|
};
|
||||||
a.title = "Remove";
|
a.title = i18next.t("code.remove");
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -570,10 +691,7 @@ function addMissingEquipment(categories) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
if (
|
if (requests.length !== 0 && window.confirm(i18next.t("code.addItemsConfirm", { count: requests.length }))) {
|
||||||
requests.length != 0 &&
|
|
||||||
window.confirm("Are you sure you want to add " + requests.length + " items to your account?")
|
|
||||||
) {
|
|
||||||
dispatchAddItemsRequestsBatch(requests);
|
dispatchAddItemsRequestsBatch(requests);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -627,7 +745,7 @@ function maxRankAllEquipment(categories) {
|
|||||||
return sendBatchGearExp(batchData);
|
return sendBatchGearExp(batchData);
|
||||||
}
|
}
|
||||||
|
|
||||||
alert("No equipment to rank up.");
|
alert(i18next.t("code.noEquipmentToRankUp"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -743,7 +861,7 @@ function doAcquireMiscItems() {
|
|||||||
}
|
}
|
||||||
])
|
])
|
||||||
}).done(function () {
|
}).done(function () {
|
||||||
alert("Successfully added.");
|
alert(i18next.t("code.succAdded"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -938,13 +1056,9 @@ function doUnlockAllFocusSchools() {
|
|||||||
await unlockFocusSchool(upgradeType);
|
await unlockFocusSchool(upgradeType);
|
||||||
}
|
}
|
||||||
if (Object.keys(missingFocusUpgrades).length == 0) {
|
if (Object.keys(missingFocusUpgrades).length == 0) {
|
||||||
alert("All focus schools are already unlocked.");
|
alert(i18next.t("code.focusAllUnlocked"));
|
||||||
} else {
|
} else {
|
||||||
alert(
|
alert(i18next.t("code.focusUnlocked", { count: Object.keys(missingFocusUpgrades).length }));
|
||||||
"Unlocked " +
|
|
||||||
Object.keys(missingFocusUpgrades).length +
|
|
||||||
" 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."
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -994,10 +1108,7 @@ function doAddAllMods() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
modsAll = Array.from(modsAll);
|
modsAll = Array.from(modsAll);
|
||||||
if (
|
if (modsAll.length != 0 && window.confirm(i18next.t("code.addModsConfirm", { count: modsAll.length }))) {
|
||||||
modsAll.length != 0 &&
|
|
||||||
window.confirm("Are you sure you want to add " + modsAll.length + " mods to your account?")
|
|
||||||
) {
|
|
||||||
$.post({
|
$.post({
|
||||||
url: "/custom/addItems?" + window.authz,
|
url: "/custom/addItems?" + window.authz,
|
||||||
contentType: "application/json",
|
contentType: "application/json",
|
||||||
@ -1071,7 +1182,7 @@ function doImport() {
|
|||||||
inventory: JSON.parse($("#import-inventory").val())
|
inventory: JSON.parse($("#import-inventory").val())
|
||||||
})
|
})
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
alert("Successfully imported.");
|
alert(i18next.t("code.succImport"));
|
||||||
updateInventory();
|
updateInventory();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -14,9 +14,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
body:not(.logged-in) .navbar-toggler,
|
body:not(.logged-in) .user-dropdown {
|
||||||
body:not(.logged-in) .nav-item.dropdown,
|
|
||||||
body:not(.logged-in) #refresh-note {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
129
static/webui/translations/de.json
Normal file
129
static/webui/translations/de.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/en.json
Normal file
129
static/webui/translations/en.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/es.json
Normal file
129
static/webui/translations/es.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/fr.json
Normal file
129
static/webui/translations/fr.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/it.json
Normal file
129
static/webui/translations/it.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/ja.json
Normal file
129
static/webui/translations/ja.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/ko.json
Normal file
129
static/webui/translations/ko.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/old_en.json
Normal file
129
static/webui/translations/old_en.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/pl.json
Normal file
129
static/webui/translations/pl.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/pt.json
Normal file
129
static/webui/translations/pt.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/ru.json
Normal file
129
static/webui/translations/ru.json
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
{
|
||||||
|
"general": {
|
||||||
|
"inventoryUpdateNote": "Примечание: изменения, внесенные здесь, отобразятся в игре только после повторной загрузки вашего инвентаря. Посещение навигации — самый простой способ этого добиться.",
|
||||||
|
"addButton": "Добавить",
|
||||||
|
"bulkActions": "Массовые действия"
|
||||||
|
},
|
||||||
|
"code": {
|
||||||
|
"nonValidAuthz": "Ваши данные больше не действительны.",
|
||||||
|
"changeNameConfirm": "Какое имя вы хотите установить для своей учетной записи?",
|
||||||
|
"deleteAccountConfirm": "Вы уверены, что хотите удалить аккаунт {{displayName}} ({{email}})? Это действие нельзя отменить.",
|
||||||
|
"archgun": "Арч-Пушка",
|
||||||
|
"melee": "Ближний бой",
|
||||||
|
"pistol": "Пистолет",
|
||||||
|
"rifle": "Винтовка",
|
||||||
|
"shotgun": "Дробовик",
|
||||||
|
"kitgun": "Китган",
|
||||||
|
"zaw": "Зо",
|
||||||
|
"moteAmp": "Пылинка",
|
||||||
|
"amp": "Усилитель",
|
||||||
|
"sirocco": "Сирокко",
|
||||||
|
"kDrive": "К-Драйв",
|
||||||
|
"legendaryCore": "Легендарное ядро",
|
||||||
|
"traumaticPeculiar": "Травмирующая Странность",
|
||||||
|
"badItem": "(Самозванец)",
|
||||||
|
"maxRank": "Максимальный ранг",
|
||||||
|
"rename": "Переименовать",
|
||||||
|
"renamePrompt": "Введите новое имя:",
|
||||||
|
"remove": "Удалить",
|
||||||
|
"addItemsConfirm": "Вы уверены, что хотите добавить {{count}} предметов на ваш аккаунт?",
|
||||||
|
"noEquipmentToRankUp": "Нет снаряжения для повышения ранга.",
|
||||||
|
"succAdded": "Успешно добавлено.",
|
||||||
|
"buffsNumber": "Количество усилений",
|
||||||
|
"cursesNumber": "Количество проклятий",
|
||||||
|
"rerollsNumber": "Количество циклов",
|
||||||
|
"viewStats": "Просмотр характеристики",
|
||||||
|
"rank": "Ранг",
|
||||||
|
"count": "Количество",
|
||||||
|
"focusAllUnlocked": "Все школы фокуса уже разблокированы.",
|
||||||
|
"focusUnlocked": "Разблокировано {{count}} новых школ фокуса! Для отображения изменений в игре потребуется обновление инвентаря. Посещение навигации — самый простой способ этого добиться.",
|
||||||
|
"addModsConfirm": "Вы уверены, что хотите добавить {{count}} модов на ваш аккаунт?",
|
||||||
|
"succImport": "Успешно импортировано."
|
||||||
|
},
|
||||||
|
"login": {
|
||||||
|
"description": "Войдите, используя учетные данные OpenWF (те же, что и в игре при подключении к этому серверу).",
|
||||||
|
"emailLabel": "Адрес электронной почты",
|
||||||
|
"passwordLabel": "Пароль",
|
||||||
|
"loginButton": "Войти"
|
||||||
|
},
|
||||||
|
"navbar": {
|
||||||
|
"logout": "Выйти",
|
||||||
|
"renameAccount": "Переименовать аккаунт",
|
||||||
|
"deleteAccount": "Удалить аккаунт",
|
||||||
|
"inventory": "Инвентарь",
|
||||||
|
"mods": "Моды",
|
||||||
|
"cheats": "Читы",
|
||||||
|
"import": "Импорт"
|
||||||
|
},
|
||||||
|
"inventory": {
|
||||||
|
"addItems": "Добавить предметы",
|
||||||
|
"suits": "Варфреймы",
|
||||||
|
"longGuns": "Основное оружие",
|
||||||
|
"pistols": "Вторичное оружие",
|
||||||
|
"melee": "Оружие ближнего боя",
|
||||||
|
"spaceSuits": "Арчвинги",
|
||||||
|
"spaceGuns": "Оружие арчвинга",
|
||||||
|
"spaceMelee": "Оружие ближнего боя арчвинга",
|
||||||
|
"mechSuits": "Некрамехи",
|
||||||
|
"sentinels": "Стражи",
|
||||||
|
"sentinelWeapons": "Оружие стражей",
|
||||||
|
"operatorAmps": "Усилители",
|
||||||
|
"hoverboards": "К-Драйвы",
|
||||||
|
"bulkAddSuits": "Добавить отсутствующие варфреймы",
|
||||||
|
"bulkAddWeapons": "Добавить отсутствующее оружие",
|
||||||
|
"bulkAddSpaceSuits": "Добавить отсутствующие арчвинги",
|
||||||
|
"bulkAddSpaceWeapons": "Добавить отсутствующее оружие арчвингов",
|
||||||
|
"bulkAddSentinels": "Добавить отсутствующих стражей",
|
||||||
|
"bulkAddSentinelWeapons": "Добавить отсутствующее оружие стражей",
|
||||||
|
"bulkRankUpSuits": "Максимальный ранг всех варфреймов",
|
||||||
|
"bulkRankUpWeapons": "Максимальный ранг всего оружия",
|
||||||
|
"bulkRankUpSpaceSuits": "Максимальный ранг всех арчвингов",
|
||||||
|
"bulkRankUpSpaceWeapons": "Максимальный ранг всего оружия арчвингов",
|
||||||
|
"bulkRankUpSentinels": "Максимальный ранг всех стражей",
|
||||||
|
"bulkRankUpSentinelWeapons": "Максимальный ранг всего оружия стражей"
|
||||||
|
},
|
||||||
|
"powersuit": {
|
||||||
|
"archonShardsLabel": "Ячейки осколков архонта",
|
||||||
|
"archonShardsDescription": "Вы можете использовать эти неограниченные ячейки для установки множества улучшений."
|
||||||
|
},
|
||||||
|
"mods": {
|
||||||
|
"addRiven": "Добавить Мод Разлома",
|
||||||
|
"fingerprint": "Отпечаток",
|
||||||
|
"fingerprintHelp": "Нужна помощь с отпечатком?",
|
||||||
|
"rivens": "Моды Разлома",
|
||||||
|
"mods": "Моды",
|
||||||
|
"bulkAddMods": "Добавить отсутствующие моды"
|
||||||
|
},
|
||||||
|
"cheats": {
|
||||||
|
"administratorRequirement": "Вы должны быть администратором для использования этой функции. Чтобы стать администратором, добавьте <code>\"<span class='displayname'></span>\"</code> в <code>administratorNames</code> в config.json.",
|
||||||
|
"skipTutorial": "Пропустить обучение",
|
||||||
|
"skipAllDialogue": "Пропустить все диалоги",
|
||||||
|
"unlockAllScans": "Разблокировать все сканирования",
|
||||||
|
"unlockAllMissions": "Разблокировать все миссии",
|
||||||
|
"unlockAllQuests": "Разблокировать все квесты",
|
||||||
|
"completeAllQuests": "Завершить все квесты",
|
||||||
|
"infiniteCredits": "Бесконечные кредиты",
|
||||||
|
"infinitePlatinum": "Бесконечный платина",
|
||||||
|
"infiniteEndo": "Бесконечное эндо",
|
||||||
|
"infiniteRegalAya": "Бесконечная Королевская Айя",
|
||||||
|
"unlockAllShipFeatures": "Разблокировать все функции корабля",
|
||||||
|
"unlockAllShipDecorations": "Разблокировать все украшения корабля",
|
||||||
|
"unlockAllFlavourItems": "Разблокировать все <abbr title=\"Наборы анимаций, глифы, палитры и т. д.\">уникальные предметы</abbr>",
|
||||||
|
"unlockAllSkins": "Разблокировать все скины",
|
||||||
|
"unlockAllCapturaScenes": "Разблокировать все сцены Каптуры",
|
||||||
|
"universalPolarityEverywhere": "Универсальная полярность везде",
|
||||||
|
"unlockDoubleCapacityPotatoesEverywhere": "Катализаторы везде",
|
||||||
|
"unlockExilusEverywhere": "Адаптеры Эксилус везде",
|
||||||
|
"unlockArcanesEverywhere": "Адаптеры для мистификаторов везде",
|
||||||
|
"noDailyStandingLimits": "Без ежедневных ограничений репутации",
|
||||||
|
"spoofMasteryRank": "Подделанный ранг мастерства (-1 для отключения)",
|
||||||
|
"saveSettings": "Сохранить настройки",
|
||||||
|
"account": "Аккаунт",
|
||||||
|
"unlockAllFocusSchools": "Разблокировать все школы фокуса",
|
||||||
|
"helminthUnlockAll": "Полностью улучшить Гельминта"
|
||||||
|
},
|
||||||
|
"import": {
|
||||||
|
"importNote": "Вы можете загрузить полный или частичный ответ инвентаря (клиентское представление) здесь. Все поддерживаемые поля <b>будут перезаписаны</b> в вашем аккаунте.",
|
||||||
|
"submit": "Отправить"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/tc.json
Normal file
129
static/webui/translations/tc.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/th.json
Normal file
129
static/webui/translations/th.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/tr.json
Normal file
129
static/webui/translations/tr.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
129
static/webui/translations/uk.json
Normal file
129
static/webui/translations/uk.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
112
static/webui/translations/update-translations.ts
Normal file
112
static/webui/translations/update-translations.ts
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
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<string, unknown>, target: Record<string, unknown>) {
|
||||||
|
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<string, unknown>, target[key] as Record<string, unknown>);
|
||||||
|
} else if (!(key in target)) {
|
||||||
|
target[key] = "";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function compareAndUpdateTranslations(
|
||||||
|
newData: Record<string, unknown>,
|
||||||
|
oldData: Record<string, unknown>,
|
||||||
|
langData: Record<string, unknown>
|
||||||
|
): 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<string, unknown>,
|
||||||
|
oldValue as Record<string, unknown>,
|
||||||
|
langData[key] as Record<string, unknown>
|
||||||
|
);
|
||||||
|
if (isSubUpdated) {
|
||||||
|
updated = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (newValue !== oldValue) {
|
||||||
|
langData[key] = newValue;
|
||||||
|
updated = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return updated;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function processTranslations() {
|
||||||
|
let enData: Record<string, unknown>;
|
||||||
|
let oldEnData: Record<string, unknown> = {};
|
||||||
|
|
||||||
|
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<string, unknown> = 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
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);
|
||||||
|
} catch (error) {
|
||||||
|
logger.error("Error during the formatting or writing of old_en.json:", error);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void processTranslations();
|
129
static/webui/translations/zh.json
Normal file
129
static/webui/translations/zh.json
Normal file
@ -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 <code>\"<span class='displayname'></span>\"</code> to <code>administratorNames</code> 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 <abbr title=\"Animation Sets, Glyphs, Plattes, etc.\">Flavor Items</abbr>",
|
||||||
|
"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 <b>will be overwritten</b> in your account.",
|
||||||
|
"submit": "Submit"
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user