diff --git a/lib/app/utils/app_settings/app_settings.dart b/lib/app/utils/app_settings/app_settings.dart index ce37244f..6c27b838 100644 --- a/lib/app/utils/app_settings/app_settings.dart +++ b/lib/app/utils/app_settings/app_settings.dart @@ -15,8 +15,18 @@ class AppSettings { await SaveTourStatus.init(); isDarkMode = SelectedTheme.getMode() ?? true; - selectedLanguage = - SelectedLanguage.getSelectedLanguage() ?? SupportedLanguage.english; + + SupportedLanguage? userPreferredLanguage = + SelectedLanguage.getSelectedLanguage(); + + if (userPreferredLanguage != null) { + selectedLanguage = userPreferredLanguage; + } else { + // If no explicit preference, use the system language (if supported) + selectedLanguage = SupportedLanguageExtension.getSystemLanguage(); + // Save the system language as the user's preference + await SelectedLanguage.saveSelectedLanguage(selectedLanguage); + } } static Future saveSettings( diff --git a/lib/app/utils/language/supported_language.dart b/lib/app/utils/language/supported_language.dart index 1ec5e84a..404f9553 100644 --- a/lib/app/utils/language/supported_language.dart +++ b/lib/app/utils/language/supported_language.dart @@ -1,13 +1,14 @@ +import 'package:flutter/widgets.dart'; + enum SupportedLanguage { english, hindi, marathi, - french, - spanish, - bengali, + french, + spanish, + bengali, } - extension SupportedLanguageExtension on SupportedLanguage { String get languageCode { switch (this) { @@ -18,11 +19,11 @@ extension SupportedLanguageExtension on SupportedLanguage { case SupportedLanguage.marathi: return 'mr'; case SupportedLanguage.french: - return 'fr'; + return 'fr'; case SupportedLanguage.spanish: - return 'es'; + return 'es'; case SupportedLanguage.bengali: - return 'bn'; + return 'bn'; default: return ''; } @@ -37,13 +38,24 @@ extension SupportedLanguageExtension on SupportedLanguage { case 'mr': return SupportedLanguage.marathi; case 'fr': - return SupportedLanguage.french; + return SupportedLanguage.french; case 'es': - return SupportedLanguage.spanish; + return SupportedLanguage.spanish; case 'bn': - return SupportedLanguage.bengali; + return SupportedLanguage.bengali; default: return null; } } + + static SupportedLanguage getSystemLanguage() { + // Get the current system locale + final String systemLocale = + WidgetsBinding.instance.window.locale.languageCode; + debugPrint('System Locale: $systemLocale'); + + final supportedLanguage = fromCode(systemLocale); + // Return the supported language or default to English + return supportedLanguage ?? SupportedLanguage.english; + } }