@@ -24,16 +24,39 @@ class App extends StatelessWidget {
2424 Widget build (BuildContext context) {
2525 final themeProvider = Provider .of <ThemeProvider >(context);
2626
27- var language = const Locale (
28- 'th' ,
29- ) ; //<-- You can change language here manually
27+ // If you want to override it manually, do it here (or leave as null to use system):
28+ // final Locale? manualLocale = const Locale('ru'); // ← override example
29+ final Locale ? manualLocale = null ; // ← use system by default
3030
3131 return MaterialApp (
3232 debugShowCheckedModeBanner: false ,
3333 title: 'VPN Client' ,
3434 theme: lightTheme,
3535 darkTheme: darkTheme,
36- locale: language,
36+ locale: manualLocale,
37+ localeResolutionCallback: (locale, supportedLocales) {
38+ if (locale == null ) return const Locale ('en' );
39+
40+ // Check for exact match
41+ for (var supportedLocale in supportedLocales) {
42+ if (supportedLocale.languageCode == locale.languageCode &&
43+ (supportedLocale.countryCode == null ||
44+ supportedLocale.countryCode == locale.countryCode)) {
45+ return supportedLocale;
46+ }
47+ }
48+
49+ // If Chinese variants are not supported, fallback to zh
50+ if (locale.languageCode == 'zh' ) {
51+ return supportedLocales.contains (const Locale ('zh' ))
52+ ? const Locale ('zh' )
53+ : const Locale ('en' );
54+ }
55+
56+ // Fallback to 'en' if not found
57+ return const Locale ('en' );
58+ },
59+
3760 themeMode: themeProvider.themeMode,
3861 home: const MainScreen (),
3962
@@ -43,7 +66,12 @@ class App extends StatelessWidget {
4366 GlobalWidgetsLocalizations .delegate,
4467 GlobalCupertinoLocalizations .delegate,
4568 ],
46- supportedLocales: const [Locale ('en' ), Locale ('ru' ), Locale ('th' )],
69+ supportedLocales: const [
70+ Locale ('en' ),
71+ Locale ('ru' ),
72+ Locale ('th' ),
73+ Locale ('zh' ),
74+ ],
4775 );
4876 }
4977}
0 commit comments