feat: configurable watch together relay server
This commit is contained in:
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Tilpas tastaturgenveje",
|
||||
"videoPlayerNavigation": "Videoafspillernavigation",
|
||||
"videoPlayerNavigationDescription": "Brug piletaster til at navigere videoafspillerkontroller",
|
||||
"watchTogetherRelay": "Watch Together-relay",
|
||||
"watchTogetherRelayDefault": "Standard",
|
||||
"watchTogetherRelayDescription": "Angiv en brugerdefineret relay-server til Watch Together. Alle deltagere skal bruge den samme server.",
|
||||
"watchTogetherRelayHint": "https://min-relay.eksempel.dk",
|
||||
"crashReporting": "Fejlrapportering",
|
||||
"crashReportingDescription": "Send fejlrapporter for at hjælpe med at forbedre appen",
|
||||
"debugLogging": "Fejlfindingslogning",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Tastenkürzel anpassen",
|
||||
"videoPlayerNavigation": "Videoplayer-Navigation",
|
||||
"videoPlayerNavigationDescription": "Pfeiltasten zur Navigation der Videoplayer-Steuerung verwenden",
|
||||
"watchTogetherRelay": "Gemeinsam Schauen Relay",
|
||||
"watchTogetherRelayDefault": "Standard",
|
||||
"watchTogetherRelayDescription": "Einen benutzerdefinierten Relay-Server für Gemeinsam Schauen festlegen. Alle Teilnehmer müssen denselben Server verwenden.",
|
||||
"watchTogetherRelayHint": "https://mein-relay.beispiel.de",
|
||||
"crashReporting": "Absturzberichte",
|
||||
"crashReportingDescription": "Absturzberichte senden, um die App zu verbessern",
|
||||
"debugLogging": "Debug-Protokollierung",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Customize keyboard shortcuts",
|
||||
"videoPlayerNavigation": "Video Player Navigation",
|
||||
"videoPlayerNavigationDescription": "Use arrow keys to navigate video player controls",
|
||||
"watchTogetherRelay": "Watch Together Relay",
|
||||
"watchTogetherRelayDefault": "Default",
|
||||
"watchTogetherRelayDescription": "Set a custom relay server for Watch Together. All participants must use the same server.",
|
||||
"watchTogetherRelayHint": "https://my-relay.example.com",
|
||||
"crashReporting": "Crash Reporting",
|
||||
"crashReportingDescription": "Send crash reports to help improve the app",
|
||||
"debugLogging": "Debug Logging",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Personalizar los atajos de teclado",
|
||||
"videoPlayerNavigation": "Navegación del Reproductor de Video",
|
||||
"videoPlayerNavigationDescription": "Usar las teclas de flecha para navegar por los controles del reproductor",
|
||||
"watchTogetherRelay": "Relay de Ver Juntos",
|
||||
"watchTogetherRelayDefault": "Predeterminado",
|
||||
"watchTogetherRelayDescription": "Configurar un servidor relay personalizado para Ver Juntos. Todos los participantes deben usar el mismo servidor.",
|
||||
"watchTogetherRelayHint": "https://mi-relay.ejemplo.com",
|
||||
"crashReporting": "Informes de Errores",
|
||||
"crashReportingDescription": "Enviar informes de errores para mejorar la aplicación",
|
||||
"debugLogging": "Registro de Depuración",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Personnaliser les raccourcis clavier",
|
||||
"videoPlayerNavigation": "Navigation dans le lecteur vidéo",
|
||||
"videoPlayerNavigationDescription": "Utilisez les touches fléchées pour naviguer dans les commandes du lecteur vidéo.",
|
||||
"watchTogetherRelay": "Relais Regarder Ensemble",
|
||||
"watchTogetherRelayDefault": "Par défaut",
|
||||
"watchTogetherRelayDescription": "Définir un serveur relais personnalisé pour Regarder Ensemble. Tous les participants doivent utiliser le même serveur.",
|
||||
"watchTogetherRelayHint": "https://mon-relais.exemple.fr",
|
||||
"crashReporting": "Rapports de plantage",
|
||||
"crashReportingDescription": "Envoyer des rapports de plantage pour améliorer l'application",
|
||||
"debugLogging": "Journalisation de débogage",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Personalizza le scorciatoie da tastiera",
|
||||
"videoPlayerNavigation": "Navigazione del lettore video",
|
||||
"videoPlayerNavigationDescription": "Usa i tasti freccia per navigare nei controlli del lettore video",
|
||||
"watchTogetherRelay": "Relay Guarda Insieme",
|
||||
"watchTogetherRelayDefault": "Predefinito",
|
||||
"watchTogetherRelayDescription": "Imposta un server relay personalizzato per Guarda Insieme. Tutti i partecipanti devono utilizzare lo stesso server.",
|
||||
"watchTogetherRelayHint": "https://mio-relay.esempio.it",
|
||||
"crashReporting": "Segnalazione errori",
|
||||
"crashReportingDescription": "Invia segnalazioni di errori per migliorare l'app",
|
||||
"debugLogging": "Log di debug",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "キーボードショートカットをカスタマイズ",
|
||||
"videoPlayerNavigation": "動画プレーヤーナビゲーション",
|
||||
"videoPlayerNavigationDescription": "矢印キーで動画プレーヤーコントロールを操作",
|
||||
"watchTogetherRelay": "一緒に視聴リレーサーバー",
|
||||
"watchTogetherRelayDefault": "デフォルト",
|
||||
"watchTogetherRelayDescription": "一緒に視聴用のカスタムリレーサーバーを設定します。すべての参加者が同じサーバーを使用する必要があります。",
|
||||
"watchTogetherRelayHint": "https://my-relay.example.com",
|
||||
"crashReporting": "クラッシュレポート",
|
||||
"crashReportingDescription": "アプリの改善に役立つクラッシュレポートを送信",
|
||||
"debugLogging": "デバッグログ",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "사용자 정의 키보드 단축키",
|
||||
"videoPlayerNavigation": "비디오 플레이어 탐색",
|
||||
"videoPlayerNavigationDescription": "방향 키를 사용하여 비디오 플레이어 컨트롤 탐색",
|
||||
"watchTogetherRelay": "함께 보기 릴레이",
|
||||
"watchTogetherRelayDefault": "기본값",
|
||||
"watchTogetherRelayDescription": "함께 보기에 사용할 사용자 지정 릴레이 서버를 설정합니다. 모든 참가자가 동일한 서버를 사용해야 합니다.",
|
||||
"watchTogetherRelayHint": "https://my-relay.example.com",
|
||||
"crashReporting": "충돌 보고",
|
||||
"crashReportingDescription": "앱 개선을 위해 충돌 보고서 전송",
|
||||
"debugLogging": "디버그 로깅",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Tilpass tastatursnarveier",
|
||||
"videoPlayerNavigation": "Videospillernavigering",
|
||||
"videoPlayerNavigationDescription": "Bruk piltaster for å navigere videospillerkontroller",
|
||||
"watchTogetherRelay": "Se Sammen-relay",
|
||||
"watchTogetherRelayDefault": "Standard",
|
||||
"watchTogetherRelayDescription": "Angi en egendefinert relay-server for Se Sammen. Alle deltakere må bruke den samme serveren.",
|
||||
"watchTogetherRelayHint": "https://min-relay.eksempel.no",
|
||||
"crashReporting": "Krasjrapportering",
|
||||
"crashReportingDescription": "Send krasjrapporter for å hjelpe med å forbedre appen",
|
||||
"debugLogging": "Feilsøkingslogging",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Pas toetsenbord sneltoetsen aan",
|
||||
"videoPlayerNavigation": "Videospeler navigatie",
|
||||
"videoPlayerNavigationDescription": "Gebruik pijltjestoetsen om door de videospeler bediening te navigeren",
|
||||
"watchTogetherRelay": "Samen Kijken Relay",
|
||||
"watchTogetherRelayDefault": "Standaard",
|
||||
"watchTogetherRelayDescription": "Stel een aangepaste relay-server in voor Samen Kijken. Alle deelnemers moeten dezelfde server gebruiken.",
|
||||
"watchTogetherRelayHint": "https://mijn-relay.voorbeeld.nl",
|
||||
"crashReporting": "Crashrapportage",
|
||||
"crashReportingDescription": "Crashrapporten verzenden om de app te verbeteren",
|
||||
"debugLogging": "Debug logging",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Dostosuj skróty klawiszowe",
|
||||
"videoPlayerNavigation": "Nawigacja odtwarzacza wideo",
|
||||
"videoPlayerNavigationDescription": "Użyj klawiszy strzałek do nawigacji kontrolkami odtwarzacza",
|
||||
"watchTogetherRelay": "Relay Oglądaj Razem",
|
||||
"watchTogetherRelayDefault": "Domyślny",
|
||||
"watchTogetherRelayDescription": "Ustaw niestandardowy serwer relay dla Oglądaj Razem. Wszyscy uczestnicy muszą korzystać z tego samego serwera.",
|
||||
"watchTogetherRelayHint": "https://moj-relay.przyklad.pl",
|
||||
"crashReporting": "Raportowanie błędów",
|
||||
"crashReportingDescription": "Wysyłaj raporty o błędach, aby pomóc ulepszyć aplikację",
|
||||
"debugLogging": "Logowanie debugowania",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Personalizar atalhos de teclado",
|
||||
"videoPlayerNavigation": "Navegação do Player de Vídeo",
|
||||
"videoPlayerNavigationDescription": "Usar teclas de seta para navegar nos controles do player",
|
||||
"watchTogetherRelay": "Relay do Assistir Juntos",
|
||||
"watchTogetherRelayDefault": "Padrão",
|
||||
"watchTogetherRelayDescription": "Definir um servidor relay personalizado para Assistir Juntos. Todos os participantes devem usar o mesmo servidor.",
|
||||
"watchTogetherRelayHint": "https://meu-relay.exemplo.com.br",
|
||||
"crashReporting": "Relatório de Erros",
|
||||
"crashReportingDescription": "Enviar relatórios de erros para ajudar a melhorar o app",
|
||||
"debugLogging": "Log de Depuração",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Настроить горячие клавиши",
|
||||
"videoPlayerNavigation": "Навигация видеоплеера",
|
||||
"videoPlayerNavigationDescription": "Использовать клавиши стрелок для навигации по элементам управления плеером",
|
||||
"watchTogetherRelay": "Relay совместного просмотра",
|
||||
"watchTogetherRelayDefault": "По умолчанию",
|
||||
"watchTogetherRelayDescription": "Указать пользовательский relay-сервер для совместного просмотра. Все участники должны использовать один и тот же сервер.",
|
||||
"watchTogetherRelayHint": "https://my-relay.example.com",
|
||||
"crashReporting": "Отчёты об ошибках",
|
||||
"crashReportingDescription": "Отправлять отчёты об ошибках для улучшения приложения",
|
||||
"debugLogging": "Журнал отладки",
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 15
|
||||
/// Strings: 12045 (803 per locale)
|
||||
/// Strings: 12105 (807 per locale)
|
||||
///
|
||||
/// Built on 2026-03-27 at 16:34 UTC
|
||||
/// Built on 2026-03-28 at 13:35 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint, unused_import
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsDa implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Tilpas tastaturgenveje';
|
||||
@override String get videoPlayerNavigation => 'Videoafspillernavigation';
|
||||
@override String get videoPlayerNavigationDescription => 'Brug piletaster til at navigere videoafspillerkontroller';
|
||||
@override String get watchTogetherRelay => 'Watch Together-relay';
|
||||
@override String get watchTogetherRelayDefault => 'Standard';
|
||||
@override String get watchTogetherRelayDescription => 'Angiv en brugerdefineret relay-server til Watch Together. Alle deltagere skal bruge den samme server.';
|
||||
@override String get watchTogetherRelayHint => 'https://min-relay.eksempel.dk';
|
||||
@override String get crashReporting => 'Fejlrapportering';
|
||||
@override String get crashReportingDescription => 'Send fejlrapporter for at hjælpe med at forbedre appen';
|
||||
@override String get debugLogging => 'Fejlfindingslogning';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsDa {
|
||||
'settings.keyboardShortcutsDescription' => 'Tilpas tastaturgenveje',
|
||||
'settings.videoPlayerNavigation' => 'Videoafspillernavigation',
|
||||
'settings.videoPlayerNavigationDescription' => 'Brug piletaster til at navigere videoafspillerkontroller',
|
||||
'settings.watchTogetherRelay' => 'Watch Together-relay',
|
||||
'settings.watchTogetherRelayDefault' => 'Standard',
|
||||
'settings.watchTogetherRelayDescription' => 'Angiv en brugerdefineret relay-server til Watch Together. Alle deltagere skal bruge den samme server.',
|
||||
'settings.watchTogetherRelayHint' => 'https://min-relay.eksempel.dk',
|
||||
'settings.crashReporting' => 'Fejlrapportering',
|
||||
'settings.crashReportingDescription' => 'Send fejlrapporter for at hjælpe med at forbedre appen',
|
||||
'settings.debugLogging' => 'Fejlfindingslogning',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsDa {
|
||||
'liveTv.today' => 'I dag',
|
||||
'liveTv.midnight' => 'Midnat',
|
||||
'liveTv.overnight' => 'Nat',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Morgen',
|
||||
'liveTv.daytime' => 'Dagtid',
|
||||
'liveTv.evening' => 'Aften',
|
||||
'liveTv.lateNight' => 'Sen aften',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'Hvad der kører',
|
||||
'liveTv.watchChannel' => 'Se kanal',
|
||||
'liveTv.favorites' => 'Favoritter',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsDe implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Tastenkürzel anpassen';
|
||||
@override String get videoPlayerNavigation => 'Videoplayer-Navigation';
|
||||
@override String get videoPlayerNavigationDescription => 'Pfeiltasten zur Navigation der Videoplayer-Steuerung verwenden';
|
||||
@override String get watchTogetherRelay => 'Gemeinsam Schauen Relay';
|
||||
@override String get watchTogetherRelayDefault => 'Standard';
|
||||
@override String get watchTogetherRelayDescription => 'Einen benutzerdefinierten Relay-Server für Gemeinsam Schauen festlegen. Alle Teilnehmer müssen denselben Server verwenden.';
|
||||
@override String get watchTogetherRelayHint => 'https://mein-relay.beispiel.de';
|
||||
@override String get crashReporting => 'Absturzberichte';
|
||||
@override String get crashReportingDescription => 'Absturzberichte senden, um die App zu verbessern';
|
||||
@override String get debugLogging => 'Debug-Protokollierung';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsDe {
|
||||
'settings.keyboardShortcutsDescription' => 'Tastenkürzel anpassen',
|
||||
'settings.videoPlayerNavigation' => 'Videoplayer-Navigation',
|
||||
'settings.videoPlayerNavigationDescription' => 'Pfeiltasten zur Navigation der Videoplayer-Steuerung verwenden',
|
||||
'settings.watchTogetherRelay' => 'Gemeinsam Schauen Relay',
|
||||
'settings.watchTogetherRelayDefault' => 'Standard',
|
||||
'settings.watchTogetherRelayDescription' => 'Einen benutzerdefinierten Relay-Server für Gemeinsam Schauen festlegen. Alle Teilnehmer müssen denselben Server verwenden.',
|
||||
'settings.watchTogetherRelayHint' => 'https://mein-relay.beispiel.de',
|
||||
'settings.crashReporting' => 'Absturzberichte',
|
||||
'settings.crashReportingDescription' => 'Absturzberichte senden, um die App zu verbessern',
|
||||
'settings.debugLogging' => 'Debug-Protokollierung',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsDe {
|
||||
'liveTv.today' => 'Heute',
|
||||
'liveTv.midnight' => 'Mitternacht',
|
||||
'liveTv.overnight' => 'Nacht',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Morgen',
|
||||
'liveTv.daytime' => 'Tagsüber',
|
||||
'liveTv.evening' => 'Abend',
|
||||
'liveTv.lateNight' => 'Spätnacht',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'Jetzt im TV',
|
||||
'liveTv.watchChannel' => 'Kanal ansehen',
|
||||
'liveTv.favorites' => 'Favoriten',
|
||||
|
||||
@@ -553,6 +553,18 @@ class TranslationsSettingsEn {
|
||||
/// en: 'Use arrow keys to navigate video player controls'
|
||||
String get videoPlayerNavigationDescription => 'Use arrow keys to navigate video player controls';
|
||||
|
||||
/// en: 'Watch Together Relay'
|
||||
String get watchTogetherRelay => 'Watch Together Relay';
|
||||
|
||||
/// en: 'Default'
|
||||
String get watchTogetherRelayDefault => 'Default';
|
||||
|
||||
/// en: 'Set a custom relay server for Watch Together. All participants must use the same server.'
|
||||
String get watchTogetherRelayDescription => 'Set a custom relay server for Watch Together. All participants must use the same server.';
|
||||
|
||||
/// en: 'https://my-relay.example.com'
|
||||
String get watchTogetherRelayHint => 'https://my-relay.example.com';
|
||||
|
||||
/// en: 'Crash Reporting'
|
||||
String get crashReporting => 'Crash Reporting';
|
||||
|
||||
@@ -3053,6 +3065,10 @@ extension on Translations {
|
||||
'settings.keyboardShortcutsDescription' => 'Customize keyboard shortcuts',
|
||||
'settings.videoPlayerNavigation' => 'Video Player Navigation',
|
||||
'settings.videoPlayerNavigationDescription' => 'Use arrow keys to navigate video player controls',
|
||||
'settings.watchTogetherRelay' => 'Watch Together Relay',
|
||||
'settings.watchTogetherRelayDefault' => 'Default',
|
||||
'settings.watchTogetherRelayDescription' => 'Set a custom relay server for Watch Together. All participants must use the same server.',
|
||||
'settings.watchTogetherRelayHint' => 'https://my-relay.example.com',
|
||||
'settings.crashReporting' => 'Crash Reporting',
|
||||
'settings.crashReportingDescription' => 'Send crash reports to help improve the app',
|
||||
'settings.debugLogging' => 'Debug Logging',
|
||||
@@ -3421,12 +3437,12 @@ extension on Translations {
|
||||
'liveTv.today' => 'Today',
|
||||
'liveTv.midnight' => 'Midnight',
|
||||
'liveTv.overnight' => 'Overnight',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Morning',
|
||||
'liveTv.daytime' => 'Daytime',
|
||||
'liveTv.evening' => 'Evening',
|
||||
'liveTv.lateNight' => 'Late Night',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'What\'s On',
|
||||
'liveTv.watchChannel' => 'Watch Channel',
|
||||
'liveTv.favorites' => 'Favorites',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsEs implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Personalizar los atajos de teclado';
|
||||
@override String get videoPlayerNavigation => 'Navegación del Reproductor de Video';
|
||||
@override String get videoPlayerNavigationDescription => 'Usar las teclas de flecha para navegar por los controles del reproductor';
|
||||
@override String get watchTogetherRelay => 'Relay de Ver Juntos';
|
||||
@override String get watchTogetherRelayDefault => 'Predeterminado';
|
||||
@override String get watchTogetherRelayDescription => 'Configurar un servidor relay personalizado para Ver Juntos. Todos los participantes deben usar el mismo servidor.';
|
||||
@override String get watchTogetherRelayHint => 'https://mi-relay.ejemplo.com';
|
||||
@override String get crashReporting => 'Informes de Errores';
|
||||
@override String get crashReportingDescription => 'Enviar informes de errores para mejorar la aplicación';
|
||||
@override String get debugLogging => 'Registro de Depuración';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsEs {
|
||||
'settings.keyboardShortcutsDescription' => 'Personalizar los atajos de teclado',
|
||||
'settings.videoPlayerNavigation' => 'Navegación del Reproductor de Video',
|
||||
'settings.videoPlayerNavigationDescription' => 'Usar las teclas de flecha para navegar por los controles del reproductor',
|
||||
'settings.watchTogetherRelay' => 'Relay de Ver Juntos',
|
||||
'settings.watchTogetherRelayDefault' => 'Predeterminado',
|
||||
'settings.watchTogetherRelayDescription' => 'Configurar un servidor relay personalizado para Ver Juntos. Todos los participantes deben usar el mismo servidor.',
|
||||
'settings.watchTogetherRelayHint' => 'https://mi-relay.ejemplo.com',
|
||||
'settings.crashReporting' => 'Informes de Errores',
|
||||
'settings.crashReportingDescription' => 'Enviar informes de errores para mejorar la aplicación',
|
||||
'settings.debugLogging' => 'Registro de Depuración',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsEs {
|
||||
'liveTv.today' => 'Hoy',
|
||||
'liveTv.midnight' => 'Medianoche',
|
||||
'liveTv.overnight' => 'Madrugada',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Mañana',
|
||||
'liveTv.daytime' => 'Día',
|
||||
'liveTv.evening' => 'Noche',
|
||||
'liveTv.lateNight' => 'Trasnoche',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'En emisión',
|
||||
'liveTv.watchChannel' => 'Ver canal',
|
||||
'liveTv.favorites' => 'Favoritos',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsFr implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Personnaliser les raccourcis clavier';
|
||||
@override String get videoPlayerNavigation => 'Navigation dans le lecteur vidéo';
|
||||
@override String get videoPlayerNavigationDescription => 'Utilisez les touches fléchées pour naviguer dans les commandes du lecteur vidéo.';
|
||||
@override String get watchTogetherRelay => 'Relais Regarder Ensemble';
|
||||
@override String get watchTogetherRelayDefault => 'Par défaut';
|
||||
@override String get watchTogetherRelayDescription => 'Définir un serveur relais personnalisé pour Regarder Ensemble. Tous les participants doivent utiliser le même serveur.';
|
||||
@override String get watchTogetherRelayHint => 'https://mon-relais.exemple.fr';
|
||||
@override String get crashReporting => 'Rapports de plantage';
|
||||
@override String get crashReportingDescription => 'Envoyer des rapports de plantage pour améliorer l\'application';
|
||||
@override String get debugLogging => 'Journalisation de débogage';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsFr {
|
||||
'settings.keyboardShortcutsDescription' => 'Personnaliser les raccourcis clavier',
|
||||
'settings.videoPlayerNavigation' => 'Navigation dans le lecteur vidéo',
|
||||
'settings.videoPlayerNavigationDescription' => 'Utilisez les touches fléchées pour naviguer dans les commandes du lecteur vidéo.',
|
||||
'settings.watchTogetherRelay' => 'Relais Regarder Ensemble',
|
||||
'settings.watchTogetherRelayDefault' => 'Par défaut',
|
||||
'settings.watchTogetherRelayDescription' => 'Définir un serveur relais personnalisé pour Regarder Ensemble. Tous les participants doivent utiliser le même serveur.',
|
||||
'settings.watchTogetherRelayHint' => 'https://mon-relais.exemple.fr',
|
||||
'settings.crashReporting' => 'Rapports de plantage',
|
||||
'settings.crashReportingDescription' => 'Envoyer des rapports de plantage pour améliorer l\'application',
|
||||
'settings.debugLogging' => 'Journalisation de débogage',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsFr {
|
||||
'liveTv.today' => 'Aujourd\'hui',
|
||||
'liveTv.midnight' => 'Minuit',
|
||||
'liveTv.overnight' => 'Nuit',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Matin',
|
||||
'liveTv.daytime' => 'Journée',
|
||||
'liveTv.evening' => 'Soirée',
|
||||
'liveTv.lateNight' => 'Nuit tardive',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'En ce moment',
|
||||
'liveTv.watchChannel' => 'Regarder la chaîne',
|
||||
'liveTv.favorites' => 'Favoris',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsIt implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Personalizza le scorciatoie da tastiera';
|
||||
@override String get videoPlayerNavigation => 'Navigazione del lettore video';
|
||||
@override String get videoPlayerNavigationDescription => 'Usa i tasti freccia per navigare nei controlli del lettore video';
|
||||
@override String get watchTogetherRelay => 'Relay Guarda Insieme';
|
||||
@override String get watchTogetherRelayDefault => 'Predefinito';
|
||||
@override String get watchTogetherRelayDescription => 'Imposta un server relay personalizzato per Guarda Insieme. Tutti i partecipanti devono utilizzare lo stesso server.';
|
||||
@override String get watchTogetherRelayHint => 'https://mio-relay.esempio.it';
|
||||
@override String get crashReporting => 'Segnalazione errori';
|
||||
@override String get crashReportingDescription => 'Invia segnalazioni di errori per migliorare l\'app';
|
||||
@override String get debugLogging => 'Log di debug';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsIt {
|
||||
'settings.keyboardShortcutsDescription' => 'Personalizza le scorciatoie da tastiera',
|
||||
'settings.videoPlayerNavigation' => 'Navigazione del lettore video',
|
||||
'settings.videoPlayerNavigationDescription' => 'Usa i tasti freccia per navigare nei controlli del lettore video',
|
||||
'settings.watchTogetherRelay' => 'Relay Guarda Insieme',
|
||||
'settings.watchTogetherRelayDefault' => 'Predefinito',
|
||||
'settings.watchTogetherRelayDescription' => 'Imposta un server relay personalizzato per Guarda Insieme. Tutti i partecipanti devono utilizzare lo stesso server.',
|
||||
'settings.watchTogetherRelayHint' => 'https://mio-relay.esempio.it',
|
||||
'settings.crashReporting' => 'Segnalazione errori',
|
||||
'settings.crashReportingDescription' => 'Invia segnalazioni di errori per migliorare l\'app',
|
||||
'settings.debugLogging' => 'Log di debug',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsIt {
|
||||
'liveTv.today' => 'Oggi',
|
||||
'liveTv.midnight' => 'Mezzanotte',
|
||||
'liveTv.overnight' => 'Notte',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Mattina',
|
||||
'liveTv.daytime' => 'Giorno',
|
||||
'liveTv.evening' => 'Sera',
|
||||
'liveTv.lateNight' => 'Notte tarda',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'In onda ora',
|
||||
'liveTv.watchChannel' => 'Guarda canale',
|
||||
'liveTv.favorites' => 'Preferiti',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsJa implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'キーボードショートカットをカスタマイズ';
|
||||
@override String get videoPlayerNavigation => '動画プレーヤーナビゲーション';
|
||||
@override String get videoPlayerNavigationDescription => '矢印キーで動画プレーヤーコントロールを操作';
|
||||
@override String get watchTogetherRelay => '一緒に視聴リレーサーバー';
|
||||
@override String get watchTogetherRelayDefault => 'デフォルト';
|
||||
@override String get watchTogetherRelayDescription => '一緒に視聴用のカスタムリレーサーバーを設定します。すべての参加者が同じサーバーを使用する必要があります。';
|
||||
@override String get watchTogetherRelayHint => 'https://my-relay.example.com';
|
||||
@override String get crashReporting => 'クラッシュレポート';
|
||||
@override String get crashReportingDescription => 'アプリの改善に役立つクラッシュレポートを送信';
|
||||
@override String get debugLogging => 'デバッグログ';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsJa {
|
||||
'settings.keyboardShortcutsDescription' => 'キーボードショートカットをカスタマイズ',
|
||||
'settings.videoPlayerNavigation' => '動画プレーヤーナビゲーション',
|
||||
'settings.videoPlayerNavigationDescription' => '矢印キーで動画プレーヤーコントロールを操作',
|
||||
'settings.watchTogetherRelay' => '一緒に視聴リレーサーバー',
|
||||
'settings.watchTogetherRelayDefault' => 'デフォルト',
|
||||
'settings.watchTogetherRelayDescription' => '一緒に視聴用のカスタムリレーサーバーを設定します。すべての参加者が同じサーバーを使用する必要があります。',
|
||||
'settings.watchTogetherRelayHint' => 'https://my-relay.example.com',
|
||||
'settings.crashReporting' => 'クラッシュレポート',
|
||||
'settings.crashReportingDescription' => 'アプリの改善に役立つクラッシュレポートを送信',
|
||||
'settings.debugLogging' => 'デバッグログ',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsJa {
|
||||
'liveTv.today' => '今日',
|
||||
'liveTv.midnight' => '深夜',
|
||||
'liveTv.overnight' => '深夜',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => '朝',
|
||||
'liveTv.daytime' => '昼',
|
||||
'liveTv.evening' => '夕方',
|
||||
'liveTv.lateNight' => '深夜',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => '放送中',
|
||||
'liveTv.watchChannel' => 'チャンネルを視聴',
|
||||
'liveTv.favorites' => 'お気に入り',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsKo implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => '사용자 정의 키보드 단축키';
|
||||
@override String get videoPlayerNavigation => '비디오 플레이어 탐색';
|
||||
@override String get videoPlayerNavigationDescription => '방향 키를 사용하여 비디오 플레이어 컨트롤 탐색';
|
||||
@override String get watchTogetherRelay => '함께 보기 릴레이';
|
||||
@override String get watchTogetherRelayDefault => '기본값';
|
||||
@override String get watchTogetherRelayDescription => '함께 보기에 사용할 사용자 지정 릴레이 서버를 설정합니다. 모든 참가자가 동일한 서버를 사용해야 합니다.';
|
||||
@override String get watchTogetherRelayHint => 'https://my-relay.example.com';
|
||||
@override String get crashReporting => '충돌 보고';
|
||||
@override String get crashReportingDescription => '앱 개선을 위해 충돌 보고서 전송';
|
||||
@override String get debugLogging => '디버그 로깅';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsKo {
|
||||
'settings.keyboardShortcutsDescription' => '사용자 정의 키보드 단축키',
|
||||
'settings.videoPlayerNavigation' => '비디오 플레이어 탐색',
|
||||
'settings.videoPlayerNavigationDescription' => '방향 키를 사용하여 비디오 플레이어 컨트롤 탐색',
|
||||
'settings.watchTogetherRelay' => '함께 보기 릴레이',
|
||||
'settings.watchTogetherRelayDefault' => '기본값',
|
||||
'settings.watchTogetherRelayDescription' => '함께 보기에 사용할 사용자 지정 릴레이 서버를 설정합니다. 모든 참가자가 동일한 서버를 사용해야 합니다.',
|
||||
'settings.watchTogetherRelayHint' => 'https://my-relay.example.com',
|
||||
'settings.crashReporting' => '충돌 보고',
|
||||
'settings.crashReportingDescription' => '앱 개선을 위해 충돌 보고서 전송',
|
||||
'settings.debugLogging' => '디버그 로깅',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsKo {
|
||||
'liveTv.today' => '오늘',
|
||||
'liveTv.midnight' => '자정',
|
||||
'liveTv.overnight' => '심야',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => '아침',
|
||||
'liveTv.daytime' => '낮',
|
||||
'liveTv.evening' => '저녁',
|
||||
'liveTv.lateNight' => '심야 방송',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => '지금 방송 중',
|
||||
'liveTv.watchChannel' => '채널 시청',
|
||||
'liveTv.favorites' => '즐겨찾기',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsNb implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Tilpass tastatursnarveier';
|
||||
@override String get videoPlayerNavigation => 'Videospillernavigering';
|
||||
@override String get videoPlayerNavigationDescription => 'Bruk piltaster for å navigere videospillerkontroller';
|
||||
@override String get watchTogetherRelay => 'Se Sammen-relay';
|
||||
@override String get watchTogetherRelayDefault => 'Standard';
|
||||
@override String get watchTogetherRelayDescription => 'Angi en egendefinert relay-server for Se Sammen. Alle deltakere må bruke den samme serveren.';
|
||||
@override String get watchTogetherRelayHint => 'https://min-relay.eksempel.no';
|
||||
@override String get crashReporting => 'Krasjrapportering';
|
||||
@override String get crashReportingDescription => 'Send krasjrapporter for å hjelpe med å forbedre appen';
|
||||
@override String get debugLogging => 'Feilsøkingslogging';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsNb {
|
||||
'settings.keyboardShortcutsDescription' => 'Tilpass tastatursnarveier',
|
||||
'settings.videoPlayerNavigation' => 'Videospillernavigering',
|
||||
'settings.videoPlayerNavigationDescription' => 'Bruk piltaster for å navigere videospillerkontroller',
|
||||
'settings.watchTogetherRelay' => 'Se Sammen-relay',
|
||||
'settings.watchTogetherRelayDefault' => 'Standard',
|
||||
'settings.watchTogetherRelayDescription' => 'Angi en egendefinert relay-server for Se Sammen. Alle deltakere må bruke den samme serveren.',
|
||||
'settings.watchTogetherRelayHint' => 'https://min-relay.eksempel.no',
|
||||
'settings.crashReporting' => 'Krasjrapportering',
|
||||
'settings.crashReportingDescription' => 'Send krasjrapporter for å hjelpe med å forbedre appen',
|
||||
'settings.debugLogging' => 'Feilsøkingslogging',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsNb {
|
||||
'liveTv.today' => 'I dag',
|
||||
'liveTv.midnight' => 'Midnatt',
|
||||
'liveTv.overnight' => 'Natt',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Morgen',
|
||||
'liveTv.daytime' => 'Dagtid',
|
||||
'liveTv.evening' => 'Kveld',
|
||||
'liveTv.lateNight' => 'Sen kveld',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'Hva går nå',
|
||||
'liveTv.watchChannel' => 'Se kanal',
|
||||
'liveTv.favorites' => 'Favoritter',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsNl implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Pas toetsenbord sneltoetsen aan';
|
||||
@override String get videoPlayerNavigation => 'Videospeler navigatie';
|
||||
@override String get videoPlayerNavigationDescription => 'Gebruik pijltjestoetsen om door de videospeler bediening te navigeren';
|
||||
@override String get watchTogetherRelay => 'Samen Kijken Relay';
|
||||
@override String get watchTogetherRelayDefault => 'Standaard';
|
||||
@override String get watchTogetherRelayDescription => 'Stel een aangepaste relay-server in voor Samen Kijken. Alle deelnemers moeten dezelfde server gebruiken.';
|
||||
@override String get watchTogetherRelayHint => 'https://mijn-relay.voorbeeld.nl';
|
||||
@override String get crashReporting => 'Crashrapportage';
|
||||
@override String get crashReportingDescription => 'Crashrapporten verzenden om de app te verbeteren';
|
||||
@override String get debugLogging => 'Debug logging';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsNl {
|
||||
'settings.keyboardShortcutsDescription' => 'Pas toetsenbord sneltoetsen aan',
|
||||
'settings.videoPlayerNavigation' => 'Videospeler navigatie',
|
||||
'settings.videoPlayerNavigationDescription' => 'Gebruik pijltjestoetsen om door de videospeler bediening te navigeren',
|
||||
'settings.watchTogetherRelay' => 'Samen Kijken Relay',
|
||||
'settings.watchTogetherRelayDefault' => 'Standaard',
|
||||
'settings.watchTogetherRelayDescription' => 'Stel een aangepaste relay-server in voor Samen Kijken. Alle deelnemers moeten dezelfde server gebruiken.',
|
||||
'settings.watchTogetherRelayHint' => 'https://mijn-relay.voorbeeld.nl',
|
||||
'settings.crashReporting' => 'Crashrapportage',
|
||||
'settings.crashReportingDescription' => 'Crashrapporten verzenden om de app te verbeteren',
|
||||
'settings.debugLogging' => 'Debug logging',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsNl {
|
||||
'liveTv.today' => 'Vandaag',
|
||||
'liveTv.midnight' => 'Middernacht',
|
||||
'liveTv.overnight' => 'Nacht',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Ochtend',
|
||||
'liveTv.daytime' => 'Overdag',
|
||||
'liveTv.evening' => 'Avond',
|
||||
'liveTv.lateNight' => 'Late avond',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'Nu op TV',
|
||||
'liveTv.watchChannel' => 'Kanaal bekijken',
|
||||
'liveTv.favorites' => 'Favorieten',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsPl implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Dostosuj skróty klawiszowe';
|
||||
@override String get videoPlayerNavigation => 'Nawigacja odtwarzacza wideo';
|
||||
@override String get videoPlayerNavigationDescription => 'Użyj klawiszy strzałek do nawigacji kontrolkami odtwarzacza';
|
||||
@override String get watchTogetherRelay => 'Relay Oglądaj Razem';
|
||||
@override String get watchTogetherRelayDefault => 'Domyślny';
|
||||
@override String get watchTogetherRelayDescription => 'Ustaw niestandardowy serwer relay dla Oglądaj Razem. Wszyscy uczestnicy muszą korzystać z tego samego serwera.';
|
||||
@override String get watchTogetherRelayHint => 'https://moj-relay.przyklad.pl';
|
||||
@override String get crashReporting => 'Raportowanie błędów';
|
||||
@override String get crashReportingDescription => 'Wysyłaj raporty o błędach, aby pomóc ulepszyć aplikację';
|
||||
@override String get debugLogging => 'Logowanie debugowania';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsPl {
|
||||
'settings.keyboardShortcutsDescription' => 'Dostosuj skróty klawiszowe',
|
||||
'settings.videoPlayerNavigation' => 'Nawigacja odtwarzacza wideo',
|
||||
'settings.videoPlayerNavigationDescription' => 'Użyj klawiszy strzałek do nawigacji kontrolkami odtwarzacza',
|
||||
'settings.watchTogetherRelay' => 'Relay Oglądaj Razem',
|
||||
'settings.watchTogetherRelayDefault' => 'Domyślny',
|
||||
'settings.watchTogetherRelayDescription' => 'Ustaw niestandardowy serwer relay dla Oglądaj Razem. Wszyscy uczestnicy muszą korzystać z tego samego serwera.',
|
||||
'settings.watchTogetherRelayHint' => 'https://moj-relay.przyklad.pl',
|
||||
'settings.crashReporting' => 'Raportowanie błędów',
|
||||
'settings.crashReportingDescription' => 'Wysyłaj raporty o błędach, aby pomóc ulepszyć aplikację',
|
||||
'settings.debugLogging' => 'Logowanie debugowania',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsPl {
|
||||
'liveTv.today' => 'Dzisiaj',
|
||||
'liveTv.midnight' => 'Północ',
|
||||
'liveTv.overnight' => 'Nocą',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Rano',
|
||||
'liveTv.daytime' => 'W ciągu dnia',
|
||||
'liveTv.evening' => 'Wieczorem',
|
||||
'liveTv.lateNight' => 'Późna noc',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'Co leci',
|
||||
'liveTv.watchChannel' => 'Oglądaj kanał',
|
||||
'liveTv.favorites' => 'Ulubione',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsPt implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Personalizar atalhos de teclado';
|
||||
@override String get videoPlayerNavigation => 'Navegação do Player de Vídeo';
|
||||
@override String get videoPlayerNavigationDescription => 'Usar teclas de seta para navegar nos controles do player';
|
||||
@override String get watchTogetherRelay => 'Relay do Assistir Juntos';
|
||||
@override String get watchTogetherRelayDefault => 'Padrão';
|
||||
@override String get watchTogetherRelayDescription => 'Definir um servidor relay personalizado para Assistir Juntos. Todos os participantes devem usar o mesmo servidor.';
|
||||
@override String get watchTogetherRelayHint => 'https://meu-relay.exemplo.com.br';
|
||||
@override String get crashReporting => 'Relatório de Erros';
|
||||
@override String get crashReportingDescription => 'Enviar relatórios de erros para ajudar a melhorar o app';
|
||||
@override String get debugLogging => 'Log de Depuração';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsPt {
|
||||
'settings.keyboardShortcutsDescription' => 'Personalizar atalhos de teclado',
|
||||
'settings.videoPlayerNavigation' => 'Navegação do Player de Vídeo',
|
||||
'settings.videoPlayerNavigationDescription' => 'Usar teclas de seta para navegar nos controles do player',
|
||||
'settings.watchTogetherRelay' => 'Relay do Assistir Juntos',
|
||||
'settings.watchTogetherRelayDefault' => 'Padrão',
|
||||
'settings.watchTogetherRelayDescription' => 'Definir um servidor relay personalizado para Assistir Juntos. Todos os participantes devem usar o mesmo servidor.',
|
||||
'settings.watchTogetherRelayHint' => 'https://meu-relay.exemplo.com.br',
|
||||
'settings.crashReporting' => 'Relatório de Erros',
|
||||
'settings.crashReportingDescription' => 'Enviar relatórios de erros para ajudar a melhorar o app',
|
||||
'settings.debugLogging' => 'Log de Depuração',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsPt {
|
||||
'liveTv.today' => 'Hoje',
|
||||
'liveTv.midnight' => 'Meia-noite',
|
||||
'liveTv.overnight' => 'Madrugada',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Manhã',
|
||||
'liveTv.daytime' => 'Dia',
|
||||
'liveTv.evening' => 'Noite',
|
||||
'liveTv.lateNight' => 'Madrugada',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'O que Está Passando',
|
||||
'liveTv.watchChannel' => 'Assistir Canal',
|
||||
'liveTv.favorites' => 'Favoritos',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsRu implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Настроить горячие клавиши';
|
||||
@override String get videoPlayerNavigation => 'Навигация видеоплеера';
|
||||
@override String get videoPlayerNavigationDescription => 'Использовать клавиши стрелок для навигации по элементам управления плеером';
|
||||
@override String get watchTogetherRelay => 'Relay совместного просмотра';
|
||||
@override String get watchTogetherRelayDefault => 'По умолчанию';
|
||||
@override String get watchTogetherRelayDescription => 'Указать пользовательский relay-сервер для совместного просмотра. Все участники должны использовать один и тот же сервер.';
|
||||
@override String get watchTogetherRelayHint => 'https://my-relay.example.com';
|
||||
@override String get crashReporting => 'Отчёты об ошибках';
|
||||
@override String get crashReportingDescription => 'Отправлять отчёты об ошибках для улучшения приложения';
|
||||
@override String get debugLogging => 'Журнал отладки';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsRu {
|
||||
'settings.keyboardShortcutsDescription' => 'Настроить горячие клавиши',
|
||||
'settings.videoPlayerNavigation' => 'Навигация видеоплеера',
|
||||
'settings.videoPlayerNavigationDescription' => 'Использовать клавиши стрелок для навигации по элементам управления плеером',
|
||||
'settings.watchTogetherRelay' => 'Relay совместного просмотра',
|
||||
'settings.watchTogetherRelayDefault' => 'По умолчанию',
|
||||
'settings.watchTogetherRelayDescription' => 'Указать пользовательский relay-сервер для совместного просмотра. Все участники должны использовать один и тот же сервер.',
|
||||
'settings.watchTogetherRelayHint' => 'https://my-relay.example.com',
|
||||
'settings.crashReporting' => 'Отчёты об ошибках',
|
||||
'settings.crashReportingDescription' => 'Отправлять отчёты об ошибках для улучшения приложения',
|
||||
'settings.debugLogging' => 'Журнал отладки',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsRu {
|
||||
'liveTv.today' => 'Сегодня',
|
||||
'liveTv.midnight' => 'Полночь',
|
||||
'liveTv.overnight' => 'Ночь',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Утро',
|
||||
'liveTv.daytime' => 'День',
|
||||
'liveTv.evening' => 'Вечер',
|
||||
'liveTv.lateNight' => 'Поздний вечер',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'Что идёт',
|
||||
'liveTv.watchChannel' => 'Смотреть канал',
|
||||
'liveTv.favorites' => 'Избранное',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsSv implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => 'Anpassa tangentbordsgenvägar';
|
||||
@override String get videoPlayerNavigation => 'Navigering i videospelaren';
|
||||
@override String get videoPlayerNavigationDescription => 'Använd piltangenter för att navigera videospelarens kontroller';
|
||||
@override String get watchTogetherRelay => 'Titta Tillsammans-relay';
|
||||
@override String get watchTogetherRelayDefault => 'Standard';
|
||||
@override String get watchTogetherRelayDescription => 'Ange en anpassad relay-server för Titta Tillsammans. Alla deltagare måste använda samma server.';
|
||||
@override String get watchTogetherRelayHint => 'https://min-relay.exempel.se';
|
||||
@override String get crashReporting => 'Kraschrapportering';
|
||||
@override String get crashReportingDescription => 'Skicka kraschrapporter för att förbättra appen';
|
||||
@override String get debugLogging => 'Felsökningsloggning';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsSv {
|
||||
'settings.keyboardShortcutsDescription' => 'Anpassa tangentbordsgenvägar',
|
||||
'settings.videoPlayerNavigation' => 'Navigering i videospelaren',
|
||||
'settings.videoPlayerNavigationDescription' => 'Använd piltangenter för att navigera videospelarens kontroller',
|
||||
'settings.watchTogetherRelay' => 'Titta Tillsammans-relay',
|
||||
'settings.watchTogetherRelayDefault' => 'Standard',
|
||||
'settings.watchTogetherRelayDescription' => 'Ange en anpassad relay-server för Titta Tillsammans. Alla deltagare måste använda samma server.',
|
||||
'settings.watchTogetherRelayHint' => 'https://min-relay.exempel.se',
|
||||
'settings.crashReporting' => 'Kraschrapportering',
|
||||
'settings.crashReportingDescription' => 'Skicka kraschrapporter för att förbättra appen',
|
||||
'settings.debugLogging' => 'Felsökningsloggning',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsSv {
|
||||
'liveTv.today' => 'Idag',
|
||||
'liveTv.midnight' => 'Midnatt',
|
||||
'liveTv.overnight' => 'Natt',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => 'Morgon',
|
||||
'liveTv.daytime' => 'Dagtid',
|
||||
'liveTv.evening' => 'Kväll',
|
||||
'liveTv.lateNight' => 'Sen kväll',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => 'På TV nu',
|
||||
'liveTv.watchChannel' => 'Titta på kanal',
|
||||
'liveTv.favorites' => 'Favoriter',
|
||||
|
||||
@@ -269,6 +269,10 @@ class _TranslationsSettingsZh implements TranslationsSettingsEn {
|
||||
@override String get keyboardShortcutsDescription => '自定义键盘快捷键';
|
||||
@override String get videoPlayerNavigation => '视频播放器导航';
|
||||
@override String get videoPlayerNavigationDescription => '使用方向键导航视频播放器控件';
|
||||
@override String get watchTogetherRelay => '一起看中继服务器';
|
||||
@override String get watchTogetherRelayDefault => '默认';
|
||||
@override String get watchTogetherRelayDescription => '设置一起看的自定义中继服务器。所有参与者必须使用相同的服务器。';
|
||||
@override String get watchTogetherRelayHint => 'https://my-relay.example.com';
|
||||
@override String get crashReporting => '崩溃报告';
|
||||
@override String get crashReportingDescription => '发送崩溃报告以帮助改进应用';
|
||||
@override String get debugLogging => '调试日志';
|
||||
@@ -1440,6 +1444,10 @@ extension on TranslationsZh {
|
||||
'settings.keyboardShortcutsDescription' => '自定义键盘快捷键',
|
||||
'settings.videoPlayerNavigation' => '视频播放器导航',
|
||||
'settings.videoPlayerNavigationDescription' => '使用方向键导航视频播放器控件',
|
||||
'settings.watchTogetherRelay' => '一起看中继服务器',
|
||||
'settings.watchTogetherRelayDefault' => '默认',
|
||||
'settings.watchTogetherRelayDescription' => '设置一起看的自定义中继服务器。所有参与者必须使用相同的服务器。',
|
||||
'settings.watchTogetherRelayHint' => 'https://my-relay.example.com',
|
||||
'settings.crashReporting' => '崩溃报告',
|
||||
'settings.crashReportingDescription' => '发送崩溃报告以帮助改进应用',
|
||||
'settings.debugLogging' => '调试日志',
|
||||
@@ -1808,12 +1816,12 @@ extension on TranslationsZh {
|
||||
'liveTv.today' => '今天',
|
||||
'liveTv.midnight' => '午夜',
|
||||
'liveTv.overnight' => '凌晨',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.morning' => '上午',
|
||||
'liveTv.daytime' => '白天',
|
||||
'liveTv.evening' => '晚上',
|
||||
'liveTv.lateNight' => '深夜',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'liveTv.whatsOn' => '正在播出',
|
||||
'liveTv.watchChannel' => '观看频道',
|
||||
'liveTv.favorites' => '收藏',
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "Anpassa tangentbordsgenvägar",
|
||||
"videoPlayerNavigation": "Navigering i videospelaren",
|
||||
"videoPlayerNavigationDescription": "Använd piltangenter för att navigera videospelarens kontroller",
|
||||
"watchTogetherRelay": "Titta Tillsammans-relay",
|
||||
"watchTogetherRelayDefault": "Standard",
|
||||
"watchTogetherRelayDescription": "Ange en anpassad relay-server för Titta Tillsammans. Alla deltagare måste använda samma server.",
|
||||
"watchTogetherRelayHint": "https://min-relay.exempel.se",
|
||||
"crashReporting": "Kraschrapportering",
|
||||
"crashReportingDescription": "Skicka kraschrapporter för att förbättra appen",
|
||||
"debugLogging": "Felsökningsloggning",
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
"keyboardShortcutsDescription": "自定义键盘快捷键",
|
||||
"videoPlayerNavigation": "视频播放器导航",
|
||||
"videoPlayerNavigationDescription": "使用方向键导航视频播放器控件",
|
||||
"watchTogetherRelay": "一起看中继服务器",
|
||||
"watchTogetherRelayDefault": "默认",
|
||||
"watchTogetherRelayDescription": "设置一起看的自定义中继服务器。所有参与者必须使用相同的服务器。",
|
||||
"watchTogetherRelayHint": "https://my-relay.example.com",
|
||||
"crashReporting": "崩溃报告",
|
||||
"crashReportingDescription": "发送崩溃报告以帮助改进应用",
|
||||
"debugLogging": "调试日志",
|
||||
|
||||
@@ -113,6 +113,7 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab {
|
||||
static const _kResetSettings = 'reset_settings';
|
||||
static const _kCheckForUpdates = 'check_for_updates';
|
||||
static const _kAbout = 'about';
|
||||
static const _kWatchTogetherRelay = 'watch_together_relay';
|
||||
KeyboardShortcutsService? _keyboardService;
|
||||
late final bool _keyboardShortcutsSupported = KeyboardShortcutsService.isPlatformSupported();
|
||||
bool _isLoading = true;
|
||||
@@ -144,6 +145,7 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab {
|
||||
bool _useExternalPlayer = false;
|
||||
bool _confirmExitOnBack = true;
|
||||
String _selectedExternalPlayerName = '';
|
||||
String? _customRelayUrl;
|
||||
|
||||
// Update checking state
|
||||
bool _isCheckingForUpdate = false;
|
||||
@@ -224,6 +226,7 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab {
|
||||
_useExternalPlayer = _settingsService.getUseExternalPlayer();
|
||||
_selectedExternalPlayerName = _settingsService.getSelectedExternalPlayer().name;
|
||||
_confirmExitOnBack = _settingsService.getConfirmExitOnBack();
|
||||
_customRelayUrl = _settingsService.getCustomRelayUrl();
|
||||
_isLoading = false;
|
||||
});
|
||||
}
|
||||
@@ -1200,6 +1203,14 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab {
|
||||
style: Theme.of(context).textTheme.titleMedium?.copyWith(fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
focusNode: _focusTracker.get(_kWatchTogetherRelay),
|
||||
leading: const AppIcon(Symbols.dns_rounded, fill: 1),
|
||||
title: Text(t.settings.watchTogetherRelay),
|
||||
subtitle: Text(t.settings.watchTogetherRelayDescription),
|
||||
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
|
||||
onTap: () => _showRelayUrlDialog(),
|
||||
),
|
||||
SwitchListTile(
|
||||
focusNode: _focusTracker.get(_kCrashReporting),
|
||||
secondary: const AppIcon(Symbols.monitoring_rounded, fill: 1),
|
||||
@@ -1689,6 +1700,52 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab {
|
||||
);
|
||||
}
|
||||
|
||||
void _showRelayUrlDialog() {
|
||||
final controller = TextEditingController(text: _customRelayUrl ?? '');
|
||||
final saveFocusNode = FocusNode();
|
||||
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext dialogContext) {
|
||||
return AlertDialog(
|
||||
title: Text(t.settings.watchTogetherRelay),
|
||||
content: TextField(
|
||||
controller: controller,
|
||||
decoration: InputDecoration(
|
||||
labelText: 'URL',
|
||||
hintText: t.settings.watchTogetherRelayHint,
|
||||
),
|
||||
autofocus: true,
|
||||
textInputAction: TextInputAction.done,
|
||||
onEditingComplete: () => saveFocusNode.requestFocus(),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
controller.clear();
|
||||
await _settingsService.setCustomRelayUrl(null);
|
||||
if (mounted) setState(() => _customRelayUrl = null);
|
||||
if (dialogContext.mounted) Navigator.pop(dialogContext);
|
||||
},
|
||||
child: Text(t.settings.resetToDefault),
|
||||
),
|
||||
TextButton(onPressed: () => Navigator.pop(dialogContext), child: Text(t.common.cancel)),
|
||||
TextButton(
|
||||
focusNode: saveFocusNode,
|
||||
onPressed: () async {
|
||||
final url = controller.text.trim().isEmpty ? null : controller.text.trim();
|
||||
await _settingsService.setCustomRelayUrl(url);
|
||||
if (mounted) setState(() => _customRelayUrl = url);
|
||||
if (dialogContext.mounted) Navigator.pop(dialogContext);
|
||||
},
|
||||
child: Text(t.common.save),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
).then((_) => saveFocusNode.dispose());
|
||||
}
|
||||
|
||||
void _showTextInputDialog({
|
||||
required String title,
|
||||
required String currentValue,
|
||||
|
||||
@@ -99,6 +99,7 @@ class SettingsService extends BaseSharedPreferencesService {
|
||||
static const String _keyAudioNormalization = 'audio_normalization';
|
||||
static const String _keyCustomShaderPresets = 'custom_shader_presets';
|
||||
static const String _keyLiveTvDefaultFavorites = 'live_tv_default_favorites';
|
||||
static const String _keyCustomRelayUrl = 'custom_relay_url';
|
||||
|
||||
SettingsService._();
|
||||
|
||||
@@ -870,6 +871,19 @@ class SettingsService extends BaseSharedPreferencesService {
|
||||
return prefs.containsKey(_keyCustomDownloadPath);
|
||||
}
|
||||
|
||||
// Custom Relay URL
|
||||
Future<void> setCustomRelayUrl(String? url) async {
|
||||
if (url == null || url.trim().isEmpty) {
|
||||
await prefs.remove(_keyCustomRelayUrl);
|
||||
} else {
|
||||
await prefs.setString(_keyCustomRelayUrl, url.trim());
|
||||
}
|
||||
}
|
||||
|
||||
String? getCustomRelayUrl() {
|
||||
return prefs.getString(_keyCustomRelayUrl);
|
||||
}
|
||||
|
||||
// Download on WiFi Only
|
||||
Future<void> setDownloadOnWifiOnly(bool value) async {
|
||||
await prefs.setBool(_keyDownloadOnWifiOnly, value);
|
||||
@@ -1309,6 +1323,7 @@ class SettingsService extends BaseSharedPreferencesService {
|
||||
prefs.remove(_keyAudioPassthrough),
|
||||
prefs.remove(_keyAudioNormalization),
|
||||
prefs.remove(_keyBufferSizeMigratedToAuto),
|
||||
prefs.remove(_keyCustomRelayUrl),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'dart:math';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
import '../../mpv/mpv.dart';
|
||||
import '../../services/settings_service.dart';
|
||||
import '../../utils/app_logger.dart';
|
||||
import '../models/sync_message.dart';
|
||||
import '../models/watch_session.dart';
|
||||
@@ -189,7 +190,8 @@ class WatchTogetherProvider with ChangeNotifier {
|
||||
|
||||
appLogger.d('WatchTogether: Creating session with control mode: $controlMode');
|
||||
|
||||
_peerService = WatchTogetherPeerService();
|
||||
final customRelayUrl = SettingsService.instanceOrNull?.getCustomRelayUrl();
|
||||
_peerService = WatchTogetherPeerService(customBaseUrl: customRelayUrl);
|
||||
_setupPeerServiceListeners();
|
||||
|
||||
try {
|
||||
@@ -236,7 +238,8 @@ class WatchTogetherProvider with ChangeNotifier {
|
||||
|
||||
appLogger.d('WatchTogether: Joining session: $sessionId');
|
||||
|
||||
_peerService = WatchTogetherPeerService();
|
||||
final customRelayUrl = SettingsService.instanceOrNull?.getCustomRelayUrl();
|
||||
_peerService = WatchTogetherPeerService(customBaseUrl: customRelayUrl);
|
||||
_setupPeerServiceListeners();
|
||||
|
||||
_session = WatchSession.joinAsGuest(sessionId: sessionId);
|
||||
|
||||
@@ -9,6 +9,7 @@ import 'package:provider/provider.dart';
|
||||
import '../../i18n/strings.g.dart';
|
||||
import '../../focus/focusable_button.dart';
|
||||
import '../../focus/focusable_wrapper.dart';
|
||||
import '../../services/settings_service.dart';
|
||||
import '../../utils/app_logger.dart';
|
||||
import '../../utils/dialogs.dart';
|
||||
import '../../utils/snackbar_helper.dart';
|
||||
@@ -80,10 +81,12 @@ class _NotInSessionViewState extends State<_NotInSessionView> {
|
||||
bool _isCreating = false;
|
||||
bool _isJoining = false;
|
||||
bool? _healthOk;
|
||||
String? _customRelayUrl;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_customRelayUrl = SettingsService.instanceOrNull?.getCustomRelayUrl();
|
||||
_checkHealth();
|
||||
}
|
||||
|
||||
@@ -91,7 +94,7 @@ class _NotInSessionViewState extends State<_NotInSessionView> {
|
||||
try {
|
||||
final client = HttpClient();
|
||||
client.connectionTimeout = const Duration(seconds: 5);
|
||||
final request = await client.getUrl(Uri.parse(WatchTogetherPeerService.healthUrl));
|
||||
final request = await client.getUrl(Uri.parse(WatchTogetherPeerService.healthUrlFor(_customRelayUrl)));
|
||||
final response = await request.close().namedTimeout(const Duration(seconds: 5), operation: 'WatchTogether health check');
|
||||
final body = await response.transform(const SystemEncoding().decoder).join();
|
||||
client.close();
|
||||
|
||||
@@ -20,9 +20,24 @@ export '../../services/base_peer_service.dart' show PeerError, PeerErrorType;
|
||||
/// - Sending/receiving sync messages through the relay server
|
||||
/// - Reconnection on WebSocket drops
|
||||
class WatchTogetherPeerService with KeepaliveMixin {
|
||||
static const String _baseUrl = 'https://ice.plezy.app';
|
||||
static String get healthUrl => '$_baseUrl/health';
|
||||
static const String _relayUrl = 'wss://ice.plezy.app/relay';
|
||||
static const String defaultBaseUrl = 'https://ice.plezy.app';
|
||||
|
||||
final String _baseUrl;
|
||||
|
||||
static String get healthUrl => '$defaultBaseUrl/health';
|
||||
|
||||
static String healthUrlFor(String? customBaseUrl) {
|
||||
final base = (customBaseUrl != null && customBaseUrl.trim().isNotEmpty) ? customBaseUrl.trim() : defaultBaseUrl;
|
||||
return '$base/health';
|
||||
}
|
||||
|
||||
String get _relayUrl {
|
||||
final wsBase = _baseUrl.replaceFirst(RegExp(r'^https://'), 'wss://').replaceFirst(RegExp(r'^http://'), 'ws://');
|
||||
return '$wsBase/relay';
|
||||
}
|
||||
|
||||
WatchTogetherPeerService({String? customBaseUrl})
|
||||
: _baseUrl = (customBaseUrl != null && customBaseUrl.trim().isNotEmpty) ? customBaseUrl.trim() : defaultBaseUrl;
|
||||
|
||||
WebSocketChannel? _channel;
|
||||
StreamSubscription? _channelSubscription;
|
||||
|
||||
Reference in New Issue
Block a user