Skip to content

Commit 0ca21ff

Browse files
chore: merge pull request #10
Multilanguage priyanshu
2 parents 00b74cb + 1d0057d commit 0ca21ff

9 files changed

Lines changed: 208 additions & 229 deletions

File tree

lib/core/localizations/app_localizations.dart

Lines changed: 81 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import '../providers/language_provider.dart';
33

44
class AppLocalizations {
55
final Locale locale;
6-
76
AppLocalizations(this.locale);
87

98
static AppLocalizations? of(BuildContext context) {
@@ -18,6 +17,10 @@ class AppLocalizations {
1817
switch (locale.languageCode) {
1918
case 'hi':
2019
return 'द वॉलपेपर कंपनी';
20+
case 'es':
21+
return 'La Compañía de Fondos';
22+
case 'ja':
23+
return '壁紙会社';
2124
default:
2225
return 'The Wallpaper Co.';
2326
}
@@ -27,6 +30,10 @@ class AppLocalizations {
2730
switch (locale.languageCode) {
2831
case 'hi':
2932
return 'शीर्षक या श्रेणी द्वारा वॉलपेपर खोजें...';
33+
case 'es':
34+
return 'Busca fondos por título o categoría...';
35+
case 'ja':
36+
return 'タイトルやカテゴリで壁紙を検索...';
3037
default:
3138
return 'Search wallpapers by title or category...';
3239
}
@@ -36,6 +43,10 @@ class AppLocalizations {
3643
switch (locale.languageCode) {
3744
case 'hi':
3845
return 'होम';
46+
case 'es':
47+
return 'Inicio';
48+
case 'ja':
49+
return 'ホーム';
3950
default:
4051
return 'Home';
4152
}
@@ -45,6 +56,10 @@ class AppLocalizations {
4556
switch (locale.languageCode) {
4657
case 'hi':
4758
return 'पसंदीदा';
59+
case 'es':
60+
return 'Favoritos';
61+
case 'ja':
62+
return 'お気に入り';
4863
default:
4964
return 'Favorites';
5065
}
@@ -54,6 +69,10 @@ class AppLocalizations {
5469
switch (locale.languageCode) {
5570
case 'hi':
5671
return 'सभी';
72+
case 'es':
73+
return 'Todo';
74+
case 'ja':
75+
return 'すべて';
5776
default:
5877
return 'All';
5978
}
@@ -63,6 +82,10 @@ class AppLocalizations {
6382
switch (locale.languageCode) {
6483
case 'hi':
6584
return 'प्रकृति';
85+
case 'es':
86+
return 'Naturaleza';
87+
case 'ja':
88+
return '自然';
6689
default:
6790
return 'Nature';
6891
}
@@ -72,6 +95,10 @@ class AppLocalizations {
7295
switch (locale.languageCode) {
7396
case 'hi':
7497
return 'अमूर्त';
98+
case 'es':
99+
return 'Abstracto';
100+
case 'ja':
101+
return '抽象的';
75102
default:
76103
return 'Abstract';
77104
}
@@ -81,6 +108,10 @@ class AppLocalizations {
81108
switch (locale.languageCode) {
82109
case 'hi':
83110
return 'शहरी';
111+
case 'es':
112+
return 'Urbano';
113+
case 'ja':
114+
return '都市';
84115
default:
85116
return 'Urban';
86117
}
@@ -90,6 +121,10 @@ class AppLocalizations {
90121
switch (locale.languageCode) {
91122
case 'hi':
92123
return 'न्यूनतम';
124+
case 'es':
125+
return 'Minimalista';
126+
case 'ja':
127+
return 'ミニマル';
93128
default:
94129
return 'Minimal';
95130
}
@@ -99,6 +134,10 @@ class AppLocalizations {
99134
switch (locale.languageCode) {
100135
case 'hi':
101136
return 'अंतरिक्ष';
137+
case 'es':
138+
return 'Espacio';
139+
case 'ja':
140+
return '宇宙';
102141
default:
103142
return 'Space';
104143
}
@@ -108,6 +147,10 @@ class AppLocalizations {
108147
switch (locale.languageCode) {
109148
case 'hi':
110149
return 'जानवर';
150+
case 'es':
151+
return 'Animales';
152+
case 'ja':
153+
return '動物';
111154
default:
112155
return 'Animals';
113156
}
@@ -117,6 +160,10 @@ class AppLocalizations {
117160
switch (locale.languageCode) {
118161
case 'hi':
119162
return 'कला';
163+
case 'es':
164+
return 'Arte';
165+
case 'ja':
166+
return 'アート';
120167
default:
121168
return 'Art';
122169
}
@@ -126,107 +173,77 @@ class AppLocalizations {
126173
switch (locale.languageCode) {
127174
case 'hi':
128175
return 'कारें';
176+
case 'es':
177+
return 'Coches';
178+
case 'ja':
179+
return '車';
129180
default:
130181
return 'Cars';
131182
}
132183
}
133184

134-
String get noResultsTitle {
135-
switch (locale.languageCode) {
136-
case 'hi':
137-
return 'कोई वॉलपेपर नहीं मिला';
138-
default:
139-
return 'No wallpapers found';
140-
}
141-
}
142-
143-
String noResultsMessage(String query) {
144-
switch (locale.languageCode) {
145-
case 'hi':
146-
return '"$query" के लिए कोई परिणाम नहीं';
147-
default:
148-
return 'No results for "$query"';
149-
}
150-
}
151-
152-
String get clearSearch {
153-
switch (locale.languageCode) {
154-
case 'hi':
155-
return 'खोज साफ़ करें';
156-
default:
157-
return 'Clear Search';
158-
}
159-
}
160-
161185
String get download {
162186
switch (locale.languageCode) {
163187
case 'hi':
164188
return 'डाउनलोड';
189+
case 'es':
190+
return 'Descargar';
191+
case 'ja':
192+
return 'ダウンロード';
165193
default:
166194
return 'Download';
167195
}
168196
}
169197

170-
String get setWallpaper {
171-
switch (locale.languageCode) {
172-
case 'hi':
173-
return 'वॉलपेपर सेट करें';
174-
default:
175-
return 'Set Wallpaper';
176-
}
177-
}
178-
179198
String get share {
180199
switch (locale.languageCode) {
181200
case 'hi':
182201
return 'साझा करें';
202+
case 'es':
203+
return 'Compartir';
204+
case 'ja':
205+
return '共有する';
183206
default:
184207
return 'Share';
185208
}
186209
}
187210

188-
String get loading {
189-
switch (locale.languageCode) {
190-
case 'hi':
191-
return 'लोड हो रहा है...';
192-
default:
193-
return 'Loading...';
194-
}
195-
}
196-
197-
String get error {
198-
switch (locale.languageCode) {
199-
case 'hi':
200-
return 'त्रुटि';
201-
default:
202-
return 'Error';
203-
}
204-
}
205-
206-
String get retry {
211+
String get clearSearch {
207212
switch (locale.languageCode) {
208213
case 'hi':
209-
return 'पुनः प्रयास करें';
214+
return 'खोज साफ़ करें';
215+
case 'es':
216+
return 'Borrar búsqueda';
217+
case 'ja':
218+
return '検索をクリア';
210219
default:
211-
return 'Retry';
220+
return 'Clear Search';
212221
}
213222
}
214223

215-
String get noFavorites {
224+
String get noResultsTitle {
216225
switch (locale.languageCode) {
217226
case 'hi':
218-
return 'अभी तक कोई पसंदीदा नहीं';
227+
return 'कोई वॉलपेपर नहीं मिला';
228+
case 'es':
229+
return 'No se encontraron fondos';
230+
case 'ja':
231+
return '壁紙が見つかりません';
219232
default:
220-
return 'No favorites yet';
233+
return 'No wallpapers found';
221234
}
222235
}
223236

224-
String get noFavoritesMessage {
237+
String noResultsMessage(String query) {
225238
switch (locale.languageCode) {
226239
case 'hi':
227-
return 'यहाँ देखने के लिए कुछ वॉलपेपर को अपने पसंदीदा में जोड़ें';
240+
return '"$query" के लिए कोई परिणाम नहीं';
241+
case 'es':
242+
return 'Sin resultados para "$query"';
243+
case 'ja':
244+
return '"$query" の結果はありません';
228245
default:
229-
return 'Add some wallpapers to your favorites to see them here';
246+
return 'No results for "$query"';
230247
}
231248
}
232249
}

lib/core/providers/language_provider.dart

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,50 @@ class LanguageProvider extends ChangeNotifier {
77

88
Locale get currentLocale => _currentLocale;
99

10+
static const List<Locale> supportedLocales = [
11+
Locale('en'),
12+
Locale('hi'),
13+
Locale('es'),
14+
Locale('ja'),
15+
];
16+
1017
LanguageProvider() {
1118
_loadLanguagePreference();
1219
}
1320

1421
void setLanguage(Locale locale) {
1522
if (_currentLocale == locale) return;
16-
1723
_currentLocale = locale;
1824
_saveLanguagePreference();
1925
notifyListeners();
2026
}
2127

2228
void toggleLanguage() {
29+
// Cycle: en → hi → es → ja → en
2330
if (_currentLocale.languageCode == 'en') {
2431
setLanguage(const Locale('hi'));
32+
} else if (_currentLocale.languageCode == 'hi') {
33+
setLanguage(const Locale('es'));
34+
} else if (_currentLocale.languageCode == 'es') {
35+
setLanguage(const Locale('ja'));
2536
} else {
2637
setLanguage(const Locale('en'));
2738
}
2839
}
2940

30-
bool get isHindi => _currentLocale.languageCode == 'hi';
3141
bool get isEnglish => _currentLocale.languageCode == 'en';
42+
bool get isHindi => _currentLocale.languageCode == 'hi';
43+
bool get isSpanish => _currentLocale.languageCode == 'es';
44+
bool get isJapanese => _currentLocale.languageCode == 'ja';
3245

3346
String get currentLanguageName {
3447
switch (_currentLocale.languageCode) {
3548
case 'hi':
3649
return 'हिंदी';
37-
case 'en':
50+
case 'es':
51+
return 'Español';
52+
case 'ja':
53+
return '日本語';
3854
default:
3955
return 'English';
4056
}
@@ -43,8 +59,8 @@ class LanguageProvider extends ChangeNotifier {
4359
Future<void> _loadLanguagePreference() async {
4460
try {
4561
final prefs = await SharedPreferences.getInstance();
46-
final languageCode = prefs.getString(_languagePreferenceKey) ?? 'en';
47-
_currentLocale = Locale(languageCode);
62+
final code = prefs.getString(_languagePreferenceKey) ?? 'en';
63+
_currentLocale = Locale(code);
4864
notifyListeners();
4965
} catch (e) {
5066
debugPrint('Error loading language preference: $e');
@@ -62,6 +78,4 @@ class LanguageProvider extends ChangeNotifier {
6278
debugPrint('Error saving language preference: $e');
6379
}
6480
}
65-
66-
static const List<Locale> supportedLocales = [Locale('en'), Locale('hi')];
6781
}

0 commit comments

Comments
 (0)