-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
i18n_extensions.dart
230 lines (216 loc) · 6.32 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
import '../../common/enums/app_language_type.dart';
import '../../common/enums/app_theme_type.dart';
import '../../common/enums/artifact_filter_type.dart';
import '../../common/enums/character_filter_type.dart';
import '../../common/enums/element_type.dart';
import '../../common/enums/item_location_type.dart';
import '../../common/enums/sort_direction_type.dart';
import '../../common/enums/stat_type.dart';
import '../../common/enums/weapon_filter_type.dart';
import '../../common/enums/weapon_type.dart';
import '../../generated/l10n.dart';
import '../enums/item_status_type.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.english:
return english;
case AppLanguageType.spanish:
return '$spanish ($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;
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.elementaryMaster:
return elementaryMaster(value);
case StatType.energyRechargePercentage:
return energyRechargePercentage(value);
case StatType.hpPercentage:
return hpPercentage(value);
case StatType.none:
return none;
case StatType.physDmgBonus:
return physDmgBonus(value);
case StatType.physDmgPercentage:
return physDmgPercentage(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');
}
}
}