From 8e9968628a1581d579022c098035500e2d6e71ae Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Fri, 27 Mar 2026 09:37:53 +0100 Subject: [PATCH] fix: server tasks panel polish --- lib/i18n/da.i18n.json | 8 +- lib/i18n/de.i18n.json | 8 +- lib/i18n/en.i18n.json | 8 +- lib/i18n/es.i18n.json | 8 +- lib/i18n/fr.i18n.json | 8 +- lib/i18n/it.i18n.json | 8 +- lib/i18n/ja.i18n.json | 8 +- lib/i18n/ko.i18n.json | 8 +- lib/i18n/nb.i18n.json | 8 +- lib/i18n/nl.i18n.json | 8 +- lib/i18n/pl.i18n.json | 8 +- lib/i18n/pt.i18n.json | 8 +- lib/i18n/ru.i18n.json | 8 +- lib/i18n/strings.g.dart | 4 +- lib/i18n/strings_da.g.dart | 20 +++- lib/i18n/strings_de.g.dart | 20 +++- lib/i18n/strings_en.g.dart | 28 ++++- lib/i18n/strings_es.g.dart | 20 +++- lib/i18n/strings_fr.g.dart | 20 +++- lib/i18n/strings_it.g.dart | 20 +++- lib/i18n/strings_ja.g.dart | 20 +++- lib/i18n/strings_ko.g.dart | 20 +++- lib/i18n/strings_nb.g.dart | 20 +++- lib/i18n/strings_nl.g.dart | 20 +++- lib/i18n/strings_pl.g.dart | 20 +++- lib/i18n/strings_pt.g.dart | 20 +++- lib/i18n/strings_ru.g.dart | 20 +++- lib/i18n/strings_sv.g.dart | 20 +++- lib/i18n/strings_zh.g.dart | 20 +++- lib/i18n/sv.i18n.json | 8 +- lib/i18n/zh.i18n.json | 8 +- lib/widgets/server_activities_button.dart | 118 +++++++++++----------- 32 files changed, 460 insertions(+), 90 deletions(-) diff --git a/lib/i18n/da.i18n.json b/lib/i18n/da.i18n.json index 6e0e2b97..720299e1 100644 --- a/lib/i18n/da.i18n.json +++ b/lib/i18n/da.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Opdaterer servere...", "loadingServers": "Indlæser servere...", "connectingToServers": "Forbinder til servere...", - "startingOfflineMode": "Starter offlinetilstand..." + "startingOfflineMode": "Starter offlinetilstand...", + "loading": "Indlæser..." }, "screens": { "licenses": "Licenser", @@ -884,5 +885,10 @@ "manuallySelected": "Manuelt valgt", "shownWithForeignAudio": "Vist med fremmedsproget lyd", "alwaysEnabled": "Altid aktiveret" + }, + "serverTasks": { + "title": "Serveropgaver", + "failedToLoad": "Kunne ikke indlæse opgaver", + "noTasks": "Ingen opgaver kører" } } diff --git a/lib/i18n/de.i18n.json b/lib/i18n/de.i18n.json index fa8ef702..960383f7 100644 --- a/lib/i18n/de.i18n.json +++ b/lib/i18n/de.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Server werden aktualisiert...", "loadingServers": "Server werden geladen...", "connectingToServers": "Verbindung zu Servern...", - "startingOfflineMode": "Offlinemodus wird gestartet..." + "startingOfflineMode": "Offlinemodus wird gestartet...", + "loading": "Laden..." }, "screens": { "licenses": "Lizenzen", @@ -884,5 +885,10 @@ "manuallySelected": "Manuell ausgewählt", "shownWithForeignAudio": "Bei fremdsprachigem Audio anzeigen", "alwaysEnabled": "Immer aktiviert" + }, + "serverTasks": { + "title": "Serveraufgaben", + "failedToLoad": "Aufgaben konnten nicht geladen werden", + "noTasks": "Keine laufenden Aufgaben" } } diff --git a/lib/i18n/en.i18n.json b/lib/i18n/en.i18n.json index f489e7fb..36d54bb4 100644 --- a/lib/i18n/en.i18n.json +++ b/lib/i18n/en.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Refreshing servers...", "loadingServers": "Loading servers...", "connectingToServers": "Connecting to servers...", - "startingOfflineMode": "Starting offline mode..." + "startingOfflineMode": "Starting offline mode...", + "loading": "Loading..." }, "screens": { "licenses": "Licenses", @@ -884,5 +885,10 @@ "manuallySelected": "Manually selected", "shownWithForeignAudio": "Shown with foreign audio", "alwaysEnabled": "Always enabled" + }, + "serverTasks": { + "title": "Server Tasks", + "failedToLoad": "Failed to load tasks", + "noTasks": "No tasks running" } } diff --git a/lib/i18n/es.i18n.json b/lib/i18n/es.i18n.json index 90e205a4..539c8de5 100644 --- a/lib/i18n/es.i18n.json +++ b/lib/i18n/es.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Actualizando servidores...", "loadingServers": "Cargando servidores...", "connectingToServers": "Conectando a servidores...", - "startingOfflineMode": "Iniciando modo sin conexión..." + "startingOfflineMode": "Iniciando modo sin conexión...", + "loading": "Cargando..." }, "screens": { "licenses": "Licencias", @@ -884,5 +885,10 @@ "manuallySelected": "Seleccionado manualmente", "shownWithForeignAudio": "Mostrar con audio extranjero", "alwaysEnabled": "Siempre activado" + }, + "serverTasks": { + "title": "Tareas del servidor", + "failedToLoad": "Error al cargar tareas", + "noTasks": "No hay tareas en ejecución" } } diff --git a/lib/i18n/fr.i18n.json b/lib/i18n/fr.i18n.json index 2bb7381a..3a81a7b1 100644 --- a/lib/i18n/fr.i18n.json +++ b/lib/i18n/fr.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Actualisation des serveurs...", "loadingServers": "Chargement des serveurs...", "connectingToServers": "Connexion aux serveurs...", - "startingOfflineMode": "Démarrage en mode hors-ligne..." + "startingOfflineMode": "Démarrage en mode hors-ligne...", + "loading": "Chargement..." }, "screens": { "licenses": "Licenses", @@ -884,5 +885,10 @@ "manuallySelected": "Sélectionné manuellement", "shownWithForeignAudio": "Affichés avec audio étranger", "alwaysEnabled": "Toujours activé" + }, + "serverTasks": { + "title": "Tâches du serveur", + "failedToLoad": "Échec du chargement des tâches", + "noTasks": "Aucune tâche en cours" } } diff --git a/lib/i18n/it.i18n.json b/lib/i18n/it.i18n.json index d5475b64..4007f629 100644 --- a/lib/i18n/it.i18n.json +++ b/lib/i18n/it.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Aggiornamento server...", "loadingServers": "Caricamento server...", "connectingToServers": "Connessione ai server...", - "startingOfflineMode": "Avvio modalità offline..." + "startingOfflineMode": "Avvio modalità offline...", + "loading": "Caricamento..." }, "screens": { "licenses": "Licenze", @@ -884,5 +885,10 @@ "manuallySelected": "Selezionato manualmente", "shownWithForeignAudio": "Mostrati con audio straniero", "alwaysEnabled": "Sempre attivo" + }, + "serverTasks": { + "title": "Attività del server", + "failedToLoad": "Impossibile caricare le attività", + "noTasks": "Nessuna attività in corso" } } diff --git a/lib/i18n/ja.i18n.json b/lib/i18n/ja.i18n.json index 06b20b31..5b369a35 100644 --- a/lib/i18n/ja.i18n.json +++ b/lib/i18n/ja.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "サーバーを更新中...", "loadingServers": "サーバーを読み込み中...", "connectingToServers": "サーバーに接続中...", - "startingOfflineMode": "オフラインモードを開始中..." + "startingOfflineMode": "オフラインモードを開始中...", + "loading": "読み込み中..." }, "screens": { "licenses": "ライセンス", @@ -884,5 +885,10 @@ "manuallySelected": "手動選択", "shownWithForeignAudio": "外国語音声時に表示", "alwaysEnabled": "常に有効" + }, + "serverTasks": { + "title": "サーバータスク", + "failedToLoad": "タスクの読み込みに失敗しました", + "noTasks": "実行中のタスクはありません" } } diff --git a/lib/i18n/ko.i18n.json b/lib/i18n/ko.i18n.json index e794bb2f..3a4417b6 100644 --- a/lib/i18n/ko.i18n.json +++ b/lib/i18n/ko.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "서버 새로고침 중...", "loadingServers": "서버 로딩 중...", "connectingToServers": "서버 연결 중...", - "startingOfflineMode": "오프라인 모드 시작 중..." + "startingOfflineMode": "오프라인 모드 시작 중...", + "loading": "로딩 중..." }, "screens": { "licenses": "라이선스", @@ -884,5 +885,10 @@ "manuallySelected": "수동 선택", "shownWithForeignAudio": "외국어 오디오 시 표시", "alwaysEnabled": "항상 활성화" + }, + "serverTasks": { + "title": "서버 작업", + "failedToLoad": "작업을 불러올 수 없습니다", + "noTasks": "실행 중인 작업 없음" } } diff --git a/lib/i18n/nb.i18n.json b/lib/i18n/nb.i18n.json index 67571722..de80c7b6 100644 --- a/lib/i18n/nb.i18n.json +++ b/lib/i18n/nb.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Oppdaterer servere...", "loadingServers": "Laster servere...", "connectingToServers": "Kobler til servere...", - "startingOfflineMode": "Starter frakoblet modus..." + "startingOfflineMode": "Starter frakoblet modus...", + "loading": "Laster..." }, "screens": { "licenses": "Lisenser", @@ -884,5 +885,10 @@ "manuallySelected": "Manuelt valgt", "shownWithForeignAudio": "Vist med fremmedspråklig lyd", "alwaysEnabled": "Alltid aktivert" + }, + "serverTasks": { + "title": "Serveroppgaver", + "failedToLoad": "Kunne ikke laste oppgaver", + "noTasks": "Ingen oppgaver kjører" } } diff --git a/lib/i18n/nl.i18n.json b/lib/i18n/nl.i18n.json index d8607562..1a57bf0f 100644 --- a/lib/i18n/nl.i18n.json +++ b/lib/i18n/nl.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Servers vernieuwen...", "loadingServers": "Servers laden...", "connectingToServers": "Verbinden met servers...", - "startingOfflineMode": "Offlinemodus starten..." + "startingOfflineMode": "Offlinemodus starten...", + "loading": "Laden..." }, "screens": { "licenses": "Licenties", @@ -884,5 +885,10 @@ "manuallySelected": "Handmatig geselecteerd", "shownWithForeignAudio": "Weergeven bij anderstalig geluid", "alwaysEnabled": "Altijd ingeschakeld" + }, + "serverTasks": { + "title": "Servertaken", + "failedToLoad": "Taken konden niet worden geladen", + "noTasks": "Geen actieve taken" } } diff --git a/lib/i18n/pl.i18n.json b/lib/i18n/pl.i18n.json index 7c2c1952..a273e99e 100644 --- a/lib/i18n/pl.i18n.json +++ b/lib/i18n/pl.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Odświeżanie serwerów...", "loadingServers": "Ładowanie serwerów...", "connectingToServers": "Łączenie z serwerami...", - "startingOfflineMode": "Uruchamianie trybu offline..." + "startingOfflineMode": "Uruchamianie trybu offline...", + "loading": "Ładowanie..." }, "screens": { "licenses": "Licencje", @@ -884,5 +885,10 @@ "manuallySelected": "Wybrany ręcznie", "shownWithForeignAudio": "Wyświetlane przy obcojęzycznym audio", "alwaysEnabled": "Zawsze włączone" + }, + "serverTasks": { + "title": "Zadania serwera", + "failedToLoad": "Nie udało się załadować zadań", + "noTasks": "Brak uruchomionych zadań" } } diff --git a/lib/i18n/pt.i18n.json b/lib/i18n/pt.i18n.json index 425d3029..c8d738f3 100644 --- a/lib/i18n/pt.i18n.json +++ b/lib/i18n/pt.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Atualizando servidores...", "loadingServers": "Carregando servidores...", "connectingToServers": "Conectando aos servidores...", - "startingOfflineMode": "Iniciando modo offline..." + "startingOfflineMode": "Iniciando modo offline...", + "loading": "Carregando..." }, "screens": { "licenses": "Licenças", @@ -884,5 +885,10 @@ "manuallySelected": "Seleção manual", "shownWithForeignAudio": "Exibir com áudio estrangeiro", "alwaysEnabled": "Sempre ativado" + }, + "serverTasks": { + "title": "Tarefas do servidor", + "failedToLoad": "Falha ao carregar tarefas", + "noTasks": "Nenhuma tarefa em execução" } } diff --git a/lib/i18n/ru.i18n.json b/lib/i18n/ru.i18n.json index e6d373d7..38b84bdf 100644 --- a/lib/i18n/ru.i18n.json +++ b/lib/i18n/ru.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Обновление серверов...", "loadingServers": "Загрузка серверов...", "connectingToServers": "Подключение к серверам...", - "startingOfflineMode": "Запуск автономного режима..." + "startingOfflineMode": "Запуск автономного режима...", + "loading": "Загрузка..." }, "screens": { "licenses": "Лицензии", @@ -884,5 +885,10 @@ "manuallySelected": "Выбор вручную", "shownWithForeignAudio": "Показывать при иноязычном аудио", "alwaysEnabled": "Всегда включены" + }, + "serverTasks": { + "title": "Задачи сервера", + "failedToLoad": "Не удалось загрузить задачи", + "noTasks": "Нет выполняемых задач" } } diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index 947574f1..0d3c193b 100644 --- a/lib/i18n/strings.g.dart +++ b/lib/i18n/strings.g.dart @@ -4,9 +4,9 @@ /// To regenerate, run: `dart run slang` /// /// Locales: 15 -/// Strings: 11970 (798 per locale) +/// Strings: 12030 (802 per locale) /// -/// Built on 2026-03-22 at 10:44 UTC +/// Built on 2026-03-27 at 07:32 UTC // coverage:ignore-file // ignore_for_file: type=lint, unused_import diff --git a/lib/i18n/strings_da.g.dart b/lib/i18n/strings_da.g.dart index d9263f92..ab360e8c 100644 --- a/lib/i18n/strings_da.g.dart +++ b/lib/i18n/strings_da.g.dart @@ -74,6 +74,7 @@ class TranslationsDa with BaseTranslations implements T @override late final _TranslationsVideoSettingsDa videoSettings = _TranslationsVideoSettingsDa._(_root); @override late final _TranslationsExternalPlayerDa externalPlayer = _TranslationsExternalPlayerDa._(_root); @override late final _TranslationsMetadataEditDa metadataEdit = _TranslationsMetadataEditDa._(_root); + @override late final _TranslationsServerTasksDa serverTasks = _TranslationsServerTasksDa._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonDa implements TranslationsCommonEn { @override String get loadingServers => 'Indlæser servere...'; @override String get connectingToServers => 'Forbinder til servere...'; @override String get startingOfflineMode => 'Starter offlinetilstand...'; + @override String get loading => 'Indlæser...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditDa implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Altid aktiveret'; } +// Path: serverTasks +class _TranslationsServerTasksDa implements TranslationsServerTasksEn { + _TranslationsServerTasksDa._(this._root); + + final TranslationsDa _root; // ignore: unused_field + + // Translations + @override String get title => 'Serveropgaver'; + @override String get failedToLoad => 'Kunne ikke indlæse opgaver'; + @override String get noTasks => 'Ingen opgaver kører'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsDa implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsDa._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsDa { 'common.loadingServers' => 'Indlæser servere...', 'common.connectingToServers' => 'Forbinder til servere...', 'common.startingOfflineMode' => 'Starter offlinetilstand...', + 'common.loading' => 'Indlæser...', 'screens.licenses' => 'Licenser', 'screens.switchProfile' => 'Skift profil', 'screens.subtitleStyling' => 'Undertekststil', @@ -1796,9 +1811,9 @@ extension on TranslationsDa { 'liveTv.evening' => 'Aften', 'liveTv.lateNight' => 'Sen aften', 'liveTv.whatsOn' => 'Hvad der kører', - 'liveTv.watchChannel' => 'Se kanal', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Se kanal', 'liveTv.favorites' => 'Favoritter', 'collections.title' => 'Samlinger', 'collections.collection' => 'Samling', @@ -2085,6 +2100,9 @@ extension on TranslationsDa { 'metadataEdit.manuallySelected' => 'Manuelt valgt', 'metadataEdit.shownWithForeignAudio' => 'Vist med fremmedsproget lyd', 'metadataEdit.alwaysEnabled' => 'Altid aktiveret', + 'serverTasks.title' => 'Serveropgaver', + 'serverTasks.failedToLoad' => 'Kunne ikke indlæse opgaver', + 'serverTasks.noTasks' => 'Ingen opgaver kører', _ => null, }; } diff --git a/lib/i18n/strings_de.g.dart b/lib/i18n/strings_de.g.dart index d879fef7..87b2c7c0 100644 --- a/lib/i18n/strings_de.g.dart +++ b/lib/i18n/strings_de.g.dart @@ -74,6 +74,7 @@ class TranslationsDe with BaseTranslations implements T @override late final _TranslationsVideoSettingsDe videoSettings = _TranslationsVideoSettingsDe._(_root); @override late final _TranslationsExternalPlayerDe externalPlayer = _TranslationsExternalPlayerDe._(_root); @override late final _TranslationsMetadataEditDe metadataEdit = _TranslationsMetadataEditDe._(_root); + @override late final _TranslationsServerTasksDe serverTasks = _TranslationsServerTasksDe._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonDe implements TranslationsCommonEn { @override String get loadingServers => 'Server werden geladen...'; @override String get connectingToServers => 'Verbindung zu Servern...'; @override String get startingOfflineMode => 'Offlinemodus wird gestartet...'; + @override String get loading => 'Laden...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditDe implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Immer aktiviert'; } +// Path: serverTasks +class _TranslationsServerTasksDe implements TranslationsServerTasksEn { + _TranslationsServerTasksDe._(this._root); + + final TranslationsDe _root; // ignore: unused_field + + // Translations + @override String get title => 'Serveraufgaben'; + @override String get failedToLoad => 'Aufgaben konnten nicht geladen werden'; + @override String get noTasks => 'Keine laufenden Aufgaben'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsDe implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsDe._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsDe { 'common.loadingServers' => 'Server werden geladen...', 'common.connectingToServers' => 'Verbindung zu Servern...', 'common.startingOfflineMode' => 'Offlinemodus wird gestartet...', + 'common.loading' => 'Laden...', 'screens.licenses' => 'Lizenzen', 'screens.switchProfile' => 'Profil wechseln', 'screens.subtitleStyling' => 'Untertitel-Stil', @@ -1796,9 +1811,9 @@ extension on TranslationsDe { 'liveTv.evening' => 'Abend', 'liveTv.lateNight' => 'Spätnacht', 'liveTv.whatsOn' => 'Jetzt im TV', - 'liveTv.watchChannel' => 'Kanal ansehen', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Kanal ansehen', 'liveTv.favorites' => 'Favoriten', 'downloads.title' => 'Downloads', 'downloads.manage' => 'Verwalten', @@ -2085,6 +2100,9 @@ extension on TranslationsDe { 'metadataEdit.manuallySelected' => 'Manuell ausgewählt', 'metadataEdit.shownWithForeignAudio' => 'Bei fremdsprachigem Audio anzeigen', 'metadataEdit.alwaysEnabled' => 'Immer aktiviert', + 'serverTasks.title' => 'Serveraufgaben', + 'serverTasks.failedToLoad' => 'Aufgaben konnten nicht geladen werden', + 'serverTasks.noTasks' => 'Keine laufenden Aufgaben', _ => null, }; } diff --git a/lib/i18n/strings_en.g.dart b/lib/i18n/strings_en.g.dart index 53664828..7c8b2871 100644 --- a/lib/i18n/strings_en.g.dart +++ b/lib/i18n/strings_en.g.dart @@ -77,6 +77,7 @@ class Translations with BaseTranslations { late final TranslationsVideoSettingsEn videoSettings = TranslationsVideoSettingsEn._(_root); late final TranslationsExternalPlayerEn externalPlayer = TranslationsExternalPlayerEn._(_root); late final TranslationsMetadataEditEn metadataEdit = TranslationsMetadataEditEn._(_root); + late final TranslationsServerTasksEn serverTasks = TranslationsServerTasksEn._(_root); } // Path: app @@ -254,6 +255,9 @@ class TranslationsCommonEn { /// en: 'Starting offline mode...' String get startingOfflineMode => 'Starting offline mode...'; + + /// en: 'Loading...' + String get loading => 'Loading...'; } // Path: screens @@ -2499,6 +2503,24 @@ class TranslationsMetadataEditEn { String get alwaysEnabled => 'Always enabled'; } +// Path: serverTasks +class TranslationsServerTasksEn { + TranslationsServerTasksEn._(this._root); + + final Translations _root; // ignore: unused_field + + // Translations + + /// en: 'Server Tasks' + String get title => 'Server Tasks'; + + /// en: 'Failed to load tasks' + String get failedToLoad => 'Failed to load tasks'; + + /// en: 'No tasks running' + String get noTasks => 'No tasks running'; +} + // Path: hotkeys.actions class TranslationsHotkeysActionsEn { TranslationsHotkeysActionsEn._(this._root); @@ -2938,6 +2960,7 @@ extension on Translations { 'common.loadingServers' => 'Loading servers...', 'common.connectingToServers' => 'Connecting to servers...', 'common.startingOfflineMode' => 'Starting offline mode...', + 'common.loading' => 'Loading...', 'screens.licenses' => 'Licenses', 'screens.switchProfile' => 'Switch Profile', 'screens.subtitleStyling' => 'Subtitle Styling', @@ -3399,9 +3422,9 @@ extension on Translations { 'liveTv.evening' => 'Evening', 'liveTv.lateNight' => 'Late Night', 'liveTv.whatsOn' => 'What\'s On', - 'liveTv.watchChannel' => 'Watch Channel', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Watch Channel', 'liveTv.favorites' => 'Favorites', 'collections.title' => 'Collections', 'collections.collection' => 'Collection', @@ -3688,6 +3711,9 @@ extension on Translations { 'metadataEdit.manuallySelected' => 'Manually selected', 'metadataEdit.shownWithForeignAudio' => 'Shown with foreign audio', 'metadataEdit.alwaysEnabled' => 'Always enabled', + 'serverTasks.title' => 'Server Tasks', + 'serverTasks.failedToLoad' => 'Failed to load tasks', + 'serverTasks.noTasks' => 'No tasks running', _ => null, }; } diff --git a/lib/i18n/strings_es.g.dart b/lib/i18n/strings_es.g.dart index 61af57f6..ef056d22 100644 --- a/lib/i18n/strings_es.g.dart +++ b/lib/i18n/strings_es.g.dart @@ -74,6 +74,7 @@ class TranslationsEs with BaseTranslations implements T @override late final _TranslationsVideoSettingsEs videoSettings = _TranslationsVideoSettingsEs._(_root); @override late final _TranslationsExternalPlayerEs externalPlayer = _TranslationsExternalPlayerEs._(_root); @override late final _TranslationsMetadataEditEs metadataEdit = _TranslationsMetadataEditEs._(_root); + @override late final _TranslationsServerTasksEs serverTasks = _TranslationsServerTasksEs._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonEs implements TranslationsCommonEn { @override String get loadingServers => 'Cargando servidores...'; @override String get connectingToServers => 'Conectando a servidores...'; @override String get startingOfflineMode => 'Iniciando modo sin conexión...'; + @override String get loading => 'Cargando...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditEs implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Siempre activado'; } +// Path: serverTasks +class _TranslationsServerTasksEs implements TranslationsServerTasksEn { + _TranslationsServerTasksEs._(this._root); + + final TranslationsEs _root; // ignore: unused_field + + // Translations + @override String get title => 'Tareas del servidor'; + @override String get failedToLoad => 'Error al cargar tareas'; + @override String get noTasks => 'No hay tareas en ejecución'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsEs implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsEs._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsEs { 'common.loadingServers' => 'Cargando servidores...', 'common.connectingToServers' => 'Conectando a servidores...', 'common.startingOfflineMode' => 'Iniciando modo sin conexión...', + 'common.loading' => 'Cargando...', 'screens.licenses' => 'Licencias', 'screens.switchProfile' => 'Cambiar Perfil', 'screens.subtitleStyling' => 'Estilo de Subtítulos', @@ -1796,9 +1811,9 @@ extension on TranslationsEs { 'liveTv.evening' => 'Noche', 'liveTv.lateNight' => 'Trasnoche', 'liveTv.whatsOn' => 'En emisión', - 'liveTv.watchChannel' => 'Ver canal', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Ver canal', 'liveTv.favorites' => 'Favoritos', 'collections.title' => 'Colecciones', 'collections.collection' => 'Colección', @@ -2085,6 +2100,9 @@ extension on TranslationsEs { 'metadataEdit.manuallySelected' => 'Seleccionado manualmente', 'metadataEdit.shownWithForeignAudio' => 'Mostrar con audio extranjero', 'metadataEdit.alwaysEnabled' => 'Siempre activado', + 'serverTasks.title' => 'Tareas del servidor', + 'serverTasks.failedToLoad' => 'Error al cargar tareas', + 'serverTasks.noTasks' => 'No hay tareas en ejecución', _ => null, }; } diff --git a/lib/i18n/strings_fr.g.dart b/lib/i18n/strings_fr.g.dart index cff9533a..2ef261e5 100644 --- a/lib/i18n/strings_fr.g.dart +++ b/lib/i18n/strings_fr.g.dart @@ -74,6 +74,7 @@ class TranslationsFr with BaseTranslations implements T @override late final _TranslationsVideoSettingsFr videoSettings = _TranslationsVideoSettingsFr._(_root); @override late final _TranslationsExternalPlayerFr externalPlayer = _TranslationsExternalPlayerFr._(_root); @override late final _TranslationsMetadataEditFr metadataEdit = _TranslationsMetadataEditFr._(_root); + @override late final _TranslationsServerTasksFr serverTasks = _TranslationsServerTasksFr._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonFr implements TranslationsCommonEn { @override String get loadingServers => 'Chargement des serveurs...'; @override String get connectingToServers => 'Connexion aux serveurs...'; @override String get startingOfflineMode => 'Démarrage en mode hors-ligne...'; + @override String get loading => 'Chargement...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditFr implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Toujours activé'; } +// Path: serverTasks +class _TranslationsServerTasksFr implements TranslationsServerTasksEn { + _TranslationsServerTasksFr._(this._root); + + final TranslationsFr _root; // ignore: unused_field + + // Translations + @override String get title => 'Tâches du serveur'; + @override String get failedToLoad => 'Échec du chargement des tâches'; + @override String get noTasks => 'Aucune tâche en cours'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsFr implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsFr._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsFr { 'common.loadingServers' => 'Chargement des serveurs...', 'common.connectingToServers' => 'Connexion aux serveurs...', 'common.startingOfflineMode' => 'Démarrage en mode hors-ligne...', + 'common.loading' => 'Chargement...', 'screens.licenses' => 'Licenses', 'screens.switchProfile' => 'Changer de profil', 'screens.subtitleStyling' => 'Configuration des sous-titres', @@ -1796,9 +1811,9 @@ extension on TranslationsFr { 'liveTv.evening' => 'Soirée', 'liveTv.lateNight' => 'Nuit tardive', 'liveTv.whatsOn' => 'En ce moment', - 'liveTv.watchChannel' => 'Regarder la chaîne', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Regarder la chaîne', 'liveTv.favorites' => 'Favoris', 'collections.title' => 'Collections', 'collections.collection' => 'Collection', @@ -2085,6 +2100,9 @@ extension on TranslationsFr { 'metadataEdit.manuallySelected' => 'Sélectionné manuellement', 'metadataEdit.shownWithForeignAudio' => 'Affichés avec audio étranger', 'metadataEdit.alwaysEnabled' => 'Toujours activé', + 'serverTasks.title' => 'Tâches du serveur', + 'serverTasks.failedToLoad' => 'Échec du chargement des tâches', + 'serverTasks.noTasks' => 'Aucune tâche en cours', _ => null, }; } diff --git a/lib/i18n/strings_it.g.dart b/lib/i18n/strings_it.g.dart index 5837d733..37b73b1e 100644 --- a/lib/i18n/strings_it.g.dart +++ b/lib/i18n/strings_it.g.dart @@ -74,6 +74,7 @@ class TranslationsIt with BaseTranslations implements T @override late final _TranslationsVideoSettingsIt videoSettings = _TranslationsVideoSettingsIt._(_root); @override late final _TranslationsExternalPlayerIt externalPlayer = _TranslationsExternalPlayerIt._(_root); @override late final _TranslationsMetadataEditIt metadataEdit = _TranslationsMetadataEditIt._(_root); + @override late final _TranslationsServerTasksIt serverTasks = _TranslationsServerTasksIt._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonIt implements TranslationsCommonEn { @override String get loadingServers => 'Caricamento server...'; @override String get connectingToServers => 'Connessione ai server...'; @override String get startingOfflineMode => 'Avvio modalità offline...'; + @override String get loading => 'Caricamento...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditIt implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Sempre attivo'; } +// Path: serverTasks +class _TranslationsServerTasksIt implements TranslationsServerTasksEn { + _TranslationsServerTasksIt._(this._root); + + final TranslationsIt _root; // ignore: unused_field + + // Translations + @override String get title => 'Attività del server'; + @override String get failedToLoad => 'Impossibile caricare le attività'; + @override String get noTasks => 'Nessuna attività in corso'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsIt implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsIt._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsIt { 'common.loadingServers' => 'Caricamento server...', 'common.connectingToServers' => 'Connessione ai server...', 'common.startingOfflineMode' => 'Avvio modalità offline...', + 'common.loading' => 'Caricamento...', 'screens.licenses' => 'Licenze', 'screens.switchProfile' => 'Cambia profilo', 'screens.subtitleStyling' => 'Stile sottotitoli', @@ -1796,9 +1811,9 @@ extension on TranslationsIt { 'liveTv.evening' => 'Sera', 'liveTv.lateNight' => 'Notte tarda', 'liveTv.whatsOn' => 'In onda ora', - 'liveTv.watchChannel' => 'Guarda canale', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Guarda canale', 'liveTv.favorites' => 'Preferiti', 'downloads.title' => 'Download', 'downloads.manage' => 'Gestisci', @@ -2085,6 +2100,9 @@ extension on TranslationsIt { 'metadataEdit.manuallySelected' => 'Selezionato manualmente', 'metadataEdit.shownWithForeignAudio' => 'Mostrati con audio straniero', 'metadataEdit.alwaysEnabled' => 'Sempre attivo', + 'serverTasks.title' => 'Attività del server', + 'serverTasks.failedToLoad' => 'Impossibile caricare le attività', + 'serverTasks.noTasks' => 'Nessuna attività in corso', _ => null, }; } diff --git a/lib/i18n/strings_ja.g.dart b/lib/i18n/strings_ja.g.dart index 6b5cbe6c..a41ba657 100644 --- a/lib/i18n/strings_ja.g.dart +++ b/lib/i18n/strings_ja.g.dart @@ -74,6 +74,7 @@ class TranslationsJa with BaseTranslations implements T @override late final _TranslationsVideoSettingsJa videoSettings = _TranslationsVideoSettingsJa._(_root); @override late final _TranslationsExternalPlayerJa externalPlayer = _TranslationsExternalPlayerJa._(_root); @override late final _TranslationsMetadataEditJa metadataEdit = _TranslationsMetadataEditJa._(_root); + @override late final _TranslationsServerTasksJa serverTasks = _TranslationsServerTasksJa._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonJa implements TranslationsCommonEn { @override String get loadingServers => 'サーバーを読み込み中...'; @override String get connectingToServers => 'サーバーに接続中...'; @override String get startingOfflineMode => 'オフラインモードを開始中...'; + @override String get loading => '読み込み中...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditJa implements TranslationsMetadataEditEn { @override String get alwaysEnabled => '常に有効'; } +// Path: serverTasks +class _TranslationsServerTasksJa implements TranslationsServerTasksEn { + _TranslationsServerTasksJa._(this._root); + + final TranslationsJa _root; // ignore: unused_field + + // Translations + @override String get title => 'サーバータスク'; + @override String get failedToLoad => 'タスクの読み込みに失敗しました'; + @override String get noTasks => '実行中のタスクはありません'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsJa implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsJa._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsJa { 'common.loadingServers' => 'サーバーを読み込み中...', 'common.connectingToServers' => 'サーバーに接続中...', 'common.startingOfflineMode' => 'オフラインモードを開始中...', + 'common.loading' => '読み込み中...', 'screens.licenses' => 'ライセンス', 'screens.switchProfile' => 'プロフィール切替', 'screens.subtitleStyling' => '字幕スタイル', @@ -1796,9 +1811,9 @@ extension on TranslationsJa { 'liveTv.evening' => '夕方', 'liveTv.lateNight' => '深夜', 'liveTv.whatsOn' => '放送中', - 'liveTv.watchChannel' => 'チャンネルを視聴', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'チャンネルを視聴', 'liveTv.favorites' => 'お気に入り', 'collections.title' => 'コレクション', 'collections.collection' => 'コレクション', @@ -2085,6 +2100,9 @@ extension on TranslationsJa { 'metadataEdit.manuallySelected' => '手動選択', 'metadataEdit.shownWithForeignAudio' => '外国語音声時に表示', 'metadataEdit.alwaysEnabled' => '常に有効', + 'serverTasks.title' => 'サーバータスク', + 'serverTasks.failedToLoad' => 'タスクの読み込みに失敗しました', + 'serverTasks.noTasks' => '実行中のタスクはありません', _ => null, }; } diff --git a/lib/i18n/strings_ko.g.dart b/lib/i18n/strings_ko.g.dart index 5fcc8286..e3a8ed6d 100644 --- a/lib/i18n/strings_ko.g.dart +++ b/lib/i18n/strings_ko.g.dart @@ -74,6 +74,7 @@ class TranslationsKo with BaseTranslations implements T @override late final _TranslationsVideoSettingsKo videoSettings = _TranslationsVideoSettingsKo._(_root); @override late final _TranslationsExternalPlayerKo externalPlayer = _TranslationsExternalPlayerKo._(_root); @override late final _TranslationsMetadataEditKo metadataEdit = _TranslationsMetadataEditKo._(_root); + @override late final _TranslationsServerTasksKo serverTasks = _TranslationsServerTasksKo._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonKo implements TranslationsCommonEn { @override String get loadingServers => '서버 로딩 중...'; @override String get connectingToServers => '서버 연결 중...'; @override String get startingOfflineMode => '오프라인 모드 시작 중...'; + @override String get loading => '로딩 중...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditKo implements TranslationsMetadataEditEn { @override String get alwaysEnabled => '항상 활성화'; } +// Path: serverTasks +class _TranslationsServerTasksKo implements TranslationsServerTasksEn { + _TranslationsServerTasksKo._(this._root); + + final TranslationsKo _root; // ignore: unused_field + + // Translations + @override String get title => '서버 작업'; + @override String get failedToLoad => '작업을 불러올 수 없습니다'; + @override String get noTasks => '실행 중인 작업 없음'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsKo implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsKo._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsKo { 'common.loadingServers' => '서버 로딩 중...', 'common.connectingToServers' => '서버 연결 중...', 'common.startingOfflineMode' => '오프라인 모드 시작 중...', + 'common.loading' => '로딩 중...', 'screens.licenses' => '라이선스', 'screens.switchProfile' => '프로필 전환', 'screens.subtitleStyling' => '자막 스타일 설정', @@ -1796,9 +1811,9 @@ extension on TranslationsKo { 'liveTv.evening' => '저녁', 'liveTv.lateNight' => '심야 방송', 'liveTv.whatsOn' => '지금 방송 중', - 'liveTv.watchChannel' => '채널 시청', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => '채널 시청', 'liveTv.favorites' => '즐겨찾기', 'collections.title' => '컬렉션', 'collections.collection' => '컬렉션', @@ -2085,6 +2100,9 @@ extension on TranslationsKo { 'metadataEdit.manuallySelected' => '수동 선택', 'metadataEdit.shownWithForeignAudio' => '외국어 오디오 시 표시', 'metadataEdit.alwaysEnabled' => '항상 활성화', + 'serverTasks.title' => '서버 작업', + 'serverTasks.failedToLoad' => '작업을 불러올 수 없습니다', + 'serverTasks.noTasks' => '실행 중인 작업 없음', _ => null, }; } diff --git a/lib/i18n/strings_nb.g.dart b/lib/i18n/strings_nb.g.dart index cb265005..d4dd2d6c 100644 --- a/lib/i18n/strings_nb.g.dart +++ b/lib/i18n/strings_nb.g.dart @@ -74,6 +74,7 @@ class TranslationsNb with BaseTranslations implements T @override late final _TranslationsVideoSettingsNb videoSettings = _TranslationsVideoSettingsNb._(_root); @override late final _TranslationsExternalPlayerNb externalPlayer = _TranslationsExternalPlayerNb._(_root); @override late final _TranslationsMetadataEditNb metadataEdit = _TranslationsMetadataEditNb._(_root); + @override late final _TranslationsServerTasksNb serverTasks = _TranslationsServerTasksNb._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonNb implements TranslationsCommonEn { @override String get loadingServers => 'Laster servere...'; @override String get connectingToServers => 'Kobler til servere...'; @override String get startingOfflineMode => 'Starter frakoblet modus...'; + @override String get loading => 'Laster...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditNb implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Alltid aktivert'; } +// Path: serverTasks +class _TranslationsServerTasksNb implements TranslationsServerTasksEn { + _TranslationsServerTasksNb._(this._root); + + final TranslationsNb _root; // ignore: unused_field + + // Translations + @override String get title => 'Serveroppgaver'; + @override String get failedToLoad => 'Kunne ikke laste oppgaver'; + @override String get noTasks => 'Ingen oppgaver kjører'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsNb implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsNb._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsNb { 'common.loadingServers' => 'Laster servere...', 'common.connectingToServers' => 'Kobler til servere...', 'common.startingOfflineMode' => 'Starter frakoblet modus...', + 'common.loading' => 'Laster...', 'screens.licenses' => 'Lisenser', 'screens.switchProfile' => 'Bytt profil', 'screens.subtitleStyling' => 'Undertekststil', @@ -1796,9 +1811,9 @@ extension on TranslationsNb { 'liveTv.evening' => 'Kveld', 'liveTv.lateNight' => 'Sen kveld', 'liveTv.whatsOn' => 'Hva går nå', - 'liveTv.watchChannel' => 'Se kanal', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Se kanal', 'liveTv.favorites' => 'Favoritter', 'collections.title' => 'Samlinger', 'collections.collection' => 'Samling', @@ -2085,6 +2100,9 @@ extension on TranslationsNb { 'metadataEdit.manuallySelected' => 'Manuelt valgt', 'metadataEdit.shownWithForeignAudio' => 'Vist med fremmedspråklig lyd', 'metadataEdit.alwaysEnabled' => 'Alltid aktivert', + 'serverTasks.title' => 'Serveroppgaver', + 'serverTasks.failedToLoad' => 'Kunne ikke laste oppgaver', + 'serverTasks.noTasks' => 'Ingen oppgaver kjører', _ => null, }; } diff --git a/lib/i18n/strings_nl.g.dart b/lib/i18n/strings_nl.g.dart index 70202177..22e5ed9b 100644 --- a/lib/i18n/strings_nl.g.dart +++ b/lib/i18n/strings_nl.g.dart @@ -74,6 +74,7 @@ class TranslationsNl with BaseTranslations implements T @override late final _TranslationsVideoSettingsNl videoSettings = _TranslationsVideoSettingsNl._(_root); @override late final _TranslationsExternalPlayerNl externalPlayer = _TranslationsExternalPlayerNl._(_root); @override late final _TranslationsMetadataEditNl metadataEdit = _TranslationsMetadataEditNl._(_root); + @override late final _TranslationsServerTasksNl serverTasks = _TranslationsServerTasksNl._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonNl implements TranslationsCommonEn { @override String get loadingServers => 'Servers laden...'; @override String get connectingToServers => 'Verbinden met servers...'; @override String get startingOfflineMode => 'Offlinemodus starten...'; + @override String get loading => 'Laden...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditNl implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Altijd ingeschakeld'; } +// Path: serverTasks +class _TranslationsServerTasksNl implements TranslationsServerTasksEn { + _TranslationsServerTasksNl._(this._root); + + final TranslationsNl _root; // ignore: unused_field + + // Translations + @override String get title => 'Servertaken'; + @override String get failedToLoad => 'Taken konden niet worden geladen'; + @override String get noTasks => 'Geen actieve taken'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsNl implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsNl._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsNl { 'common.loadingServers' => 'Servers laden...', 'common.connectingToServers' => 'Verbinden met servers...', 'common.startingOfflineMode' => 'Offlinemodus starten...', + 'common.loading' => 'Laden...', 'screens.licenses' => 'Licenties', 'screens.switchProfile' => 'Wissel van profiel', 'screens.subtitleStyling' => 'Ondertitel opmaak', @@ -1796,9 +1811,9 @@ extension on TranslationsNl { 'liveTv.evening' => 'Avond', 'liveTv.lateNight' => 'Late avond', 'liveTv.whatsOn' => 'Nu op TV', - 'liveTv.watchChannel' => 'Kanaal bekijken', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Kanaal bekijken', 'liveTv.favorites' => 'Favorieten', 'downloads.title' => 'Downloads', 'downloads.manage' => 'Beheren', @@ -2085,6 +2100,9 @@ extension on TranslationsNl { 'metadataEdit.manuallySelected' => 'Handmatig geselecteerd', 'metadataEdit.shownWithForeignAudio' => 'Weergeven bij anderstalig geluid', 'metadataEdit.alwaysEnabled' => 'Altijd ingeschakeld', + 'serverTasks.title' => 'Servertaken', + 'serverTasks.failedToLoad' => 'Taken konden niet worden geladen', + 'serverTasks.noTasks' => 'Geen actieve taken', _ => null, }; } diff --git a/lib/i18n/strings_pl.g.dart b/lib/i18n/strings_pl.g.dart index 05d2a137..2c505daf 100644 --- a/lib/i18n/strings_pl.g.dart +++ b/lib/i18n/strings_pl.g.dart @@ -74,6 +74,7 @@ class TranslationsPl with BaseTranslations implements T @override late final _TranslationsVideoSettingsPl videoSettings = _TranslationsVideoSettingsPl._(_root); @override late final _TranslationsExternalPlayerPl externalPlayer = _TranslationsExternalPlayerPl._(_root); @override late final _TranslationsMetadataEditPl metadataEdit = _TranslationsMetadataEditPl._(_root); + @override late final _TranslationsServerTasksPl serverTasks = _TranslationsServerTasksPl._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonPl implements TranslationsCommonEn { @override String get loadingServers => 'Ładowanie serwerów...'; @override String get connectingToServers => 'Łączenie z serwerami...'; @override String get startingOfflineMode => 'Uruchamianie trybu offline...'; + @override String get loading => 'Ładowanie...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditPl implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Zawsze włączone'; } +// Path: serverTasks +class _TranslationsServerTasksPl implements TranslationsServerTasksEn { + _TranslationsServerTasksPl._(this._root); + + final TranslationsPl _root; // ignore: unused_field + + // Translations + @override String get title => 'Zadania serwera'; + @override String get failedToLoad => 'Nie udało się załadować zadań'; + @override String get noTasks => 'Brak uruchomionych zadań'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsPl implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsPl._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsPl { 'common.loadingServers' => 'Ładowanie serwerów...', 'common.connectingToServers' => 'Łączenie z serwerami...', 'common.startingOfflineMode' => 'Uruchamianie trybu offline...', + 'common.loading' => 'Ładowanie...', 'screens.licenses' => 'Licencje', 'screens.switchProfile' => 'Zmień profil', 'screens.subtitleStyling' => 'Styl napisów', @@ -1796,9 +1811,9 @@ extension on TranslationsPl { 'liveTv.evening' => 'Wieczorem', 'liveTv.lateNight' => 'Późna noc', 'liveTv.whatsOn' => 'Co leci', - 'liveTv.watchChannel' => 'Oglądaj kanał', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Oglądaj kanał', 'liveTv.favorites' => 'Ulubione', 'collections.title' => 'Kolekcje', 'collections.collection' => 'Kolekcja', @@ -2085,6 +2100,9 @@ extension on TranslationsPl { 'metadataEdit.manuallySelected' => 'Wybrany ręcznie', 'metadataEdit.shownWithForeignAudio' => 'Wyświetlane przy obcojęzycznym audio', 'metadataEdit.alwaysEnabled' => 'Zawsze włączone', + 'serverTasks.title' => 'Zadania serwera', + 'serverTasks.failedToLoad' => 'Nie udało się załadować zadań', + 'serverTasks.noTasks' => 'Brak uruchomionych zadań', _ => null, }; } diff --git a/lib/i18n/strings_pt.g.dart b/lib/i18n/strings_pt.g.dart index 92197766..c1b43d36 100644 --- a/lib/i18n/strings_pt.g.dart +++ b/lib/i18n/strings_pt.g.dart @@ -74,6 +74,7 @@ class TranslationsPt with BaseTranslations implements T @override late final _TranslationsVideoSettingsPt videoSettings = _TranslationsVideoSettingsPt._(_root); @override late final _TranslationsExternalPlayerPt externalPlayer = _TranslationsExternalPlayerPt._(_root); @override late final _TranslationsMetadataEditPt metadataEdit = _TranslationsMetadataEditPt._(_root); + @override late final _TranslationsServerTasksPt serverTasks = _TranslationsServerTasksPt._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonPt implements TranslationsCommonEn { @override String get loadingServers => 'Carregando servidores...'; @override String get connectingToServers => 'Conectando aos servidores...'; @override String get startingOfflineMode => 'Iniciando modo offline...'; + @override String get loading => 'Carregando...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditPt implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Sempre ativado'; } +// Path: serverTasks +class _TranslationsServerTasksPt implements TranslationsServerTasksEn { + _TranslationsServerTasksPt._(this._root); + + final TranslationsPt _root; // ignore: unused_field + + // Translations + @override String get title => 'Tarefas do servidor'; + @override String get failedToLoad => 'Falha ao carregar tarefas'; + @override String get noTasks => 'Nenhuma tarefa em execução'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsPt implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsPt._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsPt { 'common.loadingServers' => 'Carregando servidores...', 'common.connectingToServers' => 'Conectando aos servidores...', 'common.startingOfflineMode' => 'Iniciando modo offline...', + 'common.loading' => 'Carregando...', 'screens.licenses' => 'Licenças', 'screens.switchProfile' => 'Trocar Perfil', 'screens.subtitleStyling' => 'Estilo de Legendas', @@ -1796,9 +1811,9 @@ extension on TranslationsPt { 'liveTv.evening' => 'Noite', 'liveTv.lateNight' => 'Madrugada', 'liveTv.whatsOn' => 'O que Está Passando', - 'liveTv.watchChannel' => 'Assistir Canal', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Assistir Canal', 'liveTv.favorites' => 'Favoritos', 'collections.title' => 'Coleções', 'collections.collection' => 'Coleção', @@ -2085,6 +2100,9 @@ extension on TranslationsPt { 'metadataEdit.manuallySelected' => 'Seleção manual', 'metadataEdit.shownWithForeignAudio' => 'Exibir com áudio estrangeiro', 'metadataEdit.alwaysEnabled' => 'Sempre ativado', + 'serverTasks.title' => 'Tarefas do servidor', + 'serverTasks.failedToLoad' => 'Falha ao carregar tarefas', + 'serverTasks.noTasks' => 'Nenhuma tarefa em execução', _ => null, }; } diff --git a/lib/i18n/strings_ru.g.dart b/lib/i18n/strings_ru.g.dart index 1a2c72bd..a6d206c1 100644 --- a/lib/i18n/strings_ru.g.dart +++ b/lib/i18n/strings_ru.g.dart @@ -74,6 +74,7 @@ class TranslationsRu with BaseTranslations implements T @override late final _TranslationsVideoSettingsRu videoSettings = _TranslationsVideoSettingsRu._(_root); @override late final _TranslationsExternalPlayerRu externalPlayer = _TranslationsExternalPlayerRu._(_root); @override late final _TranslationsMetadataEditRu metadataEdit = _TranslationsMetadataEditRu._(_root); + @override late final _TranslationsServerTasksRu serverTasks = _TranslationsServerTasksRu._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonRu implements TranslationsCommonEn { @override String get loadingServers => 'Загрузка серверов...'; @override String get connectingToServers => 'Подключение к серверам...'; @override String get startingOfflineMode => 'Запуск автономного режима...'; + @override String get loading => 'Загрузка...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditRu implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Всегда включены'; } +// Path: serverTasks +class _TranslationsServerTasksRu implements TranslationsServerTasksEn { + _TranslationsServerTasksRu._(this._root); + + final TranslationsRu _root; // ignore: unused_field + + // Translations + @override String get title => 'Задачи сервера'; + @override String get failedToLoad => 'Не удалось загрузить задачи'; + @override String get noTasks => 'Нет выполняемых задач'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsRu implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsRu._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsRu { 'common.loadingServers' => 'Загрузка серверов...', 'common.connectingToServers' => 'Подключение к серверам...', 'common.startingOfflineMode' => 'Запуск автономного режима...', + 'common.loading' => 'Загрузка...', 'screens.licenses' => 'Лицензии', 'screens.switchProfile' => 'Сменить профиль', 'screens.subtitleStyling' => 'Стиль субтитров', @@ -1796,9 +1811,9 @@ extension on TranslationsRu { 'liveTv.evening' => 'Вечер', 'liveTv.lateNight' => 'Поздний вечер', 'liveTv.whatsOn' => 'Что идёт', - 'liveTv.watchChannel' => 'Смотреть канал', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Смотреть канал', 'liveTv.favorites' => 'Избранное', 'collections.title' => 'Коллекции', 'collections.collection' => 'Коллекция', @@ -2085,6 +2100,9 @@ extension on TranslationsRu { 'metadataEdit.manuallySelected' => 'Выбор вручную', 'metadataEdit.shownWithForeignAudio' => 'Показывать при иноязычном аудио', 'metadataEdit.alwaysEnabled' => 'Всегда включены', + 'serverTasks.title' => 'Задачи сервера', + 'serverTasks.failedToLoad' => 'Не удалось загрузить задачи', + 'serverTasks.noTasks' => 'Нет выполняемых задач', _ => null, }; } diff --git a/lib/i18n/strings_sv.g.dart b/lib/i18n/strings_sv.g.dart index 5e9888fa..20102852 100644 --- a/lib/i18n/strings_sv.g.dart +++ b/lib/i18n/strings_sv.g.dart @@ -74,6 +74,7 @@ class TranslationsSv with BaseTranslations implements T @override late final _TranslationsVideoSettingsSv videoSettings = _TranslationsVideoSettingsSv._(_root); @override late final _TranslationsExternalPlayerSv externalPlayer = _TranslationsExternalPlayerSv._(_root); @override late final _TranslationsMetadataEditSv metadataEdit = _TranslationsMetadataEditSv._(_root); + @override late final _TranslationsServerTasksSv serverTasks = _TranslationsServerTasksSv._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonSv implements TranslationsCommonEn { @override String get loadingServers => 'Laddar servrar...'; @override String get connectingToServers => 'Ansluter till servrar...'; @override String get startingOfflineMode => 'Startar offlineläge...'; + @override String get loading => 'Laddar...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditSv implements TranslationsMetadataEditEn { @override String get alwaysEnabled => 'Alltid aktiverad'; } +// Path: serverTasks +class _TranslationsServerTasksSv implements TranslationsServerTasksEn { + _TranslationsServerTasksSv._(this._root); + + final TranslationsSv _root; // ignore: unused_field + + // Translations + @override String get title => 'Serveruppgifter'; + @override String get failedToLoad => 'Kunde inte ladda uppgifter'; + @override String get noTasks => 'Inga pågående uppgifter'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsSv implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsSv._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsSv { 'common.loadingServers' => 'Laddar servrar...', 'common.connectingToServers' => 'Ansluter till servrar...', 'common.startingOfflineMode' => 'Startar offlineläge...', + 'common.loading' => 'Laddar...', 'screens.licenses' => 'Licenser', 'screens.switchProfile' => 'Byt profil', 'screens.subtitleStyling' => 'Undertext-styling', @@ -1796,9 +1811,9 @@ extension on TranslationsSv { 'liveTv.evening' => 'Kväll', 'liveTv.lateNight' => 'Sen kväll', 'liveTv.whatsOn' => 'På TV nu', - 'liveTv.watchChannel' => 'Titta på kanal', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => 'Titta på kanal', 'liveTv.favorites' => 'Favoriter', 'downloads.title' => 'Nedladdningar', 'downloads.manage' => 'Hantera', @@ -2085,6 +2100,9 @@ extension on TranslationsSv { 'metadataEdit.manuallySelected' => 'Manuellt vald', 'metadataEdit.shownWithForeignAudio' => 'Visas vid främmande ljud', 'metadataEdit.alwaysEnabled' => 'Alltid aktiverad', + 'serverTasks.title' => 'Serveruppgifter', + 'serverTasks.failedToLoad' => 'Kunde inte ladda uppgifter', + 'serverTasks.noTasks' => 'Inga pågående uppgifter', _ => null, }; } diff --git a/lib/i18n/strings_zh.g.dart b/lib/i18n/strings_zh.g.dart index 809eef08..c7d3494e 100644 --- a/lib/i18n/strings_zh.g.dart +++ b/lib/i18n/strings_zh.g.dart @@ -74,6 +74,7 @@ class TranslationsZh with BaseTranslations implements T @override late final _TranslationsVideoSettingsZh videoSettings = _TranslationsVideoSettingsZh._(_root); @override late final _TranslationsExternalPlayerZh externalPlayer = _TranslationsExternalPlayerZh._(_root); @override late final _TranslationsMetadataEditZh metadataEdit = _TranslationsMetadataEditZh._(_root); + @override late final _TranslationsServerTasksZh serverTasks = _TranslationsServerTasksZh._(_root); } // Path: app @@ -151,6 +152,7 @@ class _TranslationsCommonZh implements TranslationsCommonEn { @override String get loadingServers => '正在加载服务器...'; @override String get connectingToServers => '正在连接服务器...'; @override String get startingOfflineMode => '正在启动离线模式...'; + @override String get loading => '加载中...'; } // Path: screens @@ -1108,6 +1110,18 @@ class _TranslationsMetadataEditZh implements TranslationsMetadataEditEn { @override String get alwaysEnabled => '始终启用'; } +// Path: serverTasks +class _TranslationsServerTasksZh implements TranslationsServerTasksEn { + _TranslationsServerTasksZh._(this._root); + + final TranslationsZh _root; // ignore: unused_field + + // Translations + @override String get title => '服务器任务'; + @override String get failedToLoad => '加载任务失败'; + @override String get noTasks => '没有正在运行的任务'; +} + // Path: hotkeys.actions class _TranslationsHotkeysActionsZh implements TranslationsHotkeysActionsEn { _TranslationsHotkeysActionsZh._(this._root); @@ -1335,6 +1349,7 @@ extension on TranslationsZh { 'common.loadingServers' => '正在加载服务器...', 'common.connectingToServers' => '正在连接服务器...', 'common.startingOfflineMode' => '正在启动离线模式...', + 'common.loading' => '加载中...', 'screens.licenses' => '许可证', 'screens.switchProfile' => '切换用户', 'screens.subtitleStyling' => '字幕样式', @@ -1796,9 +1811,9 @@ extension on TranslationsZh { 'liveTv.evening' => '晚上', 'liveTv.lateNight' => '深夜', 'liveTv.whatsOn' => '正在播出', - 'liveTv.watchChannel' => '观看频道', _ => null, } ?? switch (path) { + 'liveTv.watchChannel' => '观看频道', 'liveTv.favorites' => '收藏', 'downloads.title' => '下载', 'downloads.manage' => '管理', @@ -2085,6 +2100,9 @@ extension on TranslationsZh { 'metadataEdit.manuallySelected' => '手动选择', 'metadataEdit.shownWithForeignAudio' => '外语音频时显示', 'metadataEdit.alwaysEnabled' => '始终启用', + 'serverTasks.title' => '服务器任务', + 'serverTasks.failedToLoad' => '加载任务失败', + 'serverTasks.noTasks' => '没有正在运行的任务', _ => null, }; } diff --git a/lib/i18n/sv.i18n.json b/lib/i18n/sv.i18n.json index 3354ee52..cee04d6e 100644 --- a/lib/i18n/sv.i18n.json +++ b/lib/i18n/sv.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "Uppdaterar servrar...", "loadingServers": "Laddar servrar...", "connectingToServers": "Ansluter till servrar...", - "startingOfflineMode": "Startar offlineläge..." + "startingOfflineMode": "Startar offlineläge...", + "loading": "Laddar..." }, "screens": { "licenses": "Licenser", @@ -884,5 +885,10 @@ "manuallySelected": "Manuellt vald", "shownWithForeignAudio": "Visas vid främmande ljud", "alwaysEnabled": "Alltid aktiverad" + }, + "serverTasks": { + "title": "Serveruppgifter", + "failedToLoad": "Kunde inte ladda uppgifter", + "noTasks": "Inga pågående uppgifter" } } diff --git a/lib/i18n/zh.i18n.json b/lib/i18n/zh.i18n.json index 1c74972e..8ee819fd 100644 --- a/lib/i18n/zh.i18n.json +++ b/lib/i18n/zh.i18n.json @@ -53,7 +53,8 @@ "refreshingServers": "正在刷新服务器...", "loadingServers": "正在加载服务器...", "connectingToServers": "正在连接服务器...", - "startingOfflineMode": "正在启动离线模式..." + "startingOfflineMode": "正在启动离线模式...", + "loading": "加载中..." }, "screens": { "licenses": "许可证", @@ -884,5 +885,10 @@ "manuallySelected": "手动选择", "shownWithForeignAudio": "外语音频时显示", "alwaysEnabled": "始终启用" + }, + "serverTasks": { + "title": "服务器任务", + "failedToLoad": "加载任务失败", + "noTasks": "没有正在运行的任务" } } diff --git a/lib/widgets/server_activities_button.dart b/lib/widgets/server_activities_button.dart index afc6b021..85b51f19 100644 --- a/lib/widgets/server_activities_button.dart +++ b/lib/widgets/server_activities_button.dart @@ -4,6 +4,8 @@ import 'package:flutter/material.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:provider/provider.dart'; +import '../focus/key_event_utils.dart'; +import '../i18n/strings.g.dart'; import '../theme/mono_tokens.dart'; import 'package:plezy/widgets/app_icon.dart'; import '../models/plex_activity.dart'; @@ -45,6 +47,12 @@ class _ServerActivitiesButtonState extends State { final _panelNotifier = ValueNotifier<_PanelData>(_PanelData.loading); Timer? _pollTimer; + @override + void deactivate() { + _removeOverlay(); + super.deactivate(); + } + @override void dispose() { _removeOverlay(); @@ -79,63 +87,53 @@ class _ServerActivitiesButtonState extends State { builder: (ctx) => _buildOverlay(ctx, right: right, top: top), ); Overlay.of(context).insert(_overlayEntry!); - _fetchActivities().then((_) { - if (mounted && _overlayEntry != null) { - _pollTimer = Timer.periodic(const Duration(seconds: 1), (_) => _silentRefresh()); - } - }); + _fetchActivities(); } - Future _fetchActivities() async { + Future> _loadFromServers() async { final multiServer = Provider.of(context, listen: false); final serverIds = multiServer.onlineServerIds; - try { - final futures = serverIds.map((serverId) async { - final client = multiServer.getClientForServer(serverId); - if (client == null) return null; - final activities = await client.getActivities(); - return _ServerResult( - serverId: serverId, - serverName: client.serverName ?? serverId, - activities: activities, - ); - }); - - final rawResults = await Future.wait(futures); - - if (!mounted) return; - _panelNotifier.value = _PanelData( - fetchState: _FetchState.loaded, - results: rawResults.whereType<_ServerResult>().toList(), + final futures = serverIds.map((serverId) async { + final client = multiServer.getClientForServer(serverId); + if (client == null) return null; + final activities = await client.getActivities(); + return _ServerResult( + serverId: serverId, + serverName: client.serverName ?? serverId, + activities: activities, ); + }); + + final rawResults = await Future.wait(futures); + return rawResults.whereType<_ServerResult>().toList(); + } + + Future _fetchActivities() async { + try { + final results = await _loadFromServers(); + if (!mounted) return; + _panelNotifier.value = _PanelData(fetchState: _FetchState.loaded, results: results); + _startPolling(); } catch (_) { if (!mounted) return; _panelNotifier.value = const _PanelData(fetchState: _FetchState.error, results: []); } } + void _startPolling() { + _pollTimer?.cancel(); + if (mounted && _overlayEntry != null) { + _pollTimer = Timer.periodic(const Duration(seconds: 3), (_) => _silentRefresh()); + } + } + Future _silentRefresh() async { if (!mounted) return; - final multiServer = Provider.of(context, listen: false); - final serverIds = multiServer.onlineServerIds; try { - final futures = serverIds.map((serverId) async { - final client = multiServer.getClientForServer(serverId); - if (client == null) return null; - final activities = await client.getActivities(); - return _ServerResult( - serverId: serverId, - serverName: client.serverName ?? serverId, - activities: activities, - ); - }); - final rawResults = await Future.wait(futures); + final results = await _loadFromServers(); if (!mounted) return; - _panelNotifier.value = _PanelData( - fetchState: _FetchState.loaded, - results: rawResults.whereType<_ServerResult>().toList(), - ); + _panelNotifier.value = _PanelData(fetchState: _FetchState.loaded, results: results); } catch (_) { // silently ignore poll errors } @@ -145,15 +143,15 @@ class _ServerActivitiesButtonState extends State { final multiServer = Provider.of(context, listen: false); final client = multiServer.getClientForServer(serverId); if (client == null) return; - await client.cancelActivity(uuid); + try { + await client.cancelActivity(uuid); + } catch (_) { + return; + } _pollTimer?.cancel(); _pollTimer = null; _panelNotifier.value = _PanelData.loading; - _fetchActivities().then((_) { - if (mounted && _overlayEntry != null) { - _pollTimer = Timer.periodic(const Duration(seconds: 1), (_) => _silentRefresh()); - } - }); + _fetchActivities(); } Widget _buildOverlay(BuildContext overlayContext, {required double right, required double top}) { @@ -168,9 +166,13 @@ class _ServerActivitiesButtonState extends State { Positioned( right: right, top: top, - child: ValueListenableBuilder<_PanelData>( - valueListenable: _panelNotifier, - builder: (context, data, _) => _buildPanel(context, data), + child: Focus( + autofocus: true, + onKeyEvent: (_, event) => handleBackKeyAction(event, _removeOverlay), + child: ValueListenableBuilder<_PanelData>( + valueListenable: _panelNotifier, + builder: (context, data, _) => _buildPanel(context, data), + ), ), ), ], @@ -210,10 +212,10 @@ class _ServerActivitiesButtonState extends State { padding: const EdgeInsets.fromLTRB(16, 10, 16, 10), child: Row( children: [ - AppIcon(Symbols.pending_actions_rounded, size: 18, color: theme.colorScheme.onSurface), + AppIcon(Symbols.monitor_heart_rounded, size: 18, color: theme.colorScheme.onSurface), const SizedBox(width: 8), Text( - 'Server Tasks', + t.serverTasks.title, style: theme.textTheme.titleSmall?.copyWith(fontWeight: FontWeight.bold), ), ], @@ -229,7 +231,7 @@ class _ServerActivitiesButtonState extends State { padding: const EdgeInsets.all(24), child: Center( child: Text( - 'Loading...', + t.common.loading, style: theme.textTheme.bodyMedium?.copyWith( color: theme.colorScheme.onSurface.withValues(alpha: 0.55), ), @@ -246,7 +248,7 @@ class _ServerActivitiesButtonState extends State { children: [ Icon(Icons.error_outline, color: theme.colorScheme.error), const SizedBox(height: 8), - Text('Failed to load tasks', style: theme.textTheme.bodyMedium), + Text(t.serverTasks.failedToLoad, style: theme.textTheme.bodyMedium), ], ), ); @@ -258,7 +260,7 @@ class _ServerActivitiesButtonState extends State { padding: const EdgeInsets.all(24), child: Center( child: Text( - 'No tasks running', + t.serverTasks.noTasks, style: theme.textTheme.bodyMedium?.copyWith( color: theme.colorScheme.onSurface.withValues(alpha: 0.55), ), @@ -352,7 +354,7 @@ class _ServerActivitiesButtonState extends State { icon: AppIcon(Symbols.close_rounded, size: 16, color: theme.colorScheme.onSurface), onPressed: () => _cancelActivity(serverId, activity.uuid), visualDensity: VisualDensity.compact, - tooltip: 'Cancel', + tooltip: t.common.cancel, ), ], ), @@ -363,9 +365,9 @@ class _ServerActivitiesButtonState extends State { Widget build(BuildContext context) { return IconButton( key: _buttonKey, - icon: const AppIcon(Symbols.pending_actions_rounded, color: Colors.white), + icon: const AppIcon(Symbols.monitor_heart_rounded, color: Colors.white), onPressed: _togglePanel, - tooltip: 'Server Tasks', + tooltip: t.serverTasks.title, ); } }