Fix string not translatable

This commit is contained in:
Ming Ming 2022-08-08 14:35:26 +08:00
parent 7e523ed30c
commit 872196f9e7
4 changed files with 41 additions and 14 deletions

View file

@ -301,6 +301,10 @@
"@settingsLanguageTitle": { "@settingsLanguageTitle": {
"description": "Set display language" "description": "Set display language"
}, },
"settingsLanguageOptionSystemDefaultLabel": "System default",
"@settingsLanguageOptionSystemDefaultLabel": {
"description": "Follow the Android system language"
},
"settingsExifSupportTitle": "EXIF support", "settingsExifSupportTitle": "EXIF support",
"@settingsExifSupportTitle": { "@settingsExifSupportTitle": {
"description": "Title of the EXIF support setting" "description": "Title of the EXIF support setting"

View file

@ -1,5 +1,6 @@
{ {
"cs": [ "cs": [
"settingsLanguageOptionSystemDefaultLabel",
"settingsExifWifiOnlyTitle", "settingsExifWifiOnlyTitle",
"settingsExifWifiOnlyFalseSubtitle", "settingsExifWifiOnlyFalseSubtitle",
"settingsMemoriesTitle", "settingsMemoriesTitle",
@ -145,6 +146,7 @@
], ],
"de": [ "de": [
"settingsLanguageOptionSystemDefaultLabel",
"settingsExifWifiOnlyTitle", "settingsExifWifiOnlyTitle",
"settingsExifWifiOnlyFalseSubtitle", "settingsExifWifiOnlyFalseSubtitle",
"settingsMemoriesTitle", "settingsMemoriesTitle",
@ -304,6 +306,7 @@
], ],
"el": [ "el": [
"settingsLanguageOptionSystemDefaultLabel",
"settingsExifWifiOnlyTitle", "settingsExifWifiOnlyTitle",
"settingsExifWifiOnlyFalseSubtitle", "settingsExifWifiOnlyFalseSubtitle",
"settingsAccountLabelTitle", "settingsAccountLabelTitle",
@ -343,6 +346,7 @@
], ],
"es": [ "es": [
"settingsLanguageOptionSystemDefaultLabel",
"rootPickerSkipConfirmationDialogContent2", "rootPickerSkipConfirmationDialogContent2",
"categoriesLabel", "categoriesLabel",
"searchLandingPeopleListEmptyText", "searchLandingPeopleListEmptyText",
@ -364,6 +368,7 @@
], ],
"fi": [ "fi": [
"settingsLanguageOptionSystemDefaultLabel",
"categoriesLabel", "categoriesLabel",
"searchLandingPeopleListEmptyText", "searchLandingPeopleListEmptyText",
"searchLandingCategoryVideosLabel", "searchLandingCategoryVideosLabel",
@ -385,6 +390,7 @@
"fr": [ "fr": [
"collectionsTooltip", "collectionsTooltip",
"settingsLanguageOptionSystemDefaultLabel",
"settingsExifWifiOnlyTitle", "settingsExifWifiOnlyTitle",
"settingsExifWifiOnlyFalseSubtitle", "settingsExifWifiOnlyFalseSubtitle",
"settingsAccountLabelTitle", "settingsAccountLabelTitle",
@ -448,6 +454,7 @@
], ],
"pl": [ "pl": [
"settingsLanguageOptionSystemDefaultLabel",
"settingsExifWifiOnlyTitle", "settingsExifWifiOnlyTitle",
"settingsExifWifiOnlyFalseSubtitle", "settingsExifWifiOnlyFalseSubtitle",
"settingsAccountLabelTitle", "settingsAccountLabelTitle",
@ -529,6 +536,7 @@
], ],
"pt": [ "pt": [
"settingsLanguageOptionSystemDefaultLabel",
"settingsExifWifiOnlyTitle", "settingsExifWifiOnlyTitle",
"settingsExifWifiOnlyFalseSubtitle", "settingsExifWifiOnlyFalseSubtitle",
"settingsAccountLabelTitle", "settingsAccountLabelTitle",
@ -589,6 +597,7 @@
], ],
"ru": [ "ru": [
"settingsLanguageOptionSystemDefaultLabel",
"settingsExifWifiOnlyTitle", "settingsExifWifiOnlyTitle",
"settingsExifWifiOnlyFalseSubtitle", "settingsExifWifiOnlyFalseSubtitle",
"settingsAccountLabelTitle", "settingsAccountLabelTitle",
@ -649,6 +658,7 @@
], ],
"zh": [ "zh": [
"settingsLanguageOptionSystemDefaultLabel",
"settingsExifWifiOnlyTitle", "settingsExifWifiOnlyTitle",
"settingsExifWifiOnlyFalseSubtitle", "settingsExifWifiOnlyFalseSubtitle",
"settingsAccountLabelTitle", "settingsAccountLabelTitle",
@ -709,6 +719,7 @@
], ],
"zh_Hant": [ "zh_Hant": [
"settingsLanguageOptionSystemDefaultLabel",
"settingsExifWifiOnlyTitle", "settingsExifWifiOnlyTitle",
"settingsExifWifiOnlyFalseSubtitle", "settingsExifWifiOnlyFalseSubtitle",
"settingsAccountLabelTitle", "settingsAccountLabelTitle",

View file

@ -1,17 +1,38 @@
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/pref.dart'; import 'package:nc_photos/pref.dart';
class AppLanguage { class AppLanguage {
const AppLanguage(this.langId, this.nativeName, this.isoName, this.locale); const AppLanguage(this.langId, this._nativeName, this.isoName, this.locale);
String get nativeName {
if (langId == _AppLanguageEnum.systemDefault.index) {
try {
return L10n.global().settingsLanguageOptionSystemDefaultLabel;
} catch (_) {
return _nativeName;
}
} else {
return _nativeName;
}
}
final int langId; final int langId;
final String nativeName; final String _nativeName;
final String? isoName; final String? isoName;
final Locale? locale; final Locale? locale;
} }
String getSelectedLanguageName() => _getSelectedLanguage().nativeName; AppLanguage getSelectedLanguage() {
Locale? getSelectedLocale() => _getSelectedLanguage().locale; try {
final lang = Pref().getLanguageOr(0);
return supportedLanguages[lang]!;
} catch (_) {
return supportedLanguages[_AppLanguageEnum.systemDefault.index]!;
}
}
Locale? getSelectedLocale() => getSelectedLanguage().locale;
final supportedLanguages = { final supportedLanguages = {
_AppLanguageEnum.systemDefault.index: AppLanguage( _AppLanguageEnum.systemDefault.index: AppLanguage(
@ -68,12 +89,3 @@ enum _AppLanguageEnum {
chineseHans, chineseHans,
chineseHant, chineseHant,
} }
AppLanguage _getSelectedLanguage() {
try {
final lang = Pref().getLanguageOr(0);
return supportedLanguages[lang]!;
} catch (_) {
return supportedLanguages[_AppLanguageEnum.systemDefault.index]!;
}
}

View file

@ -108,7 +108,7 @@ class _SettingsState extends State<Settings> {
[ [
ListTile( ListTile(
title: Text(L10n.global().settingsLanguageTitle), title: Text(L10n.global().settingsLanguageTitle),
subtitle: Text(language_util.getSelectedLanguageName()), subtitle: Text(language_util.getSelectedLanguage().nativeName),
onTap: () => _onLanguageTap(context), onTap: () => _onLanguageTap(context),
), ),
SwitchListTile( SwitchListTile(