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/data/data_providers.dart';
import 'package:hiddify/gen/fonts.gen.dart'; import 'package:hiddify/gen/fonts.gen.dart';
import 'package:hiddify/gen/translations.g.dart'; import 'package:hiddify/gen/translations.g.dart';
@@ -14,7 +15,13 @@ class LocaleNotifier extends _$LocaleNotifier {
ref.watch(sharedPreferencesProvider), ref.watch(sharedPreferencesProvider),
"locale", "locale",
AppLocaleUtils.findDeviceLocale(), 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, mapTo: (value) => value.name,
); );
@@ -30,4 +37,9 @@ class LocaleNotifier extends _$LocaleNotifier {
extension AppLocaleX on AppLocale { extension AppLocaleX on AppLocale {
String get preferredFontFamily => String get preferredFontFamily =>
this == AppLocale.fa ? FontFamily.shabnam : ""; 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/material.dart';
import 'package:flutter_localized_locales/flutter_localized_locales.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hiddify/core/core_providers.dart'; import 'package:hiddify/core/core_providers.dart';
import 'package:hiddify/core/prefs/prefs.dart'; import 'package:hiddify/core/prefs/prefs.dart';
@@ -17,10 +16,7 @@ class LocalePrefTile extends HookConsumerWidget {
return ListTile( return ListTile(
title: Text(t.settings.general.locale), title: Text(t.settings.general.locale),
subtitle: Text( subtitle: Text(locale.localeName),
LocaleNamesLocalizationsDelegate.nativeLocaleNames[locale.name] ??
locale.name,
),
leading: const Icon(Icons.language), leading: const Icon(Icons.language),
onTap: () async { onTap: () async {
final selectedLocale = await showDialog<AppLocale>( final selectedLocale = await showDialog<AppLocale>(
@@ -31,11 +27,7 @@ class LocalePrefTile extends HookConsumerWidget {
children: AppLocale.values children: AppLocale.values
.map( .map(
(e) => RadioListTile( (e) => RadioListTile(
title: Text( title: Text(e.localeName),
LocaleNamesLocalizationsDelegate
.nativeLocaleNames[e.name] ??
e.name,
),
value: e, value: e,
groupValue: locale, groupValue: locale,
onChanged: (e) => context.pop(e), onChanged: (e) => context.pop(e),