-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
i18n_extensions.dart
435 lines (411 loc) · 12.5 KB
/
i18n_extensions.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
import '../../../domain/enums/enums.dart';
import '../../../generated/l10n.dart';
extension I18nExtensions on S {
String translateAppThemeType(AppThemeType theme) {
switch (theme) {
case AppThemeType.dark:
return dark;
case AppThemeType.light:
return light;
default:
throw Exception('The provided app theme = $theme is not valid');
}
}
String translateAppLanguageType(AppLanguageType lang) {
switch (lang) {
case AppLanguageType.french:
case AppLanguageType.english:
return english;
case AppLanguageType.spanish:
return '$spanish ($partial)';
case AppLanguageType.russian:
return '$russian ($partial)';
case AppLanguageType.simplifiedChinese:
return '$simplifiedChinese ($partial)';
case AppLanguageType.portuguese:
return '$portuguese ($partial)';
default:
throw Exception('The provided app lang = $lang is not valid');
}
}
String translateWeaponType(WeaponType type) {
switch (type) {
case WeaponType.bow:
return bow;
case WeaponType.catalyst:
return catalyst;
case WeaponType.claymore:
return claymore;
case WeaponType.polearm:
return polearm;
case WeaponType.sword:
return sword;
default:
throw Exception('The provided weapon type = $type is not valid');
}
}
String translateItemLocationType(ItemLocationType type) {
switch (type) {
case ItemLocationType.na:
return 'N/A';
case ItemLocationType.gacha:
return gacha;
case ItemLocationType.crafting:
return crafting;
case ItemLocationType.starglitterExchange:
return starglitterExchange;
case ItemLocationType.chest:
return chest;
case ItemLocationType.bpBounty:
return bpBounty;
case ItemLocationType.quest:
return quest;
case ItemLocationType.all:
return all;
default:
throw Exception('The provided location type = $type is not valid');
}
}
String translateStatTypeWithoutValue(
StatType type, {
bool removeExtraSigns = false,
}) {
final translated = translateStatType(type, 0);
final value = translated.replaceFirst('0.0', '').trim();
if (removeExtraSigns) {
return value.replaceAll('%', '').trim();
}
return value;
}
String translateStatType(StatType type, double value) {
switch (type) {
case StatType.all:
return all;
case StatType.atk:
return atk(value);
case StatType.atkPercentage:
return atkPercentage(value);
case StatType.critAtk:
return critAtk(value);
case StatType.critRate:
return critRate(value);
case StatType.critDmgPercentage:
return critDmgPercentage(value);
case StatType.critRatePercentage:
return critRatePercentage(value);
case StatType.defPercentage:
return defPercentage(value);
case StatType.elementaryMastery:
return elementaryMastery(value);
case StatType.energyRechargePercentage:
return energyRechargePercentage(value);
case StatType.hpPercentage:
return hpPercentage(value);
case StatType.none:
return none;
case StatType.physDmgBonusPercentage:
return physDmgBonus(value);
case StatType.physDmgPercentage:
return physDmgPercentage(value);
case StatType.hp:
return hp(value);
case StatType.electroDmgBonusPercentage:
return xDmgBonusPercentage(value, translateElementType(ElementType.electro));
case StatType.cryoDmgBonusPercentage:
return xDmgBonusPercentage(value, translateElementType(ElementType.cryo));
case StatType.pyroDmgBonusPercentage:
return xDmgBonusPercentage(value, translateElementType(ElementType.pyro));
case StatType.hydroDmgBonusPercentage:
return xDmgBonusPercentage(value, translateElementType(ElementType.hydro));
case StatType.geoDmgBonusPercentage:
return xDmgBonusPercentage(value, translateElementType(ElementType.geo));
case StatType.anemoDmgBonusPercentage:
return xDmgBonusPercentage(value, translateElementType(ElementType.anemo));
case StatType.healingBonusPercentage:
return healingBonusPercentage(value);
case StatType.def:
return def(value);
default:
throw Exception('The provided stat type = $type is not valid');
}
}
String translateDays(List<int> days) {
return days.map((e) => translateDay(e)).join(', ');
}
String translateDay(int day) {
switch (day) {
case 1:
return monday;
case 2:
return tuesday;
case 3:
return wednesday;
case 4:
return thursday;
case 5:
return friday;
case 6:
return saturday;
case 7:
return sunday;
default:
throw Exception('Invalid day = $day');
}
}
String translateElementType(ElementType type) {
switch (type) {
case ElementType.anemo:
return anemo;
case ElementType.cryo:
return cryo;
case ElementType.dendro:
return dendro;
case ElementType.electro:
return electro;
case ElementType.geo:
return geo;
case ElementType.hydro:
return hydro;
case ElementType.pyro:
return pyro;
default:
throw Exception('Invalid element type = $type');
}
}
String translateSortDirectionType(SortDirectionType type) {
switch (type) {
case SortDirectionType.asc:
return asc;
case SortDirectionType.desc:
return desc;
default:
throw Exception('Invalid sort direction type = $type');
}
}
String translateReleasedUnreleasedType(ItemStatusType type) {
switch (type) {
case ItemStatusType.all:
return all;
case ItemStatusType.released:
return released;
case ItemStatusType.comingSoon:
return comingSoon;
case ItemStatusType.newItem:
return brandNew;
default:
throw Exception('Invalid released-unreleased type = $type');
}
}
String translateCharacterFilterType(CharacterFilterType type) {
switch (type) {
case CharacterFilterType.name:
return name;
case CharacterFilterType.rarity:
return rarity;
default:
throw Exception('Invalid character filter type = $type');
}
}
String translateWeaponFilterType(WeaponFilterType type) {
switch (type) {
case WeaponFilterType.atk:
return translateStatTypeWithoutValue(StatType.atk);
case WeaponFilterType.name:
return name;
case WeaponFilterType.rarity:
return rarity;
case WeaponFilterType.subStat:
return subStat;
default:
throw Exception('Invalid weapon filter type = $type');
}
}
String translateArtifactFilterType(ArtifactFilterType type) {
switch (type) {
case ArtifactFilterType.name:
return name;
case ArtifactFilterType.rarity:
return rarity;
default:
throw Exception('Invalid artifact filter type = $type');
}
}
String translateCharacterType(CharacterRoleType type) {
switch (type) {
case CharacterRoleType.mainDps:
return mainDps;
case CharacterRoleType.supportDps:
return supportDps;
case CharacterRoleType.utility:
return utility;
case CharacterRoleType.na:
return na;
case CharacterRoleType.all:
return all;
default:
throw Exception('Invalid character type = $type');
}
}
String translateCharacterSkillType(CharacterSkillType type) {
switch (type) {
case CharacterSkillType.normalAttack:
return normalAttack;
case CharacterSkillType.elementalSkill:
return elementalSkill;
case CharacterSkillType.elementalBurst:
return elementalBurst;
case CharacterSkillType.others:
return others;
default:
throw Exception('Invalid character skill type = $type');
}
}
String translateCharacterSkillAbilityType(CharacterSkillAbilityType type) {
switch (type) {
case CharacterSkillAbilityType.normalAttack:
return normalAttack;
case CharacterSkillAbilityType.chargedAttack:
return chargedAttack;
case CharacterSkillAbilityType.plungingAttack:
return plungingAttack;
case CharacterSkillAbilityType.hold:
return hold;
case CharacterSkillAbilityType.holdShort:
return '$hold ($short)';
case CharacterSkillAbilityType.press:
return press;
case CharacterSkillAbilityType.elementalAbsorption:
return elementalAbsorption;
default:
throw Exception('Invalid character skill ability type = $type');
}
}
String translateRegionType(RegionType type) {
switch (type) {
case RegionType.anotherWorld:
return anotherWorld;
case RegionType.inazuma:
return inazuma;
case RegionType.mondstadt:
return mondstadt;
case RegionType.liyue:
return liyue;
case RegionType.snezhnaya:
return snezhnaya;
case RegionType.fontaine:
return fontaine;
case RegionType.natlan:
return natlan;
case RegionType.sumeru:
return sumeru;
default:
throw Exception('Invalid region type = $type');
}
}
String translateAscensionSummaryType(AscensionMaterialSummaryType type) {
switch (type) {
case AscensionMaterialSummaryType.common:
return common;
case AscensionMaterialSummaryType.local:
return localSpecialities;
case AscensionMaterialSummaryType.worldBoss:
return boss;
case AscensionMaterialSummaryType.day:
return day;
case AscensionMaterialSummaryType.currency:
return '$currency ($approximate)';
case AscensionMaterialSummaryType.others:
return others;
case AscensionMaterialSummaryType.exp:
return '$experience ($approximate)';
default:
throw Exception('Invalid ascension material type = $type');
}
}
String translateServerResetTimeType(AppServerResetTimeType type) {
switch (type) {
case AppServerResetTimeType.northAmerica:
return northAmerica;
case AppServerResetTimeType.europe:
return europe;
case AppServerResetTimeType.asia:
return asia;
default:
throw Exception('Invalid server reset time type = $type');
}
}
String translateMaterialFilterType(MaterialFilterType type) {
switch (type) {
case MaterialFilterType.name:
return name;
case MaterialFilterType.rarity:
return rarity;
case MaterialFilterType.grouped:
return grouped;
default:
throw Exception('Invalid material filter type = $type');
}
}
String translateMaterialType(MaterialType type) {
switch (type) {
case MaterialType.all:
return all;
case MaterialType.common:
return common;
case MaterialType.elementalStone:
return elementalStone;
case MaterialType.jewels:
return jewel;
case MaterialType.local:
return local;
case MaterialType.talents:
return talent;
case MaterialType.weapon:
case MaterialType.weaponPrimary:
return weapon;
case MaterialType.currency:
return currency;
case MaterialType.others:
return others;
case MaterialType.ingredient:
return ingredient;
case MaterialType.expWeapon:
case MaterialType.expCharacter:
return experience;
default:
throw Exception('Invalid material type = $type');
}
}
String translateMonsterType(MonsterType type) {
switch (type) {
case MonsterType.all:
return all;
case MonsterType.abyssOrder:
return abyssOrder;
case MonsterType.elementalLifeForm:
return elementalLifeForm;
case MonsterType.human:
return human;
case MonsterType.magicalBeast:
return magicalBeast;
case MonsterType.boss:
return boss;
case MonsterType.hilichurl:
return hilichurl;
case MonsterType.fatui:
return fatui;
case MonsterType.automaton:
return automaton;
default:
throw Exception('Invalid monster type = $type');
}
}
String translateMonsterFilterType(MonsterFilterType type) {
switch (type) {
case MonsterFilterType.name:
return name;
default:
throw Exception('Invalid monster filter type = $type');
}
}
}