feat(frontend): add multi-language support (en, zh-Hans, zh-Hant, ja)
This commit is contained in:
@@ -13,11 +13,13 @@ class SettingsProvider with ChangeNotifier {
|
||||
Color _themeColor = Colors.blue;
|
||||
ThemeMode _themeMode = ThemeMode.system;
|
||||
bool _livePreviewThumbnailsEnabled = false;
|
||||
Locale? _locale;
|
||||
|
||||
String get baseUrl => _baseUrl;
|
||||
Color get themeColor => _themeColor;
|
||||
ThemeMode get themeMode => _themeMode;
|
||||
bool get livePreviewThumbnailsEnabled => _livePreviewThumbnailsEnabled;
|
||||
Locale? get locale => _locale;
|
||||
|
||||
SettingsProvider() {
|
||||
_loadSettings();
|
||||
@@ -36,6 +38,41 @@ class SettingsProvider with ChangeNotifier {
|
||||
}
|
||||
_livePreviewThumbnailsEnabled =
|
||||
prefs.getBool('livePreviewThumbnailsEnabled') ?? false;
|
||||
|
||||
final languageCode = prefs.getString('languageCode');
|
||||
final scriptCode = prefs.getString('scriptCode');
|
||||
final countryCode = prefs.getString('countryCode');
|
||||
if (languageCode != null) {
|
||||
_locale = Locale.fromSubtags(
|
||||
languageCode: languageCode,
|
||||
scriptCode: scriptCode,
|
||||
countryCode: countryCode,
|
||||
);
|
||||
}
|
||||
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void setLocale(Locale? newLocale) async {
|
||||
_locale = newLocale;
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
if (newLocale == null) {
|
||||
await prefs.remove('languageCode');
|
||||
await prefs.remove('scriptCode');
|
||||
await prefs.remove('countryCode');
|
||||
} else {
|
||||
await prefs.setString('languageCode', newLocale.languageCode);
|
||||
if (newLocale.scriptCode != null) {
|
||||
await prefs.setString('scriptCode', newLocale.scriptCode!);
|
||||
} else {
|
||||
await prefs.remove('scriptCode');
|
||||
}
|
||||
if (newLocale.countryCode != null) {
|
||||
await prefs.setString('countryCode', newLocale.countryCode!);
|
||||
} else {
|
||||
await prefs.remove('countryCode');
|
||||
}
|
||||
}
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user