Files
umbrix/lib/core/localization/locale_preferences.dart
problematicconsumer c279e3550e Fix Portuguese locale
2024-02-20 19:47:56 +03:30

35 lines
1.1 KiB
Dart

import 'package:hiddify/core/preferences/preferences_provider.dart';
import 'package:hiddify/gen/translations.g.dart';
import 'package:hiddify/utils/custom_loggers.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'locale_preferences.g.dart';
@Riverpod(keepAlive: true)
class LocalePreferences extends _$LocalePreferences with AppLogger {
@override
AppLocale build() {
final persisted =
ref.watch(sharedPreferencesProvider).requireValue.getString("locale");
if (persisted == null) return AppLocaleUtils.findDeviceLocale();
// keep backward compatibility with chinese after changing zh to zh_CN
if (persisted == "zh") {
return AppLocale.zhCn;
}
try {
return AppLocale.values.byName(persisted);
} catch (e) {
loggy.error("error setting locale: [$persisted]", e);
return AppLocale.en;
}
}
Future<void> changeLocale(AppLocale value) async {
state = value;
await ref
.read(sharedPreferencesProvider)
.requireValue
.setString("locale", value.name);
}
}