Fix chinese typography bug

This commit is contained in:
problematicconsumer
2023-11-25 22:48:22 +03:30
parent e6c6ec59ad
commit 2a977f4142
3 changed files with 15 additions and 11 deletions

View File

@@ -1,3 +1,4 @@
import 'package:flutter_localized_locales/flutter_localized_locales.dart';
import 'package:hiddify/data/data_providers.dart';
import 'package:hiddify/gen/fonts.gen.dart';
import 'package:hiddify/gen/translations.g.dart';
@@ -14,7 +15,13 @@ class LocaleNotifier extends _$LocaleNotifier {
ref.watch(sharedPreferencesProvider),
"locale",
AppLocaleUtils.findDeviceLocale(),
mapFrom: AppLocale.values.byName,
mapFrom: (String value) {
// keep backward compatibility with chinese after changing zh to zh_CN
if (value == "zh") {
return AppLocale.zhCn;
}
return AppLocale.values.byName(value);
},
mapTo: (value) => value.name,
);
@@ -30,4 +37,9 @@ class LocaleNotifier extends _$LocaleNotifier {
extension AppLocaleX on AppLocale {
String get preferredFontFamily =>
this == AppLocale.fa ? FontFamily.shabnam : "";
String get localeName =>
LocaleNamesLocalizationsDelegate
.nativeLocaleNames[flutterLocale.toString()] ??
name;
}

View File

@@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:flutter_localized_locales/flutter_localized_locales.dart';
import 'package:go_router/go_router.dart';
import 'package:hiddify/core/core_providers.dart';
import 'package:hiddify/core/prefs/prefs.dart';
@@ -17,10 +16,7 @@ class LocalePrefTile extends HookConsumerWidget {
return ListTile(
title: Text(t.settings.general.locale),
subtitle: Text(
LocaleNamesLocalizationsDelegate.nativeLocaleNames[locale.name] ??
locale.name,
),
subtitle: Text(locale.localeName),
leading: const Icon(Icons.language),
onTap: () async {
final selectedLocale = await showDialog<AppLocale>(
@@ -31,11 +27,7 @@ class LocalePrefTile extends HookConsumerWidget {
children: AppLocale.values
.map(
(e) => RadioListTile(
title: Text(
LocaleNamesLocalizationsDelegate
.nativeLocaleNames[e.name] ??
e.name,
),
title: Text(e.localeName),
value: e,
groupValue: locale,
onChanged: (e) => context.pop(e),