|
...
|
...
|
@@ -2,47 +2,47 @@ import 'package:flutter/widgets.dart'; |
|
|
|
|
|
|
|
Locale resolveAppLocale(
|
|
|
|
Locale? deviceLocale, Iterable<Locale> supportedLocales) {
|
|
|
|
// if (deviceLocale == null) return const Locale('en');
|
|
|
|
//
|
|
|
|
// for (final locale in supportedLocales) {
|
|
|
|
// if (locale == deviceLocale) {
|
|
|
|
// return locale;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// if (deviceLocale.languageCode == 'zh') {
|
|
|
|
// final script = deviceLocale.scriptCode?.toLowerCase();
|
|
|
|
// final country = deviceLocale.countryCode?.toUpperCase();
|
|
|
|
// final isHant = script == 'hant' ||
|
|
|
|
// country == 'TW' ||
|
|
|
|
// country == 'HK' ||
|
|
|
|
// country == 'MO';
|
|
|
|
//
|
|
|
|
// return supportedLocales.firstWhere(
|
|
|
|
// (locale) =>
|
|
|
|
// locale.languageCode == 'zh' &&
|
|
|
|
// locale.scriptCode == (isHant ? 'Hant' : 'Hans'),
|
|
|
|
// orElse: () => Locale.fromSubtags(
|
|
|
|
// languageCode: 'zh',
|
|
|
|
// scriptCode: isHant ? 'Hant' : 'Hans',
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// if (deviceLocale.countryCode != null) {
|
|
|
|
// for (final locale in supportedLocales) {
|
|
|
|
// if (locale.languageCode == deviceLocale.languageCode &&
|
|
|
|
// locale.countryCode == deviceLocale.countryCode) {
|
|
|
|
// return locale;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// for (final locale in supportedLocales) {
|
|
|
|
// if (locale.languageCode == deviceLocale.languageCode) {
|
|
|
|
// return locale;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
if (deviceLocale == null) return const Locale('en');
|
|
|
|
|
|
|
|
for (final locale in supportedLocales) {
|
|
|
|
if (locale == deviceLocale) {
|
|
|
|
return locale;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (deviceLocale.languageCode == 'zh') {
|
|
|
|
final script = deviceLocale.scriptCode?.toLowerCase();
|
|
|
|
final country = deviceLocale.countryCode?.toUpperCase();
|
|
|
|
final isHant = script == 'hant' ||
|
|
|
|
country == 'TW' ||
|
|
|
|
country == 'HK' ||
|
|
|
|
country == 'MO';
|
|
|
|
|
|
|
|
return supportedLocales.firstWhere(
|
|
|
|
(locale) =>
|
|
|
|
locale.languageCode == 'zh' &&
|
|
|
|
locale.scriptCode == (isHant ? 'Hant' : 'Hans'),
|
|
|
|
orElse: () => Locale.fromSubtags(
|
|
|
|
languageCode: 'zh',
|
|
|
|
scriptCode: isHant ? 'Hant' : 'Hans',
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (deviceLocale.countryCode != null) {
|
|
|
|
for (final locale in supportedLocales) {
|
|
|
|
if (locale.languageCode == deviceLocale.languageCode &&
|
|
|
|
locale.countryCode == deviceLocale.countryCode) {
|
|
|
|
return locale;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (final locale in supportedLocales) {
|
|
|
|
if (locale.languageCode == deviceLocale.languageCode) {
|
|
|
|
return locale;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return const Locale('en');
|
|
|
|
} |
...
|
...
|
|