Skip to content

Commit e9f3cb0

Browse files
committed
chore: more translations
1 parent 03b0a1d commit e9f3cb0

File tree

9 files changed

+102
-54
lines changed

9 files changed

+102
-54
lines changed

lang/en/general.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,29 @@
22
"changelog": "UnderScript Change Log",
33
"changelog.loading": "Please wait",
44
"changelog.unavailable": "Unavailable at this time",
5+
"cards.owned": "Owned cards",
6+
"cards.unowned": "Unowned cards",
7+
"cards.maxed": "Maxed cards",
8+
"cards.surplus": "Surplus cards",
9+
"cards.craftable": "Craftable cards",
510
"collect": "Collect All",
611
"collect.note": "Collect all rewards",
712
"disenchant": "Smart Disenchant",
813
"message.hidden": "Message Ignored",
914
"message.removed": "$1 {{PLURAL:$1|Message|Messages}} Ignored",
1015
"deck.average": "Average gold cost",
16+
"deck.fill": [
17+
"Randomly fill deck",
18+
"CTRL: Shiny mode",
19+
"SHIFT: Non-shiny mode"
20+
],
21+
"storage.load": "Click to load ($1)",
22+
"storage.load.note": [
23+
"* Right Click to name deck",
24+
"* Shift Click to re-save deck",
25+
"* CTRL Click to erase deck"
26+
],
27+
"storage.save": "Click to save current deck",
1128
"error": "Error",
1229
"go!": "Go now!",
1330
"passive": "Passive",

lang/en/settings.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"category.chat.import": "Import",
1515
"category.chat.links": "Trusted Domains",
1616
"category.chat.ping": "Ping Me",
17+
"category.filter": "Filter",
1718
"category.friendship": "Friendship",
1819
"category.home": "Home",
1920
"category.hotkeys": "Hotkeys",
@@ -33,6 +34,23 @@
3334
"endTurn": "Disable End Turn Hotkey",
3435
"endTurn.mouse": "Disable End Turn with Space",
3536
"endTurn.keyboard": "Disable End Turn with Middle Click",
37+
"filter.collection": "Collection dropdown ",
38+
"filter.disable": "Disable filter",
39+
"filter.shiny": "Merge Shiny Cards",
40+
"filter.shiny.option": [
41+
"Never (default)",
42+
"Deck",
43+
"Always"
44+
],
45+
"filter.split": "Split Based and Token",
46+
"filter.tribe": "Tribe button",
47+
"filter.trim": "Trim filter buttons",
48+
"filter.trim.option": [
49+
"Always",
50+
"Deck",
51+
"Crafting",
52+
"Never"
53+
],
3654
"friendship": "Disable Collect All",
3755
"friendship.notification": "Disable Friendship Notification",
3856
"friendship.rank": "Display Friendship Rankings",
@@ -48,6 +66,7 @@
4866
],
4967
"import.shiny": "Prefer Shiny",
5068
"large.avatar": "Large Icon mode",
69+
"library.scrollwheel": "Disable Scrolling Collection with Mousewheel",
5170
"links": "Use Original Link Detection",
5271
"note.refresh": "Will require you to refresh the page.",
5372
"page.chat": "Chat",
@@ -58,6 +77,7 @@
5877
"ping.global": "Only open chats",
5978
"ping.on": "On",
6079
"ping.toast": "Enable ping toasts",
80+
"quest.highlight": "Disable Quest Highlight",
6181
"safelink": "Enabled",
6282
"safelink.trust": "Trust $1",
6383
"streamer": "Enable?",

src/base/library/deck/random.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import shuffle from 'src/utils/shuffle.js';
55
import style from 'src/utils/style.js';
66
import rand from 'src/utils/rand.js';
77
import * as deckLoader from 'src/utils/loadDeck.js';
8+
import { getTranslationArray } from 'src/base/underscript/translation';
89

910
const limits = {
1011
BASE: 3,
@@ -92,12 +93,10 @@ eventManager.on(':preload:Decks', () => {
9293
button.append(inner);
9394
button.click(fillDeck);
9495
eventManager.on('underscript:ready', () => {
95-
// TODO: translation
96-
button.hover(hover.show([
97-
'Randomly fill deck',
98-
'CTRL: Shiny mode',
99-
'SHIFT: Non-shiny mode',
100-
].join('<br>')), hover.hide);
96+
button.hover(hover.show(
97+
getTranslationArray('underscript.general.deck.fill')
98+
.join('<br>'),
99+
), hover.hide);
101100
});
102101
const clearDeck = $('#yourCardList > button:last');
103102
clearDeck.after(' ', button);

src/base/library/deck/storage.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import * as deckLoader from 'src/utils/loadDeck.js';
88
import compound from 'src/utils/compoundEvent.js';
99
import hasOwn from 'src/utils/hasOwn.js';
1010
import { cardName } from 'src/utils/cardHelper.js';
11+
import { translateText } from 'src/utils/translate';
12+
import { getTranslationArray } from 'src/base/underscript/translation';
13+
import Translation from 'src/structures/constants/translation';
1114

1215
// TODO: translation
1316
const setting = settings.register({
@@ -157,7 +160,8 @@ onPage('Decks', function deckStorage() {
157160
getArtifacts(id).forEach((art) => {
158161
const artifact = userArtifacts.find(({ id: artID }) => artID === art);
159162
if (artifact) {
160-
list.push(`<span class="${artifact.legendary ? 'yellow' : ''}"><img style="height: 16px;" src="images/artifacts/${artifact.image}.png" /> ${artifact.name}</span>`);
163+
const name = translateText(`artifact-name-${artifact.id}`);
164+
list.push(`<span class="${artifact.legendary ? 'yellow' : ''}"><img style="height: 16px;" src="images/artifacts/${artifact.image}.png" /> ${name}</span>`);
161165
}
162166
});
163167
return list.join(', ');
@@ -191,30 +195,28 @@ onPage('Decks', function deckStorage() {
191195
if (e.type === 'mouseenter') {
192196
const deck = getDeck(i);
193197
fixClass(!!deck);
194-
// TODO: translation
198+
const SOUL = `${Translation.Vanilla(`soul-${soul}`)}-${i + 1}`;
195199
if (deck) {
200+
const note = Translation.General('storage.note').key;
196201
text = `
197-
<div id="deckName">${localStorage.getItem(nameKey) || `${soul}-${i + 1}`}</div>
198-
<div><input id="deckNameInput" maxlength="28" style="border: 0; border-bottom: 2px solid #00617c; background: #000; width: 100%; display: none;" type="text" placeholder="${soul}-${i + 1}" value="${localStorage.getItem(nameKey) || ''}"></div>
202+
<div id="deckName">${localStorage.getItem(nameKey) || SOUL}</div>
203+
<div><input id="deckNameInput" maxlength="28" style="border: 0; border-bottom: 2px solid #00617c; background: #000; width: 100%; display: none;" type="text" placeholder="${SOUL}" value="${localStorage.getItem(nameKey) || ''}"></div>
199204
<div style="font-size: 13px;">${artifacts(i)}</div>
200-
<div>Click to load (${deck.length})</div>
205+
<div>${Translation.General('storage.load').translate(deck.length)}</div>
201206
<div style="font-size: 13px;">${cards(deck)}</div>
202207
<div style="font-style: italic; color: #b3b3b3;">
203-
* Right Click to name deck<br />
204-
* Shift Click to re-save deck<br />
205-
* CTRL Click to erase deck
208+
${getTranslationArray(note).join('<br>')}
206209
</div>
207210
`;
208211
} else {
209212
text = `
210-
<div id="name">${soul}-${i + 1}</div>
211-
<div>Click to save current deck</div>`;
213+
<div id="name">${SOUL}</div>
214+
<div>${Translation.General('storage.save')}</div>`;
212215
}
213216
}
214217
hover.show(text)(e);
215218
}
216219
fixClass(!!localStorage.getItem(deckKey))
217-
.hover(hoverButton)
218220
.on('click.script.deckStorage', (e) => {
219221
if (!localStorage.getItem(deckKey)) {
220222
saveButton();
@@ -257,6 +259,9 @@ onPage('Decks', function deckStorage() {
257259
storeInput();
258260
});
259261
});
262+
eventManager.on('underscript:ready', () => {
263+
button.hover(hoverButton);
264+
});
260265
}
261266

262267
compound('Deck:Loaded', 'Chat:Connected', loadStorage);

src/base/library/filter.js

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ import * as settings from 'src/utils/settings/index.js';
33
import { global, globalSet } from 'src/utils/global.js';
44
import style from 'src/utils/style.js';
55
import onPage from 'src/utils/onPage.js';
6-
import { translateText } from 'src/utils/translate.js';
76
import { max } from 'src/utils/cardHelper.js';
7+
import Translation from 'src/structures/constants/translation';
8+
import { getTranslationArray } from '../underscript/translation.js';
89

910
export const crafting = onPage('Crafting');
1011
export const decks = onPage('Decks');
@@ -23,47 +24,48 @@ filters.shift(); // Remove template
2324

2425
const base = {
2526
onChange: () => applyLook(),
26-
category: 'Filter',
27+
category: Translation.Setting('category.filter'),
2728
page: 'Library',
2829
default: true,
2930
};
3031

3132
const setting = settings.register({
3233
...base,
3334
default: false,
34-
// TODO: translation
35-
name: 'Disable filter',
35+
name: Translation.Setting('filter.disable'),
3636
key: 'underscript.deck.filter.disable',
3737
});
3838

3939
const splitBaseGen = settings.register({
4040
...base,
41-
// TODO: translation
42-
name: 'Split Based and Token',
41+
name: Translation.Setting('filter.split'),
4342
key: 'underscript.deck.filter.split',
4443
});
4544

4645
const tribe = settings.register({
4746
...base,
48-
// TODO: translation
49-
name: 'Tribe button',
47+
name: Translation.Setting('filter.tribe'),
5048
key: 'underscript.deck.filter.tribe',
5149
});
5250

5351
const owned = settings.register({
5452
...base,
55-
// TODO: translation
56-
name: 'Collection dropdown',
53+
name: Translation.Setting('filter.collection'),
5754
key: 'underscript.deck.filter.collection',
5855
});
5956

6057
const shiny = settings.register({
6158
...base,
62-
// TODO: translation
63-
name: 'Merge Shiny Cards',
59+
name: Translation.Setting('filter.shiny'),
6460
key: 'underscript.deck.filter.shiny',
65-
// TODO: translation
66-
options: ['Never (default)', 'Deck', 'Always'],
61+
options: () => {
62+
const { key } = Translation.Setting('filter.shiny.option');
63+
const options = getTranslationArray(key);
64+
return ['Never (default)', 'Deck', 'Always'].map((val, i) => [
65+
options[i],
66+
val,
67+
]);
68+
},
6769
default: 'Deck',
6870
});
6971

@@ -99,10 +101,12 @@ function applyLook(refresh = decks || crafting) {
99101
const allCardsElement = $('[data-i18n="[html]crafting-all-cards"]');
100102
if (setting.value() || !owned.value()) {
101103
$('#collectionType').remove();
102-
allCardsElement.toggleClass('invisible', false);
104+
allCardsElement.removeClass('invisible');
103105
} else if (!$('#collectionType').length) {
104-
allCardsElement.toggleClass('invisible', true)
105-
.after(ownSelect());
106+
eventManager.on('underscript:ready', () => {
107+
allCardsElement.addClass('invisible')
108+
.after(ownSelect());
109+
});
106110
}
107111

108112
$('#shinyInput').prop('disabled', mergeShiny());
@@ -148,19 +152,14 @@ function allTribeButton() {
148152
}
149153

150154
function ownSelect() {
151-
if (!global('translationReady', { throws: false })) {
152-
eventManager.once('translation:loaded', () => applyLook(false));
153-
return '';
154-
}
155-
// TODO: translation
156155
return $(`
157156
<select id="collectionType" onchange="applyFilters(); showPage(0);">
158-
<option value="all">${translateText('crafting-all-cards')}</option>
159-
<option value="owned">Owned cards</option>
160-
<option value="unowned">Unowned cards</option>
161-
<option value="maxed">Maxed cards</option>
162-
<option value="surplus">Surplus cards</option>
163-
<option value="craftable">Craftable cards</option>
157+
<option value="all">${Translation.Vanilla('crafting-all-cards')}</option>
158+
<option value="owned">${Translation.General('cards.owned')}</option>
159+
<option value="unowned">${Translation.General('cards.unowned')}</option>
160+
<option value="maxed">${Translation.General('cards.maxed')}</option>
161+
<option value="surplus">${Translation.General('cards.surplus')}</option>
162+
<option value="craftable">${Translation.General('cards.craftable')}</option>
164163
</select>
165164
`);
166165
}

src/base/library/hideCheckboxes.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
11
import eventManager from 'src/utils/eventManager.js';
22
import * as settings from 'src/utils/settings/index.js';
33
import style from 'src/utils/style.js';
4+
import Translation from 'src/structures/constants/translation';
45
import { crafting, decks } from './filter.js';
6+
import { getTranslationArray } from '../underscript/translation.js';
57

6-
// TODO: translation
78
const setting = settings.register({
89
key: 'underscript.library.hidebuttons',
9-
name: 'Trim filter buttons',
10-
options: ['Always', 'Deck', 'Crafting', 'Never'],
10+
name: Translation.Setting('filter.trim'),
11+
options() {
12+
const { key } = Translation.Setting('filter.trim.option');
13+
const array = getTranslationArray(key);
14+
return ['Always', 'Deck', 'Crafting', 'Never'].map(
15+
(val, i) => [array[i], val],
16+
);
17+
},
1118
page: 'Library',
12-
category: 'Filter',
19+
category: Translation.Setting('category.filter'),
1320
onChange: refresh,
1421
});
1522

src/base/library/scrollwheel.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ import eventManager from 'src/utils/eventManager.js';
22
import * as settings from 'src/utils/settings/index.js';
33
import { globalSet } from 'src/utils/global.js';
44
import onPage from 'src/utils/onPage.js';
5+
import Translation from 'src/structures/constants/translation';
56

6-
// TODO: translation
77
const setting = settings.register({
8-
name: 'Disable Scrolling Collection Pages Hotkey (mousewheel)',
8+
name: Translation.Setting('library.scrollwheel'),
99
key: 'underscript.disable.scrolling',
1010
refresh: onPage('Decks') || onPage('Crafting'),
1111
page: 'Library',
12+
category: Translation.CATEGORY_HOTKEYS,
1213
});
1314

1415
eventManager.on(':preload:Decks :preload:Crafting', function scrollwheelLoaded() {

src/base/vanilla/quest.highlight.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import onPage from 'src/utils/onPage.js';
55
import style from 'src/utils/style.js';
66
import $el from 'src/utils/elementHelper.js';
77
import { fetch } from 'src/utils/quests.js';
8+
import Translation from 'src/structures/constants/translation';
89

910
wrap(() => {
1011
const setting = settings.register({
11-
// TODO: translation
12-
name: 'Disable Quest Highlight',
12+
name: Translation.Setting('quest.highlight'),
1313
key: 'underscript.disable.questHighlight',
1414
});
1515

src/structures/constants/translation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,6 @@ export default class Translation extends Constant implements TranslationBase {
145145
static Vanilla<N extends number>(key: string, ...args: Tuple<string, N>): TranslationWithArgs<N>;
146146
static Vanilla<N extends number>(key: string, hasArgs?: string | N, ...rest: string[]): TranslationBase | TranslationWithArgs<N> {
147147
const args = typeof hasArgs === 'string' ? [hasArgs, ...rest] : rest;
148-
return new Translation(key, { args, prefix: null });
148+
return new Translation(key.toLowerCase(), { args, prefix: null });
149149
}
150150
}

0 commit comments

Comments
 (0)