Skip to content

Commit af82fee

Browse files
feat: configured app to system default language on installation
1 parent 7eaf8fd commit af82fee

File tree

2 files changed

+34
-12
lines changed

2 files changed

+34
-12
lines changed

lib/app/utils/app_settings/app_settings.dart

+12-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,18 @@ class AppSettings {
1515
await SaveTourStatus.init();
1616

1717
isDarkMode = SelectedTheme.getMode() ?? true;
18-
selectedLanguage =
19-
SelectedLanguage.getSelectedLanguage() ?? SupportedLanguage.english;
18+
19+
SupportedLanguage? userPreferredLanguage =
20+
SelectedLanguage.getSelectedLanguage();
21+
22+
if (userPreferredLanguage != null) {
23+
selectedLanguage = userPreferredLanguage;
24+
} else {
25+
// If no explicit preference, use the system language (if supported)
26+
selectedLanguage = SupportedLanguageExtension.getSystemLanguage();
27+
// Save the system language as the user's preference
28+
await SelectedLanguage.saveSelectedLanguage(selectedLanguage);
29+
}
2030
}
2131

2232
static Future saveSettings(
+22-10
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1+
import 'package:flutter/widgets.dart';
2+
13
enum SupportedLanguage {
24
english,
35
hindi,
46
marathi,
5-
french,
6-
spanish,
7-
bengali,
7+
french,
8+
spanish,
9+
bengali,
810
}
911

10-
1112
extension SupportedLanguageExtension on SupportedLanguage {
1213
String get languageCode {
1314
switch (this) {
@@ -18,11 +19,11 @@ extension SupportedLanguageExtension on SupportedLanguage {
1819
case SupportedLanguage.marathi:
1920
return 'mr';
2021
case SupportedLanguage.french:
21-
return 'fr';
22+
return 'fr';
2223
case SupportedLanguage.spanish:
23-
return 'es';
24+
return 'es';
2425
case SupportedLanguage.bengali:
25-
return 'bn';
26+
return 'bn';
2627
default:
2728
return '';
2829
}
@@ -37,13 +38,24 @@ extension SupportedLanguageExtension on SupportedLanguage {
3738
case 'mr':
3839
return SupportedLanguage.marathi;
3940
case 'fr':
40-
return SupportedLanguage.french;
41+
return SupportedLanguage.french;
4142
case 'es':
42-
return SupportedLanguage.spanish;
43+
return SupportedLanguage.spanish;
4344
case 'bn':
44-
return SupportedLanguage.bengali;
45+
return SupportedLanguage.bengali;
4546
default:
4647
return null;
4748
}
4849
}
50+
51+
static SupportedLanguage getSystemLanguage() {
52+
// Get the current system locale
53+
final String systemLocale =
54+
WidgetsBinding.instance.window.locale.languageCode;
55+
debugPrint('System Locale: $systemLocale');
56+
57+
final supportedLanguage = fromCode(systemLocale);
58+
// Return the supported language or default to English
59+
return supportedLanguage ?? SupportedLanguage.english;
60+
}
4961
}

0 commit comments

Comments
 (0)