feat: Improve language distinguishness and resolve language-specific issues (#1706)

This commit is contained in:
Ushie
2024-02-26 04:08:14 +03:00
committed by GitHub
parent f4dea6e58c
commit 6d866d4424
3 changed files with 24 additions and 26 deletions

View File

@ -1,6 +1,5 @@
// ignore_for_file: use_build_context_synchronously
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:language_code/language_code.dart';
import 'package:revanced_manager/app/app.locator.dart';
@ -35,8 +34,9 @@ class SUpdateLanguage extends BaseViewModel {
}
Future<void> showLanguagesDialog(BuildContext parentContext) {
final ValueNotifier<String> selectedLanguageCode =
ValueNotifier(LocaleSettings.currentLocale.languageCode);
final ValueNotifier<String> selectedLanguageCode = ValueNotifier(
'${LocaleSettings.currentLocale.languageCode}-${LocaleSettings.currentLocale.countryCode}',
);
// initLang();
// Return a dialog with list for each language supported by the application.
@ -55,30 +55,24 @@ class SUpdateLanguage extends BaseViewModel {
child: ListBody(
children: AppLocale.values.map(
(locale) {
LanguageCodes? languageCode;
Text? languageNativeName;
try {
languageCode =
LanguageCodes.fromCode(locale.languageCode);
} catch (e) {
if (kDebugMode) {
print(e);
}
}
if (languageCode != null) {
languageNativeName = Text(languageCode.nativeName);
}
final LanguageCodes languageCode = LanguageCodes.fromCode(
'${locale.languageCode}_${locale.countryCode}',
orElse: () => LanguageCodes.fromCode(locale.languageCode),
);
return RadioListTile(
title: Text(
languageCode?.englishName ?? locale.languageCode,
languageCode.englishName,
),
subtitle: languageNativeName,
value: locale.languageCode == selectedLanguageCode.value,
subtitle: Text(
'${languageCode.nativeName} (${locale.languageCode}${locale.countryCode != null ? '-${locale.countryCode}' : ''})',
),
value: '${locale.languageCode}-${locale.countryCode}' ==
selectedLanguageCode.value,
groupValue: true,
onChanged: (value) {
selectedLanguageCode.value = locale.languageCode;
selectedLanguageCode.value =
'${locale.languageCode}-${locale.countryCode}';
},
);
},