Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 81 additions & 64 deletions lib/core/localizations/app_localizations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import '../providers/language_provider.dart';

class AppLocalizations {
final Locale locale;

AppLocalizations(this.locale);

static AppLocalizations? of(BuildContext context) {
Expand All @@ -18,6 +17,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'द वॉलपेपर कंपनी';
case 'es':
return 'La Compañía de Fondos';
case 'ja':
return '壁紙会社';
default:
return 'The Wallpaper Co.';
}
Expand All @@ -27,6 +30,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'शीर्षक या श्रेणी द्वारा वॉलपेपर खोजें...';
case 'es':
return 'Busca fondos por título o categoría...';
case 'ja':
return 'タイトルやカテゴリで壁紙を検索...';
default:
return 'Search wallpapers by title or category...';
}
Expand All @@ -36,6 +43,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'होम';
case 'es':
return 'Inicio';
case 'ja':
return 'ホーム';
default:
return 'Home';
}
Expand All @@ -45,6 +56,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'पसंदीदा';
case 'es':
return 'Favoritos';
case 'ja':
return 'お気に入り';
default:
return 'Favorites';
}
Expand All @@ -54,6 +69,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'सभी';
case 'es':
return 'Todo';
case 'ja':
return 'すべて';
default:
return 'All';
}
Expand All @@ -63,6 +82,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'प्रकृति';
case 'es':
return 'Naturaleza';
case 'ja':
return '自然';
default:
return 'Nature';
}
Expand All @@ -72,6 +95,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'अमूर्त';
case 'es':
return 'Abstracto';
case 'ja':
return '抽象的';
default:
return 'Abstract';
}
Expand All @@ -81,6 +108,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'शहरी';
case 'es':
return 'Urbano';
case 'ja':
return '都市';
default:
return 'Urban';
}
Expand All @@ -90,6 +121,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'न्यूनतम';
case 'es':
return 'Minimalista';
case 'ja':
return 'ミニマル';
default:
return 'Minimal';
}
Expand All @@ -99,6 +134,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'अंतरिक्ष';
case 'es':
return 'Espacio';
case 'ja':
return '宇宙';
default:
return 'Space';
}
Expand All @@ -108,6 +147,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'जानवर';
case 'es':
return 'Animales';
case 'ja':
return '動物';
default:
return 'Animals';
}
Expand All @@ -117,6 +160,10 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'कला';
case 'es':
return 'Arte';
case 'ja':
return 'アート';
default:
return 'Art';
}
Expand All @@ -126,107 +173,77 @@ class AppLocalizations {
switch (locale.languageCode) {
case 'hi':
return 'कारें';
case 'es':
return 'Coches';
case 'ja':
return '車';
default:
return 'Cars';
}
}

String get noResultsTitle {
switch (locale.languageCode) {
case 'hi':
return 'कोई वॉलपेपर नहीं मिला';
default:
return 'No wallpapers found';
}
}

String noResultsMessage(String query) {
switch (locale.languageCode) {
case 'hi':
return '"$query" के लिए कोई परिणाम नहीं';
default:
return 'No results for "$query"';
}
}

String get clearSearch {
switch (locale.languageCode) {
case 'hi':
return 'खोज साफ़ करें';
default:
return 'Clear Search';
}
}

String get download {
switch (locale.languageCode) {
case 'hi':
return 'डाउनलोड';
case 'es':
return 'Descargar';
case 'ja':
return 'ダウンロード';
default:
return 'Download';
}
}

String get setWallpaper {
switch (locale.languageCode) {
case 'hi':
return 'वॉलपेपर सेट करें';
default:
return 'Set Wallpaper';
}
}

String get share {
switch (locale.languageCode) {
case 'hi':
return 'साझा करें';
case 'es':
return 'Compartir';
case 'ja':
return '共有する';
default:
return 'Share';
}
}

String get loading {
switch (locale.languageCode) {
case 'hi':
return 'लोड हो रहा है...';
default:
return 'Loading...';
}
}

String get error {
switch (locale.languageCode) {
case 'hi':
return 'त्रुटि';
default:
return 'Error';
}
}

String get retry {
String get clearSearch {
switch (locale.languageCode) {
case 'hi':
return 'पुनः प्रयास करें';
return 'खोज साफ़ करें';
case 'es':
return 'Borrar búsqueda';
case 'ja':
return '検索をクリア';
default:
return 'Retry';
return 'Clear Search';
}
}

String get noFavorites {
String get noResultsTitle {
switch (locale.languageCode) {
case 'hi':
return 'अभी तक कोई पसंदीदा नहीं';
return 'कोई वॉलपेपर नहीं मिला';
case 'es':
return 'No se encontraron fondos';
case 'ja':
return '壁紙が見つかりません';
default:
return 'No favorites yet';
return 'No wallpapers found';
}
}

String get noFavoritesMessage {
String noResultsMessage(String query) {
switch (locale.languageCode) {
case 'hi':
return 'यहाँ देखने के लिए कुछ वॉलपेपर को अपने पसंदीदा में जोड़ें';
return '"$query" के लिए कोई परिणाम नहीं';
case 'es':
return 'Sin resultados para "$query"';
case 'ja':
return '"$query" の結果はありません';
default:
return 'Add some wallpapers to your favorites to see them here';
return 'No results for "$query"';
}
}
}
Expand Down
28 changes: 21 additions & 7 deletions lib/core/providers/language_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,34 +7,50 @@ class LanguageProvider extends ChangeNotifier {

Locale get currentLocale => _currentLocale;

static const List<Locale> supportedLocales = [
Locale('en'),
Locale('hi'),
Locale('es'),
Locale('ja'),
];

LanguageProvider() {
_loadLanguagePreference();
}

void setLanguage(Locale locale) {
if (_currentLocale == locale) return;

_currentLocale = locale;
_saveLanguagePreference();
notifyListeners();
}

void toggleLanguage() {
// Cycle: en → hi → es → ja → en
if (_currentLocale.languageCode == 'en') {
setLanguage(const Locale('hi'));
} else if (_currentLocale.languageCode == 'hi') {
setLanguage(const Locale('es'));
} else if (_currentLocale.languageCode == 'es') {
setLanguage(const Locale('ja'));
} else {
setLanguage(const Locale('en'));
}
}

bool get isHindi => _currentLocale.languageCode == 'hi';
bool get isEnglish => _currentLocale.languageCode == 'en';
bool get isHindi => _currentLocale.languageCode == 'hi';
bool get isSpanish => _currentLocale.languageCode == 'es';
bool get isJapanese => _currentLocale.languageCode == 'ja';

String get currentLanguageName {
switch (_currentLocale.languageCode) {
case 'hi':
return 'हिंदी';
case 'en':
case 'es':
return 'Español';
case 'ja':
return '日本語';
default:
return 'English';
}
Expand All @@ -43,8 +59,8 @@ class LanguageProvider extends ChangeNotifier {
Future<void> _loadLanguagePreference() async {
try {
final prefs = await SharedPreferences.getInstance();
final languageCode = prefs.getString(_languagePreferenceKey) ?? 'en';
_currentLocale = Locale(languageCode);
final code = prefs.getString(_languagePreferenceKey) ?? 'en';
_currentLocale = Locale(code);
notifyListeners();
} catch (e) {
debugPrint('Error loading language preference: $e');
Expand All @@ -62,6 +78,4 @@ class LanguageProvider extends ChangeNotifier {
debugPrint('Error saving language preference: $e');
}
}

static const List<Locale> supportedLocales = [Locale('en'), Locale('hi')];
}
Loading
Loading