mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-01 05:10:15 +02:00
Added language setting (mostly working) - #165
This commit is contained in:
@@ -208,6 +208,7 @@
|
|||||||
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
||||||
"addCategory": "Add Category",
|
"addCategory": "Add Category",
|
||||||
"label": "Label",
|
"label": "Label",
|
||||||
|
"language": "Language",
|
||||||
"tooManyRequestsTryAgainInMinutes": {
|
"tooManyRequestsTryAgainInMinutes": {
|
||||||
"one": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minute erneut",
|
"one": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minute erneut",
|
||||||
"other": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minuten erneut"
|
"other": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minuten erneut"
|
||||||
|
@@ -208,6 +208,7 @@
|
|||||||
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
||||||
"addCategory": "Add Category",
|
"addCategory": "Add Category",
|
||||||
"label": "Label",
|
"label": "Label",
|
||||||
|
"language": "Language",
|
||||||
"tooManyRequestsTryAgainInMinutes": {
|
"tooManyRequestsTryAgainInMinutes": {
|
||||||
"one": "Too many requests (rate limited) - try again in {} minute",
|
"one": "Too many requests (rate limited) - try again in {} minute",
|
||||||
"other": "Too many requests (rate limited) - try again in {} minutes"
|
"other": "Too many requests (rate limited) - try again in {} minutes"
|
||||||
|
@@ -208,6 +208,7 @@
|
|||||||
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
||||||
"addCategory": "Add Category",
|
"addCategory": "Add Category",
|
||||||
"label": "Label",
|
"label": "Label",
|
||||||
|
"language": "Language",
|
||||||
"tooManyRequestsTryAgainInMinutes": {
|
"tooManyRequestsTryAgainInMinutes": {
|
||||||
"one": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva",
|
"one": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva",
|
||||||
"other": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva"
|
"other": "Túl sok kérés (korlátozott arány) – próbálja újra {} perc múlva"
|
||||||
|
@@ -208,6 +208,7 @@
|
|||||||
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
||||||
"addCategory": "Add Category",
|
"addCategory": "Add Category",
|
||||||
"label": "Label",
|
"label": "Label",
|
||||||
|
"language": "Language",
|
||||||
"tooManyRequestsTryAgainInMinutes": {
|
"tooManyRequestsTryAgainInMinutes": {
|
||||||
"one": "Troppe richieste (traffico limitato) - riprova tra {} minuto",
|
"one": "Troppe richieste (traffico limitato) - riprova tra {} minuto",
|
||||||
"other": "Troppe richieste (traffico limitato) - riprova tra {} minuti"
|
"other": "Troppe richieste (traffico limitato) - riprova tra {} minuti"
|
||||||
|
@@ -208,6 +208,7 @@
|
|||||||
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
||||||
"addCategory": "カテゴリを追加",
|
"addCategory": "カテゴリを追加",
|
||||||
"label": "ラベル",
|
"label": "ラベル",
|
||||||
|
"language": "Language",
|
||||||
"tooManyRequestsTryAgainInMinutes": {
|
"tooManyRequestsTryAgainInMinutes": {
|
||||||
"one": "リクエストが多すぎます(レート制限)- {}分後に再試行してください",
|
"one": "リクエストが多すぎます(レート制限)- {}分後に再試行してください",
|
||||||
"other": "リクエストが多すぎます(レート制限)- {}分後に再試行してください"
|
"other": "リクエストが多すぎます(レート制限)- {}分後に再試行してください"
|
||||||
|
@@ -208,6 +208,7 @@
|
|||||||
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
"categoryDeleteWarning": "All Apps in deleted categories will be set to uncategorized.",
|
||||||
"addCategory": "Add Category",
|
"addCategory": "Add Category",
|
||||||
"label": "Label",
|
"label": "Label",
|
||||||
|
"language": "Language",
|
||||||
"tooManyRequestsTryAgainInMinutes": {
|
"tooManyRequestsTryAgainInMinutes": {
|
||||||
"one": "请求过多 (API 限制) - 在 {} 分钟后重试",
|
"one": "请求过多 (API 限制) - 在 {} 分钟后重试",
|
||||||
"other": "请求过多 (API 限制) - 在 {} 分钟后重试"
|
"other": "请求过多 (API 限制) - 在 {} 分钟后重试"
|
||||||
|
@@ -6,6 +6,7 @@ import 'package:obtainium/components/custom_app_bar.dart';
|
|||||||
import 'package:obtainium/components/generated_form.dart';
|
import 'package:obtainium/components/generated_form.dart';
|
||||||
import 'package:obtainium/components/generated_form_modal.dart';
|
import 'package:obtainium/components/generated_form_modal.dart';
|
||||||
import 'package:obtainium/custom_errors.dart';
|
import 'package:obtainium/custom_errors.dart';
|
||||||
|
import 'package:obtainium/main.dart';
|
||||||
import 'package:obtainium/providers/apps_provider.dart';
|
import 'package:obtainium/providers/apps_provider.dart';
|
||||||
import 'package:obtainium/providers/logs_provider.dart';
|
import 'package:obtainium/providers/logs_provider.dart';
|
||||||
import 'package:obtainium/providers/settings_provider.dart';
|
import 'package:obtainium/providers/settings_provider.dart';
|
||||||
@@ -129,6 +130,25 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var localeDropdown = DropdownButtonFormField(
|
||||||
|
decoration: InputDecoration(labelText: tr('language')),
|
||||||
|
value: settingsProvider.forcedLocale,
|
||||||
|
items: [
|
||||||
|
DropdownMenuItem(
|
||||||
|
value: null,
|
||||||
|
child: Text(tr('followSystem')),
|
||||||
|
),
|
||||||
|
...supportedLocales.map((e) => DropdownMenuItem(
|
||||||
|
value: e.toLanguageTag(),
|
||||||
|
child: Text(e.toLanguageTag().toUpperCase()),
|
||||||
|
))
|
||||||
|
],
|
||||||
|
onChanged: (value) {
|
||||||
|
settingsProvider.forcedLocale = value;
|
||||||
|
context.setLocale(Locale(settingsProvider.forcedLocale ??
|
||||||
|
context.fallbackLocale!.languageCode));
|
||||||
|
});
|
||||||
|
|
||||||
var intervalDropdown = DropdownButtonFormField(
|
var intervalDropdown = DropdownButtonFormField(
|
||||||
decoration: InputDecoration(labelText: tr('bgUpdateCheckInterval')),
|
decoration: InputDecoration(labelText: tr('bgUpdateCheckInterval')),
|
||||||
value: settingsProvider.updateInterval,
|
value: settingsProvider.updateInterval,
|
||||||
@@ -210,6 +230,8 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
height16,
|
height16,
|
||||||
|
localeDropdown,
|
||||||
|
height16,
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
|
@@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:fluttertoast/fluttertoast.dart';
|
import 'package:fluttertoast/fluttertoast.dart';
|
||||||
import 'package:obtainium/app_sources/github.dart';
|
import 'package:obtainium/app_sources/github.dart';
|
||||||
import 'package:obtainium/components/generated_form.dart';
|
import 'package:obtainium/components/generated_form.dart';
|
||||||
|
import 'package:obtainium/main.dart';
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
@@ -164,4 +165,24 @@ class SettingsProvider with ChangeNotifier {
|
|||||||
...categories.entries.map((e) => MapEntry(e.key, e.key)).toList()
|
...categories.entries.map((e) => MapEntry(e.key, e.key)).toList()
|
||||||
],
|
],
|
||||||
defaultValue: initCategory);
|
defaultValue: initCategory);
|
||||||
|
|
||||||
|
String? get forcedLocale {
|
||||||
|
var fl = prefs?.getString('forcedLocale');
|
||||||
|
return supportedLocales
|
||||||
|
.where((element) => element.toLanguageTag() == fl)
|
||||||
|
.isNotEmpty
|
||||||
|
? fl
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
set forcedLocale(String? fl) {
|
||||||
|
if (fl == null) {
|
||||||
|
prefs?.remove('forcedLocale');
|
||||||
|
} else if (supportedLocales
|
||||||
|
.where((element) => element.toLanguageTag() == fl)
|
||||||
|
.isNotEmpty) {
|
||||||
|
prefs?.setString('forcedLocale', fl);
|
||||||
|
}
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user