feat(trackers): show a QR code in every tracker sign-in dialog and fit them on TV screens
Every tracker auth dialog (Trakt/Simkl/MDBList device-code and MAL/AniList OAuth proxy) now shares the same PendingAuthDialog affordances: a QR code for the sign-in URL, a large copyable URL with the scheme stripped, the browser launch button (hidden on Apple TV, which has no browser), and the polling spinner. On wide viewports (TV logical 960x540, desktop, phone landscape) the QR pane sits beside the instructions so the dialog no longer clips on tvOS, and the content is scrollable as an overflow safety net. Device activation codes scale down instead of wrapping.
This commit is contained in:
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Plezy-ni ${service} üzərində aktivləşdirin",
|
||||
"body": "${url} ünvanına keçin və bu kodu daxil edin:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Aktivləşdirmək üçün ${service} açın",
|
||||
"copyCode": "Aktivləşdirmə kodunu kopyala",
|
||||
"waitingForAuthorization": "Səlahiyyət gözlənilir…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "${service} xidmətinə daxil olun",
|
||||
"body": "Bu QR kodu skan edin və ya URL-i açın.",
|
||||
"openToSignIn": "Daxil olmaq üçün ${service} açın",
|
||||
"openToSignIn": "Daxil olmaq üçün ${service} açın"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Daxil olma URL-ini kopyala",
|
||||
"urlCopied": "URL kopyalandı"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Активиране на Plezy в ${service}",
|
||||
"body": "Посетете ${url} и въведете този код:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Отворете ${service}, за да активирате",
|
||||
"copyCode": "Копирай кода за активиране",
|
||||
"waitingForAuthorization": "Изчакване на оторизация…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Вход в ${service}",
|
||||
"body": "Сканирайте този QR код или отворете URL-а на което и да е устройство.",
|
||||
"openToSignIn": "Отворете ${service}, за да влезете",
|
||||
"openToSignIn": "Отворете ${service}, за да влезете"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Копирай URL адреса за вход",
|
||||
"urlCopied": "URL адресът е копиран"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Aktiver Plezy på ${service}",
|
||||
"body": "Besøg ${url} og indtast denne kode:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Åbn ${service} for at aktivere",
|
||||
"copyCode": "Kopiér aktiveringskode",
|
||||
"waitingForAuthorization": "Venter på godkendelse…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Log ind på ${service}",
|
||||
"body": "Scan denne QR-kode, eller åbn URL'en på en enhed.",
|
||||
"openToSignIn": "Åbn ${service} for at logge ind",
|
||||
"openToSignIn": "Åbn ${service} for at logge ind"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Kopiér login-URL",
|
||||
"urlCopied": "URL kopieret"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Plezy auf ${service} aktivieren",
|
||||
"body": "Gehe zu ${url} und gib diesen Code ein:",
|
||||
"instructions": "",
|
||||
"openToActivate": "${service} zum Aktivieren öffnen",
|
||||
"copyCode": "Aktivierungscode kopieren",
|
||||
"waitingForAuthorization": "Warte auf Autorisierung…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Bei ${service} anmelden",
|
||||
"body": "Scanne diesen QR-Code oder öffne die URL auf einem beliebigen Gerät.",
|
||||
"openToSignIn": "${service} zum Anmelden öffnen",
|
||||
"openToSignIn": "${service} zum Anmelden öffnen"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Anmelde-URL kopieren",
|
||||
"urlCopied": "URL kopiert"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Activate Plezy on ${service}",
|
||||
"body": "Visit ${url} and enter this code:",
|
||||
"instructions": "Scan the QR code, or visit the address below and enter this code:",
|
||||
"openToActivate": "Open ${service} to activate",
|
||||
"copyCode": "Copy activation code",
|
||||
"waitingForAuthorization": "Waiting for authorization…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Sign in to ${service}",
|
||||
"body": "Scan this QR code or open the URL on any device.",
|
||||
"openToSignIn": "Open ${service} to sign in",
|
||||
"openToSignIn": "Open ${service} to sign in"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Copy sign-in URL",
|
||||
"urlCopied": "URL copied"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Activar Plezy en ${service}",
|
||||
"body": "Visita ${url} e introduce este código:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Abrir ${service} para activar",
|
||||
"copyCode": "Copiar código de activación",
|
||||
"waitingForAuthorization": "Esperando autorización…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Inicia sesión en ${service}",
|
||||
"body": "Escanea este código QR o abre la URL en cualquier dispositivo.",
|
||||
"openToSignIn": "Abrir ${service} para iniciar sesión",
|
||||
"openToSignIn": "Abrir ${service} para iniciar sesión"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Copiar URL de inicio de sesión",
|
||||
"urlCopied": "URL copiada"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Activer Plezy sur ${service}",
|
||||
"body": "Rendez-vous sur ${url} et entrez ce code :",
|
||||
"instructions": "",
|
||||
"openToActivate": "Ouvrir ${service} pour activer",
|
||||
"copyCode": "Copier le code d'activation",
|
||||
"waitingForAuthorization": "En attente d'autorisation…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Se connecter à ${service}",
|
||||
"body": "Scannez ce code QR ou ouvrez l'URL sur n'importe quel appareil.",
|
||||
"openToSignIn": "Ouvrir ${service} pour se connecter",
|
||||
"openToSignIn": "Ouvrir ${service} pour se connecter"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Copier l'URL de connexion",
|
||||
"urlCopied": "URL copiée"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Plezy aktiválása a következőn: ${service}",
|
||||
"body": "Nyisd meg a(z) ${url} oldalt és add meg ezt a kódot:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Nyisd meg a(z) ${service} oldalt az aktiváláshoz",
|
||||
"copyCode": "Aktiválási kód másolása",
|
||||
"waitingForAuthorization": "Várakozás az engedélyezésre…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Bejelentkezés ide: ${service}",
|
||||
"body": "Olvasd be ezt a QR-kódot vagy nyisd meg az URL-t bármelyik eszközön.",
|
||||
"openToSignIn": "Nyisd meg a(z) ${service} oldalt a bejelentkezéshez",
|
||||
"openToSignIn": "Nyisd meg a(z) ${service} oldalt a bejelentkezéshez"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Bejelentkezési URL másolása",
|
||||
"urlCopied": "URL másolva"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Attiva Plezy su ${service}",
|
||||
"body": "Visita ${url} e inserisci questo codice:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Apri ${service} per attivare",
|
||||
"copyCode": "Copia il codice di attivazione",
|
||||
"waitingForAuthorization": "In attesa di autorizzazione…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Accedi a ${service}",
|
||||
"body": "Scansiona questo codice QR o apri l'URL su qualsiasi dispositivo.",
|
||||
"openToSignIn": "Apri ${service} per accedere",
|
||||
"openToSignIn": "Apri ${service} per accedere"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Copia l'URL di accesso",
|
||||
"urlCopied": "URL copiato"
|
||||
},
|
||||
|
||||
@@ -1859,7 +1859,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "${service} で Plezy を有効化",
|
||||
"body": "${url}にアクセスして、このコードを入力してください。",
|
||||
"instructions": "",
|
||||
"openToActivate": "${service} を開いて有効化",
|
||||
"copyCode": "アクティベーションコードをコピー",
|
||||
"waitingForAuthorization": "認証を待っています…",
|
||||
@@ -1868,7 +1868,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "${service} にサインイン",
|
||||
"body": "このQRコードをスキャンするか、任意のデバイスでURLを開いてください。",
|
||||
"openToSignIn": "${service} を開いてサインイン",
|
||||
"openToSignIn": "${service} を開いてサインイン"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "サインインURLをコピー",
|
||||
"urlCopied": "URLをコピーしました"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Plezy-ді ${service} қызметінде белсендіру",
|
||||
"body": "${url} мекенжайына өтіп, осы кодты енгізіңіз:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Белсендіру үшін ${service} ашу",
|
||||
"copyCode": "Белсендіру кодын көшіру",
|
||||
"waitingForAuthorization": "Авторизация күтілуде…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "${service} қызметіне кіру",
|
||||
"body": "Осы QR кодты сканерлеңіз немесе URL-ді ашыңыз.",
|
||||
"openToSignIn": "Кіру үшін ${service} ашу",
|
||||
"openToSignIn": "Кіру үшін ${service} ашу"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Кіру URL-ін көшіру",
|
||||
"urlCopied": "URL көшірілді"
|
||||
},
|
||||
|
||||
@@ -1859,7 +1859,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "${service}에서 Plezy 활성화",
|
||||
"body": "${url}을 방문하여 이 코드를 입력하세요:",
|
||||
"instructions": "",
|
||||
"openToActivate": "활성화하려면 ${service} 열기",
|
||||
"copyCode": "활성화 코드 복사",
|
||||
"waitingForAuthorization": "인증을 기다리는 중…",
|
||||
@@ -1868,7 +1868,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "${service}에 로그인",
|
||||
"body": "이 QR 코드를 스캔하거나 아무 기기에서 URL을 여세요.",
|
||||
"openToSignIn": "로그인하려면 ${service} 열기",
|
||||
"openToSignIn": "로그인하려면 ${service} 열기"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "로그인 URL 복사",
|
||||
"urlCopied": "URL이 복사되었습니다"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Aktiver Plezy på ${service}",
|
||||
"body": "Besøk ${url} og skriv inn denne koden:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Åpne ${service} for å aktivere",
|
||||
"copyCode": "Kopier aktiveringskode",
|
||||
"waitingForAuthorization": "Venter på godkjenning…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Logg inn på ${service}",
|
||||
"body": "Skann denne QR-koden eller åpne URL-en på en enhet.",
|
||||
"openToSignIn": "Åpne ${service} for å logge inn",
|
||||
"openToSignIn": "Åpne ${service} for å logge inn"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Kopier URL for pålogging",
|
||||
"urlCopied": "URL kopiert"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Plezy activeren op ${service}",
|
||||
"body": "Ga naar ${url} en voer deze code in:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Open ${service} om te activeren",
|
||||
"copyCode": "Activeringscode kopiëren",
|
||||
"waitingForAuthorization": "Wachten op autorisatie…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Aanmelden bij ${service}",
|
||||
"body": "Scan deze QR-code of open de URL op een apparaat.",
|
||||
"openToSignIn": "${service} openen om aan te melden",
|
||||
"openToSignIn": "${service} openen om aan te melden"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Aanmeldings-URL kopiëren",
|
||||
"urlCopied": "URL gekopieerd"
|
||||
},
|
||||
|
||||
@@ -1886,7 +1886,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Aktywuj Plezy w ${service}",
|
||||
"body": "Odwiedź ${url} i wpisz ten kod:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Otwórz ${service}, aby aktywować",
|
||||
"copyCode": "Skopiuj kod aktywacyjny",
|
||||
"waitingForAuthorization": "Oczekiwanie na autoryzację…",
|
||||
@@ -1895,7 +1895,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Zaloguj się do ${service}",
|
||||
"body": "Zeskanuj ten kod QR lub otwórz URL na dowolnym urządzeniu.",
|
||||
"openToSignIn": "Otwórz ${service}, aby się zalogować",
|
||||
"openToSignIn": "Otwórz ${service}, aby się zalogować"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Skopiuj adres URL logowania",
|
||||
"urlCopied": "URL skopiowany"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Ativar o Plezy no ${service}",
|
||||
"body": "Acesse ${url} e insira este código:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Abrir ${service} para ativar",
|
||||
"copyCode": "Copiar código de ativação",
|
||||
"waitingForAuthorization": "Aguardando autorização…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Entrar no ${service}",
|
||||
"body": "Leia este código QR ou abra a URL em qualquer dispositivo.",
|
||||
"openToSignIn": "Abrir ${service} para entrar",
|
||||
"openToSignIn": "Abrir ${service} para entrar"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Copiar URL de acesso",
|
||||
"urlCopied": "URL copiada"
|
||||
},
|
||||
|
||||
@@ -1886,7 +1886,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Активируйте Plezy в ${service}",
|
||||
"body": "Перейдите на ${url} и введите этот код:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Открыть ${service} для активации",
|
||||
"copyCode": "Скопировать код активации",
|
||||
"waitingForAuthorization": "Ожидание авторизации…",
|
||||
@@ -1895,7 +1895,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Войти в ${service}",
|
||||
"body": "Отсканируйте этот QR-код или откройте URL на любом устройстве.",
|
||||
"openToSignIn": "Открыть ${service} для входа",
|
||||
"openToSignIn": "Открыть ${service} для входа"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Скопировать URL для входа",
|
||||
"urlCopied": "URL скопирован"
|
||||
},
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 22
|
||||
/// Strings: 38359 (1743 per locale)
|
||||
/// Strings: 38338 (1742 per locale)
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint, unused_import
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$az extends Translations$services$en {
|
||||
@override late final _Translations$services$names$az names = _Translations$services$names$az._(_root);
|
||||
@override late final _Translations$services$deviceCode$az deviceCode = _Translations$services$deviceCode$az._(_root);
|
||||
@override late final _Translations$services$oauthProxy$az oauthProxy = _Translations$services$oauthProxy$az._(_root);
|
||||
@override late final _Translations$services$pendingAuth$az pendingAuth = _Translations$services$pendingAuth$az._(_root);
|
||||
@override late final _Translations$services$libraryFilter$az libraryFilter = _Translations$services$libraryFilter$az._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$az extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Plezy-ni ${service} üzərində aktivləşdirin';
|
||||
@override String body({required Object url}) => '${url} ünvanına keçin və bu kodu daxil edin:';
|
||||
@override String openToActivate({required Object service}) => 'Aktivləşdirmək üçün ${service} açın';
|
||||
@override String get copyCode => 'Aktivləşdirmə kodunu kopyala';
|
||||
@override String get waitingForAuthorization => 'Səlahiyyət gözlənilir…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$az extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => '${service} xidmətinə daxil olun';
|
||||
@override String get body => 'Bu QR kodu skan edin və ya URL-i açın.';
|
||||
@override String openToSignIn({required Object service}) => 'Daxil olmaq üçün ${service} açın';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$az extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$az._(TranslationsAz root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsAz _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Daxil olma URL-ini kopyala';
|
||||
@override String get urlCopied => 'URL kopyalandı';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsAz {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Plezy-ni ${service} üzərində aktivləşdirin',
|
||||
'services.deviceCode.body' => ({required Object url}) => '${url} ünvanına keçin və bu kodu daxil edin:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Aktivləşdirmək üçün ${service} açın',
|
||||
'services.deviceCode.copyCode' => 'Aktivləşdirmə kodunu kopyala',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Səlahiyyət gözlənilir…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsAz {
|
||||
'services.oauthProxy.title' => ({required Object service}) => '${service} xidmətinə daxil olun',
|
||||
'services.oauthProxy.body' => 'Bu QR kodu skan edin və ya URL-i açın.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Daxil olmaq üçün ${service} açın',
|
||||
'services.oauthProxy.copyUrl' => 'Daxil olma URL-ini kopyala',
|
||||
'services.oauthProxy.urlCopied' => 'URL kopyalandı',
|
||||
'services.pendingAuth.copyUrl' => 'Daxil olma URL-ini kopyala',
|
||||
'services.pendingAuth.urlCopied' => 'URL kopyalandı',
|
||||
'services.libraryFilter.title' => 'Kitabxana filtri',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Bütün kitabxanalar eyniləşdirilir',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Heç nə eyniləşdirilmir',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$bg extends Translations$services$en {
|
||||
@override late final _Translations$services$names$bg names = _Translations$services$names$bg._(_root);
|
||||
@override late final _Translations$services$deviceCode$bg deviceCode = _Translations$services$deviceCode$bg._(_root);
|
||||
@override late final _Translations$services$oauthProxy$bg oauthProxy = _Translations$services$oauthProxy$bg._(_root);
|
||||
@override late final _Translations$services$pendingAuth$bg pendingAuth = _Translations$services$pendingAuth$bg._(_root);
|
||||
@override late final _Translations$services$libraryFilter$bg libraryFilter = _Translations$services$libraryFilter$bg._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$bg extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Активиране на Plezy в ${service}';
|
||||
@override String body({required Object url}) => 'Посетете ${url} и въведете този код:';
|
||||
@override String openToActivate({required Object service}) => 'Отворете ${service}, за да активирате';
|
||||
@override String get copyCode => 'Копирай кода за активиране';
|
||||
@override String get waitingForAuthorization => 'Изчакване на оторизация…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$bg extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Вход в ${service}';
|
||||
@override String get body => 'Сканирайте този QR код или отворете URL-а на което и да е устройство.';
|
||||
@override String openToSignIn({required Object service}) => 'Отворете ${service}, за да влезете';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$bg extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$bg._(TranslationsBg root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsBg _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Копирай URL адреса за вход';
|
||||
@override String get urlCopied => 'URL адресът е копиран';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsBg {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Активиране на Plezy в ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Посетете ${url} и въведете този код:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Отворете ${service}, за да активирате',
|
||||
'services.deviceCode.copyCode' => 'Копирай кода за активиране',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Изчакване на оторизация…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsBg {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Вход в ${service}',
|
||||
'services.oauthProxy.body' => 'Сканирайте този QR код или отворете URL-а на което и да е устройство.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Отворете ${service}, за да влезете',
|
||||
'services.oauthProxy.copyUrl' => 'Копирай URL адреса за вход',
|
||||
'services.oauthProxy.urlCopied' => 'URL адресът е копиран',
|
||||
'services.pendingAuth.copyUrl' => 'Копирай URL адреса за вход',
|
||||
'services.pendingAuth.urlCopied' => 'URL адресът е копиран',
|
||||
'services.libraryFilter.title' => 'Филтър на библиотеките',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Синхронизират се всички библиотеки',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Нищо не се синхронизира',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$da extends Translations$services$en {
|
||||
@override late final _Translations$services$names$da names = _Translations$services$names$da._(_root);
|
||||
@override late final _Translations$services$deviceCode$da deviceCode = _Translations$services$deviceCode$da._(_root);
|
||||
@override late final _Translations$services$oauthProxy$da oauthProxy = _Translations$services$oauthProxy$da._(_root);
|
||||
@override late final _Translations$services$pendingAuth$da pendingAuth = _Translations$services$pendingAuth$da._(_root);
|
||||
@override late final _Translations$services$libraryFilter$da libraryFilter = _Translations$services$libraryFilter$da._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$da extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Aktiver Plezy på ${service}';
|
||||
@override String body({required Object url}) => 'Besøg ${url} og indtast denne kode:';
|
||||
@override String openToActivate({required Object service}) => 'Åbn ${service} for at aktivere';
|
||||
@override String get copyCode => 'Kopiér aktiveringskode';
|
||||
@override String get waitingForAuthorization => 'Venter på godkendelse…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$da extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Log ind på ${service}';
|
||||
@override String get body => 'Scan denne QR-kode, eller åbn URL\'en på en enhed.';
|
||||
@override String openToSignIn({required Object service}) => 'Åbn ${service} for at logge ind';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$da extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$da._(TranslationsDa root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsDa _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Kopiér login-URL';
|
||||
@override String get urlCopied => 'URL kopieret';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsDa {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Aktiver Plezy på ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Besøg ${url} og indtast denne kode:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Åbn ${service} for at aktivere',
|
||||
'services.deviceCode.copyCode' => 'Kopiér aktiveringskode',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Venter på godkendelse…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsDa {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Log ind på ${service}',
|
||||
'services.oauthProxy.body' => 'Scan denne QR-kode, eller åbn URL\'en på en enhed.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Åbn ${service} for at logge ind',
|
||||
'services.oauthProxy.copyUrl' => 'Kopiér login-URL',
|
||||
'services.oauthProxy.urlCopied' => 'URL kopieret',
|
||||
'services.pendingAuth.copyUrl' => 'Kopiér login-URL',
|
||||
'services.pendingAuth.urlCopied' => 'URL kopieret',
|
||||
'services.libraryFilter.title' => 'Bibliotekfilter',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Synkroniserer alle biblioteker',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Intet synkroniseres',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$de extends Translations$services$en {
|
||||
@override late final _Translations$services$names$de names = _Translations$services$names$de._(_root);
|
||||
@override late final _Translations$services$deviceCode$de deviceCode = _Translations$services$deviceCode$de._(_root);
|
||||
@override late final _Translations$services$oauthProxy$de oauthProxy = _Translations$services$oauthProxy$de._(_root);
|
||||
@override late final _Translations$services$pendingAuth$de pendingAuth = _Translations$services$pendingAuth$de._(_root);
|
||||
@override late final _Translations$services$libraryFilter$de libraryFilter = _Translations$services$libraryFilter$de._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$de extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Plezy auf ${service} aktivieren';
|
||||
@override String body({required Object url}) => 'Gehe zu ${url} und gib diesen Code ein:';
|
||||
@override String openToActivate({required Object service}) => '${service} zum Aktivieren öffnen';
|
||||
@override String get copyCode => 'Aktivierungscode kopieren';
|
||||
@override String get waitingForAuthorization => 'Warte auf Autorisierung…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$de extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Bei ${service} anmelden';
|
||||
@override String get body => 'Scanne diesen QR-Code oder öffne die URL auf einem beliebigen Gerät.';
|
||||
@override String openToSignIn({required Object service}) => '${service} zum Anmelden öffnen';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$de extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$de._(TranslationsDe root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsDe _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Anmelde-URL kopieren';
|
||||
@override String get urlCopied => 'URL kopiert';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsDe {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Plezy auf ${service} aktivieren',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Gehe zu ${url} und gib diesen Code ein:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => '${service} zum Aktivieren öffnen',
|
||||
'services.deviceCode.copyCode' => 'Aktivierungscode kopieren',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Warte auf Autorisierung…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsDe {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Bei ${service} anmelden',
|
||||
'services.oauthProxy.body' => 'Scanne diesen QR-Code oder öffne die URL auf einem beliebigen Gerät.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => '${service} zum Anmelden öffnen',
|
||||
'services.oauthProxy.copyUrl' => 'Anmelde-URL kopieren',
|
||||
'services.oauthProxy.urlCopied' => 'URL kopiert',
|
||||
'services.pendingAuth.copyUrl' => 'Anmelde-URL kopieren',
|
||||
'services.pendingAuth.urlCopied' => 'URL kopiert',
|
||||
'services.libraryFilter.title' => 'Mediatheksfilter',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Alle Mediatheken werden synchronisiert',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Nichts wird synchronisiert',
|
||||
|
||||
@@ -4787,6 +4787,7 @@ class Translations$services$en {
|
||||
late final Translations$services$names$en names = Translations$services$names$en.internal(_root);
|
||||
late final Translations$services$deviceCode$en deviceCode = Translations$services$deviceCode$en.internal(_root);
|
||||
late final Translations$services$oauthProxy$en oauthProxy = Translations$services$oauthProxy$en.internal(_root);
|
||||
late final Translations$services$pendingAuth$en pendingAuth = Translations$services$pendingAuth$en.internal(_root);
|
||||
late final Translations$services$libraryFilter$en libraryFilter = Translations$services$libraryFilter$en.internal(_root);
|
||||
}
|
||||
|
||||
@@ -5995,8 +5996,8 @@ class Translations$services$deviceCode$en {
|
||||
/// en: 'Activate Plezy on ${service}'
|
||||
String title({required Object service}) => 'Activate Plezy on ${service}';
|
||||
|
||||
/// en: 'Visit ${url} and enter this code:'
|
||||
String body({required Object url}) => 'Visit ${url} and enter this code:';
|
||||
/// en: 'Scan the QR code, or visit the address below and enter this code:'
|
||||
String get instructions => 'Scan the QR code, or visit the address below and enter this code:';
|
||||
|
||||
/// en: 'Open ${service} to activate'
|
||||
String openToActivate({required Object service}) => 'Open ${service} to activate';
|
||||
@@ -6027,6 +6028,15 @@ class Translations$services$oauthProxy$en {
|
||||
|
||||
/// en: 'Open ${service} to sign in'
|
||||
String openToSignIn({required Object service}) => 'Open ${service} to sign in';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class Translations$services$pendingAuth$en {
|
||||
Translations$services$pendingAuth$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'Copy sign-in URL'
|
||||
String get copyUrl => 'Copy sign-in URL';
|
||||
@@ -7791,7 +7801,7 @@ extension on Translations {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Activate Plezy on ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Visit ${url} and enter this code:',
|
||||
'services.deviceCode.instructions' => 'Scan the QR code, or visit the address below and enter this code:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Open ${service} to activate',
|
||||
'services.deviceCode.copyCode' => 'Copy activation code',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Waiting for authorization…',
|
||||
@@ -7799,8 +7809,8 @@ extension on Translations {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Sign in to ${service}',
|
||||
'services.oauthProxy.body' => 'Scan this QR code or open the URL on any device.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Open ${service} to sign in',
|
||||
'services.oauthProxy.copyUrl' => 'Copy sign-in URL',
|
||||
'services.oauthProxy.urlCopied' => 'URL copied',
|
||||
'services.pendingAuth.copyUrl' => 'Copy sign-in URL',
|
||||
'services.pendingAuth.urlCopied' => 'URL copied',
|
||||
'services.libraryFilter.title' => 'Library filter',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Syncing all libraries',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Nothing syncing',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$es extends Translations$services$en {
|
||||
@override late final _Translations$services$names$es names = _Translations$services$names$es._(_root);
|
||||
@override late final _Translations$services$deviceCode$es deviceCode = _Translations$services$deviceCode$es._(_root);
|
||||
@override late final _Translations$services$oauthProxy$es oauthProxy = _Translations$services$oauthProxy$es._(_root);
|
||||
@override late final _Translations$services$pendingAuth$es pendingAuth = _Translations$services$pendingAuth$es._(_root);
|
||||
@override late final _Translations$services$libraryFilter$es libraryFilter = _Translations$services$libraryFilter$es._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$es extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Activar Plezy en ${service}';
|
||||
@override String body({required Object url}) => 'Visita ${url} e introduce este código:';
|
||||
@override String openToActivate({required Object service}) => 'Abrir ${service} para activar';
|
||||
@override String get copyCode => 'Copiar código de activación';
|
||||
@override String get waitingForAuthorization => 'Esperando autorización…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$es extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Inicia sesión en ${service}';
|
||||
@override String get body => 'Escanea este código QR o abre la URL en cualquier dispositivo.';
|
||||
@override String openToSignIn({required Object service}) => 'Abrir ${service} para iniciar sesión';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$es extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Copiar URL de inicio de sesión';
|
||||
@override String get urlCopied => 'URL copiada';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsEs {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Activar Plezy en ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Visita ${url} e introduce este código:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Abrir ${service} para activar',
|
||||
'services.deviceCode.copyCode' => 'Copiar código de activación',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Esperando autorización…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsEs {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Inicia sesión en ${service}',
|
||||
'services.oauthProxy.body' => 'Escanea este código QR o abre la URL en cualquier dispositivo.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Abrir ${service} para iniciar sesión',
|
||||
'services.oauthProxy.copyUrl' => 'Copiar URL de inicio de sesión',
|
||||
'services.oauthProxy.urlCopied' => 'URL copiada',
|
||||
'services.pendingAuth.copyUrl' => 'Copiar URL de inicio de sesión',
|
||||
'services.pendingAuth.urlCopied' => 'URL copiada',
|
||||
'services.libraryFilter.title' => 'Filtro de bibliotecas',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Sincronizando todas las bibliotecas',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'No se sincroniza ninguna biblioteca',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$fr extends Translations$services$en {
|
||||
@override late final _Translations$services$names$fr names = _Translations$services$names$fr._(_root);
|
||||
@override late final _Translations$services$deviceCode$fr deviceCode = _Translations$services$deviceCode$fr._(_root);
|
||||
@override late final _Translations$services$oauthProxy$fr oauthProxy = _Translations$services$oauthProxy$fr._(_root);
|
||||
@override late final _Translations$services$pendingAuth$fr pendingAuth = _Translations$services$pendingAuth$fr._(_root);
|
||||
@override late final _Translations$services$libraryFilter$fr libraryFilter = _Translations$services$libraryFilter$fr._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$fr extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Activer Plezy sur ${service}';
|
||||
@override String body({required Object url}) => 'Rendez-vous sur ${url} et entrez ce code :';
|
||||
@override String openToActivate({required Object service}) => 'Ouvrir ${service} pour activer';
|
||||
@override String get copyCode => 'Copier le code d\'activation';
|
||||
@override String get waitingForAuthorization => 'En attente d\'autorisation…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$fr extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Se connecter à ${service}';
|
||||
@override String get body => 'Scannez ce code QR ou ouvrez l\'URL sur n\'importe quel appareil.';
|
||||
@override String openToSignIn({required Object service}) => 'Ouvrir ${service} pour se connecter';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$fr extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$fr._(TranslationsFr root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsFr _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Copier l\'URL de connexion';
|
||||
@override String get urlCopied => 'URL copiée';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsFr {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Activer Plezy sur ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Rendez-vous sur ${url} et entrez ce code :',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Ouvrir ${service} pour activer',
|
||||
'services.deviceCode.copyCode' => 'Copier le code d\'activation',
|
||||
'services.deviceCode.waitingForAuthorization' => 'En attente d\'autorisation…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsFr {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Se connecter à ${service}',
|
||||
'services.oauthProxy.body' => 'Scannez ce code QR ou ouvrez l\'URL sur n\'importe quel appareil.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Ouvrir ${service} pour se connecter',
|
||||
'services.oauthProxy.copyUrl' => 'Copier l\'URL de connexion',
|
||||
'services.oauthProxy.urlCopied' => 'URL copiée',
|
||||
'services.pendingAuth.copyUrl' => 'Copier l\'URL de connexion',
|
||||
'services.pendingAuth.urlCopied' => 'URL copiée',
|
||||
'services.libraryFilter.title' => 'Filtre de bibliothèques',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Synchronisation de toutes les bibliothèques',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Aucune synchronisation',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$hu extends Translations$services$en {
|
||||
@override late final _Translations$services$names$hu names = _Translations$services$names$hu._(_root);
|
||||
@override late final _Translations$services$deviceCode$hu deviceCode = _Translations$services$deviceCode$hu._(_root);
|
||||
@override late final _Translations$services$oauthProxy$hu oauthProxy = _Translations$services$oauthProxy$hu._(_root);
|
||||
@override late final _Translations$services$pendingAuth$hu pendingAuth = _Translations$services$pendingAuth$hu._(_root);
|
||||
@override late final _Translations$services$libraryFilter$hu libraryFilter = _Translations$services$libraryFilter$hu._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$hu extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Plezy aktiválása a következőn: ${service}';
|
||||
@override String body({required Object url}) => 'Nyisd meg a(z) ${url} oldalt és add meg ezt a kódot:';
|
||||
@override String openToActivate({required Object service}) => 'Nyisd meg a(z) ${service} oldalt az aktiváláshoz';
|
||||
@override String get copyCode => 'Aktiválási kód másolása';
|
||||
@override String get waitingForAuthorization => 'Várakozás az engedélyezésre…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$hu extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Bejelentkezés ide: ${service}';
|
||||
@override String get body => 'Olvasd be ezt a QR-kódot vagy nyisd meg az URL-t bármelyik eszközön.';
|
||||
@override String openToSignIn({required Object service}) => 'Nyisd meg a(z) ${service} oldalt a bejelentkezéshez';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$hu extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$hu._(TranslationsHu root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsHu _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Bejelentkezési URL másolása';
|
||||
@override String get urlCopied => 'URL másolva';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsHu {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Plezy aktiválása a következőn: ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Nyisd meg a(z) ${url} oldalt és add meg ezt a kódot:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Nyisd meg a(z) ${service} oldalt az aktiváláshoz',
|
||||
'services.deviceCode.copyCode' => 'Aktiválási kód másolása',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Várakozás az engedélyezésre…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsHu {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Bejelentkezés ide: ${service}',
|
||||
'services.oauthProxy.body' => 'Olvasd be ezt a QR-kódot vagy nyisd meg az URL-t bármelyik eszközön.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Nyisd meg a(z) ${service} oldalt a bejelentkezéshez',
|
||||
'services.oauthProxy.copyUrl' => 'Bejelentkezési URL másolása',
|
||||
'services.oauthProxy.urlCopied' => 'URL másolva',
|
||||
'services.pendingAuth.copyUrl' => 'Bejelentkezési URL másolása',
|
||||
'services.pendingAuth.urlCopied' => 'URL másolva',
|
||||
'services.libraryFilter.title' => 'Könyvtárszűrő',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Minden könyvtár szinkronizálása',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Nincs szinkronizálás',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$it extends Translations$services$en {
|
||||
@override late final _Translations$services$names$it names = _Translations$services$names$it._(_root);
|
||||
@override late final _Translations$services$deviceCode$it deviceCode = _Translations$services$deviceCode$it._(_root);
|
||||
@override late final _Translations$services$oauthProxy$it oauthProxy = _Translations$services$oauthProxy$it._(_root);
|
||||
@override late final _Translations$services$pendingAuth$it pendingAuth = _Translations$services$pendingAuth$it._(_root);
|
||||
@override late final _Translations$services$libraryFilter$it libraryFilter = _Translations$services$libraryFilter$it._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$it extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Attiva Plezy su ${service}';
|
||||
@override String body({required Object url}) => 'Visita ${url} e inserisci questo codice:';
|
||||
@override String openToActivate({required Object service}) => 'Apri ${service} per attivare';
|
||||
@override String get copyCode => 'Copia il codice di attivazione';
|
||||
@override String get waitingForAuthorization => 'In attesa di autorizzazione…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$it extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Accedi a ${service}';
|
||||
@override String get body => 'Scansiona questo codice QR o apri l\'URL su qualsiasi dispositivo.';
|
||||
@override String openToSignIn({required Object service}) => 'Apri ${service} per accedere';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$it extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$it._(TranslationsIt root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsIt _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Copia l\'URL di accesso';
|
||||
@override String get urlCopied => 'URL copiato';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsIt {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Attiva Plezy su ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Visita ${url} e inserisci questo codice:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Apri ${service} per attivare',
|
||||
'services.deviceCode.copyCode' => 'Copia il codice di attivazione',
|
||||
'services.deviceCode.waitingForAuthorization' => 'In attesa di autorizzazione…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsIt {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Accedi a ${service}',
|
||||
'services.oauthProxy.body' => 'Scansiona questo codice QR o apri l\'URL su qualsiasi dispositivo.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Apri ${service} per accedere',
|
||||
'services.oauthProxy.copyUrl' => 'Copia l\'URL di accesso',
|
||||
'services.oauthProxy.urlCopied' => 'URL copiato',
|
||||
'services.pendingAuth.copyUrl' => 'Copia l\'URL di accesso',
|
||||
'services.pendingAuth.urlCopied' => 'URL copiato',
|
||||
'services.libraryFilter.title' => 'Filtro delle librerie',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Sincronizzazione di tutte le librerie',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Nessuna sincronizzazione',
|
||||
|
||||
@@ -1956,6 +1956,7 @@ class _Translations$services$ja extends Translations$services$en {
|
||||
@override late final _Translations$services$names$ja names = _Translations$services$names$ja._(_root);
|
||||
@override late final _Translations$services$deviceCode$ja deviceCode = _Translations$services$deviceCode$ja._(_root);
|
||||
@override late final _Translations$services$oauthProxy$ja oauthProxy = _Translations$services$oauthProxy$ja._(_root);
|
||||
@override late final _Translations$services$pendingAuth$ja pendingAuth = _Translations$services$pendingAuth$ja._(_root);
|
||||
@override late final _Translations$services$libraryFilter$ja libraryFilter = _Translations$services$libraryFilter$ja._(_root);
|
||||
}
|
||||
|
||||
@@ -2511,7 +2512,6 @@ class _Translations$services$deviceCode$ja extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => '${service} で Plezy を有効化';
|
||||
@override String body({required Object url}) => '${url}にアクセスして、このコードを入力してください。';
|
||||
@override String openToActivate({required Object service}) => '${service} を開いて有効化';
|
||||
@override String get copyCode => 'アクティベーションコードをコピー';
|
||||
@override String get waitingForAuthorization => '認証を待っています…';
|
||||
@@ -2528,6 +2528,15 @@ class _Translations$services$oauthProxy$ja extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => '${service} にサインイン';
|
||||
@override String get body => 'このQRコードをスキャンするか、任意のデバイスでURLを開いてください。';
|
||||
@override String openToSignIn({required Object service}) => '${service} を開いてサインイン';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$ja extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$ja._(TranslationsJa root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsJa _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'サインインURLをコピー';
|
||||
@override String get urlCopied => 'URLをコピーしました';
|
||||
}
|
||||
@@ -4251,7 +4260,6 @@ extension on TranslationsJa {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => '${service} で Plezy を有効化',
|
||||
'services.deviceCode.body' => ({required Object url}) => '${url}にアクセスして、このコードを入力してください。',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => '${service} を開いて有効化',
|
||||
'services.deviceCode.copyCode' => 'アクティベーションコードをコピー',
|
||||
'services.deviceCode.waitingForAuthorization' => '認証を待っています…',
|
||||
@@ -4259,8 +4267,8 @@ extension on TranslationsJa {
|
||||
'services.oauthProxy.title' => ({required Object service}) => '${service} にサインイン',
|
||||
'services.oauthProxy.body' => 'このQRコードをスキャンするか、任意のデバイスでURLを開いてください。',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => '${service} を開いてサインイン',
|
||||
'services.oauthProxy.copyUrl' => 'サインインURLをコピー',
|
||||
'services.oauthProxy.urlCopied' => 'URLをコピーしました',
|
||||
'services.pendingAuth.copyUrl' => 'サインインURLをコピー',
|
||||
'services.pendingAuth.urlCopied' => 'URLをコピーしました',
|
||||
'services.libraryFilter.title' => 'ライブラリフィルター',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'すべてのライブラリを同期中',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => '同期なし',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$kk extends Translations$services$en {
|
||||
@override late final _Translations$services$names$kk names = _Translations$services$names$kk._(_root);
|
||||
@override late final _Translations$services$deviceCode$kk deviceCode = _Translations$services$deviceCode$kk._(_root);
|
||||
@override late final _Translations$services$oauthProxy$kk oauthProxy = _Translations$services$oauthProxy$kk._(_root);
|
||||
@override late final _Translations$services$pendingAuth$kk pendingAuth = _Translations$services$pendingAuth$kk._(_root);
|
||||
@override late final _Translations$services$libraryFilter$kk libraryFilter = _Translations$services$libraryFilter$kk._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$kk extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Plezy-ді ${service} қызметінде белсендіру';
|
||||
@override String body({required Object url}) => '${url} мекенжайына өтіп, осы кодты енгізіңіз:';
|
||||
@override String openToActivate({required Object service}) => 'Белсендіру үшін ${service} ашу';
|
||||
@override String get copyCode => 'Белсендіру кодын көшіру';
|
||||
@override String get waitingForAuthorization => 'Авторизация күтілуде…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$kk extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => '${service} қызметіне кіру';
|
||||
@override String get body => 'Осы QR кодты сканерлеңіз немесе URL-ді ашыңыз.';
|
||||
@override String openToSignIn({required Object service}) => 'Кіру үшін ${service} ашу';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$kk extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$kk._(TranslationsKk root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsKk _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Кіру URL-ін көшіру';
|
||||
@override String get urlCopied => 'URL көшірілді';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsKk {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Plezy-ді ${service} қызметінде белсендіру',
|
||||
'services.deviceCode.body' => ({required Object url}) => '${url} мекенжайына өтіп, осы кодты енгізіңіз:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Белсендіру үшін ${service} ашу',
|
||||
'services.deviceCode.copyCode' => 'Белсендіру кодын көшіру',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Авторизация күтілуде…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsKk {
|
||||
'services.oauthProxy.title' => ({required Object service}) => '${service} қызметіне кіру',
|
||||
'services.oauthProxy.body' => 'Осы QR кодты сканерлеңіз немесе URL-ді ашыңыз.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Кіру үшін ${service} ашу',
|
||||
'services.oauthProxy.copyUrl' => 'Кіру URL-ін көшіру',
|
||||
'services.oauthProxy.urlCopied' => 'URL көшірілді',
|
||||
'services.pendingAuth.copyUrl' => 'Кіру URL-ін көшіру',
|
||||
'services.pendingAuth.urlCopied' => 'URL көшірілді',
|
||||
'services.libraryFilter.title' => 'Кітапхана фильтрі',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Барлық кітапханалар синхрондалуда',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Ештеңе синхрондалмайды',
|
||||
|
||||
@@ -1956,6 +1956,7 @@ class _Translations$services$ko extends Translations$services$en {
|
||||
@override late final _Translations$services$names$ko names = _Translations$services$names$ko._(_root);
|
||||
@override late final _Translations$services$deviceCode$ko deviceCode = _Translations$services$deviceCode$ko._(_root);
|
||||
@override late final _Translations$services$oauthProxy$ko oauthProxy = _Translations$services$oauthProxy$ko._(_root);
|
||||
@override late final _Translations$services$pendingAuth$ko pendingAuth = _Translations$services$pendingAuth$ko._(_root);
|
||||
@override late final _Translations$services$libraryFilter$ko libraryFilter = _Translations$services$libraryFilter$ko._(_root);
|
||||
}
|
||||
|
||||
@@ -2511,7 +2512,6 @@ class _Translations$services$deviceCode$ko extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => '${service}에서 Plezy 활성화';
|
||||
@override String body({required Object url}) => '${url}을 방문하여 이 코드를 입력하세요:';
|
||||
@override String openToActivate({required Object service}) => '활성화하려면 ${service} 열기';
|
||||
@override String get copyCode => '활성화 코드 복사';
|
||||
@override String get waitingForAuthorization => '인증을 기다리는 중…';
|
||||
@@ -2528,6 +2528,15 @@ class _Translations$services$oauthProxy$ko extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => '${service}에 로그인';
|
||||
@override String get body => '이 QR 코드를 스캔하거나 아무 기기에서 URL을 여세요.';
|
||||
@override String openToSignIn({required Object service}) => '로그인하려면 ${service} 열기';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$ko extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$ko._(TranslationsKo root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsKo _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => '로그인 URL 복사';
|
||||
@override String get urlCopied => 'URL이 복사되었습니다';
|
||||
}
|
||||
@@ -4251,7 +4260,6 @@ extension on TranslationsKo {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => '${service}에서 Plezy 활성화',
|
||||
'services.deviceCode.body' => ({required Object url}) => '${url}을 방문하여 이 코드를 입력하세요:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => '활성화하려면 ${service} 열기',
|
||||
'services.deviceCode.copyCode' => '활성화 코드 복사',
|
||||
'services.deviceCode.waitingForAuthorization' => '인증을 기다리는 중…',
|
||||
@@ -4259,8 +4267,8 @@ extension on TranslationsKo {
|
||||
'services.oauthProxy.title' => ({required Object service}) => '${service}에 로그인',
|
||||
'services.oauthProxy.body' => '이 QR 코드를 스캔하거나 아무 기기에서 URL을 여세요.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => '로그인하려면 ${service} 열기',
|
||||
'services.oauthProxy.copyUrl' => '로그인 URL 복사',
|
||||
'services.oauthProxy.urlCopied' => 'URL이 복사되었습니다',
|
||||
'services.pendingAuth.copyUrl' => '로그인 URL 복사',
|
||||
'services.pendingAuth.urlCopied' => 'URL이 복사되었습니다',
|
||||
'services.libraryFilter.title' => '라이브러리 필터',
|
||||
'services.libraryFilter.subtitleAllSyncing' => '모든 라이브러리 동기화 중',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => '동기화 안 함',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$nb extends Translations$services$en {
|
||||
@override late final _Translations$services$names$nb names = _Translations$services$names$nb._(_root);
|
||||
@override late final _Translations$services$deviceCode$nb deviceCode = _Translations$services$deviceCode$nb._(_root);
|
||||
@override late final _Translations$services$oauthProxy$nb oauthProxy = _Translations$services$oauthProxy$nb._(_root);
|
||||
@override late final _Translations$services$pendingAuth$nb pendingAuth = _Translations$services$pendingAuth$nb._(_root);
|
||||
@override late final _Translations$services$libraryFilter$nb libraryFilter = _Translations$services$libraryFilter$nb._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$nb extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Aktiver Plezy på ${service}';
|
||||
@override String body({required Object url}) => 'Besøk ${url} og skriv inn denne koden:';
|
||||
@override String openToActivate({required Object service}) => 'Åpne ${service} for å aktivere';
|
||||
@override String get copyCode => 'Kopier aktiveringskode';
|
||||
@override String get waitingForAuthorization => 'Venter på godkjenning…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$nb extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Logg inn på ${service}';
|
||||
@override String get body => 'Skann denne QR-koden eller åpne URL-en på en enhet.';
|
||||
@override String openToSignIn({required Object service}) => 'Åpne ${service} for å logge inn';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$nb extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$nb._(TranslationsNb root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsNb _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Kopier URL for pålogging';
|
||||
@override String get urlCopied => 'URL kopiert';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsNb {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Aktiver Plezy på ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Besøk ${url} og skriv inn denne koden:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Åpne ${service} for å aktivere',
|
||||
'services.deviceCode.copyCode' => 'Kopier aktiveringskode',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Venter på godkjenning…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsNb {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Logg inn på ${service}',
|
||||
'services.oauthProxy.body' => 'Skann denne QR-koden eller åpne URL-en på en enhet.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Åpne ${service} for å logge inn',
|
||||
'services.oauthProxy.copyUrl' => 'Kopier URL for pålogging',
|
||||
'services.oauthProxy.urlCopied' => 'URL kopiert',
|
||||
'services.pendingAuth.copyUrl' => 'Kopier URL for pålogging',
|
||||
'services.pendingAuth.urlCopied' => 'URL kopiert',
|
||||
'services.libraryFilter.title' => 'Biblioteksfilter',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Synkroniserer alle biblioteker',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Ingenting synkroniseres',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$nl extends Translations$services$en {
|
||||
@override late final _Translations$services$names$nl names = _Translations$services$names$nl._(_root);
|
||||
@override late final _Translations$services$deviceCode$nl deviceCode = _Translations$services$deviceCode$nl._(_root);
|
||||
@override late final _Translations$services$oauthProxy$nl oauthProxy = _Translations$services$oauthProxy$nl._(_root);
|
||||
@override late final _Translations$services$pendingAuth$nl pendingAuth = _Translations$services$pendingAuth$nl._(_root);
|
||||
@override late final _Translations$services$libraryFilter$nl libraryFilter = _Translations$services$libraryFilter$nl._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$nl extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Plezy activeren op ${service}';
|
||||
@override String body({required Object url}) => 'Ga naar ${url} en voer deze code in:';
|
||||
@override String openToActivate({required Object service}) => 'Open ${service} om te activeren';
|
||||
@override String get copyCode => 'Activeringscode kopiëren';
|
||||
@override String get waitingForAuthorization => 'Wachten op autorisatie…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$nl extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Aanmelden bij ${service}';
|
||||
@override String get body => 'Scan deze QR-code of open de URL op een apparaat.';
|
||||
@override String openToSignIn({required Object service}) => '${service} openen om aan te melden';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$nl extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$nl._(TranslationsNl root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsNl _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Aanmeldings-URL kopiëren';
|
||||
@override String get urlCopied => 'URL gekopieerd';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsNl {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Plezy activeren op ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Ga naar ${url} en voer deze code in:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Open ${service} om te activeren',
|
||||
'services.deviceCode.copyCode' => 'Activeringscode kopiëren',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Wachten op autorisatie…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsNl {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Aanmelden bij ${service}',
|
||||
'services.oauthProxy.body' => 'Scan deze QR-code of open de URL op een apparaat.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => '${service} openen om aan te melden',
|
||||
'services.oauthProxy.copyUrl' => 'Aanmeldings-URL kopiëren',
|
||||
'services.oauthProxy.urlCopied' => 'URL gekopieerd',
|
||||
'services.pendingAuth.copyUrl' => 'Aanmeldings-URL kopiëren',
|
||||
'services.pendingAuth.urlCopied' => 'URL gekopieerd',
|
||||
'services.libraryFilter.title' => 'Bibliotheekfilter',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Alle bibliotheken synchroniseren',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Niets wordt gesynchroniseerd',
|
||||
|
||||
@@ -1977,6 +1977,7 @@ class _Translations$services$pl extends Translations$services$en {
|
||||
@override late final _Translations$services$names$pl names = _Translations$services$names$pl._(_root);
|
||||
@override late final _Translations$services$deviceCode$pl deviceCode = _Translations$services$deviceCode$pl._(_root);
|
||||
@override late final _Translations$services$oauthProxy$pl oauthProxy = _Translations$services$oauthProxy$pl._(_root);
|
||||
@override late final _Translations$services$pendingAuth$pl pendingAuth = _Translations$services$pendingAuth$pl._(_root);
|
||||
@override late final _Translations$services$libraryFilter$pl libraryFilter = _Translations$services$libraryFilter$pl._(_root);
|
||||
}
|
||||
|
||||
@@ -2538,7 +2539,6 @@ class _Translations$services$deviceCode$pl extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Aktywuj Plezy w ${service}';
|
||||
@override String body({required Object url}) => 'Odwiedź ${url} i wpisz ten kod:';
|
||||
@override String openToActivate({required Object service}) => 'Otwórz ${service}, aby aktywować';
|
||||
@override String get copyCode => 'Skopiuj kod aktywacyjny';
|
||||
@override String get waitingForAuthorization => 'Oczekiwanie na autoryzację…';
|
||||
@@ -2555,6 +2555,15 @@ class _Translations$services$oauthProxy$pl extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Zaloguj się do ${service}';
|
||||
@override String get body => 'Zeskanuj ten kod QR lub otwórz URL na dowolnym urządzeniu.';
|
||||
@override String openToSignIn({required Object service}) => 'Otwórz ${service}, aby się zalogować';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$pl extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$pl._(TranslationsPl root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsPl _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Skopiuj adres URL logowania';
|
||||
@override String get urlCopied => 'URL skopiowany';
|
||||
}
|
||||
@@ -4278,7 +4287,6 @@ extension on TranslationsPl {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Aktywuj Plezy w ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Odwiedź ${url} i wpisz ten kod:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Otwórz ${service}, aby aktywować',
|
||||
'services.deviceCode.copyCode' => 'Skopiuj kod aktywacyjny',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Oczekiwanie na autoryzację…',
|
||||
@@ -4286,8 +4294,8 @@ extension on TranslationsPl {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Zaloguj się do ${service}',
|
||||
'services.oauthProxy.body' => 'Zeskanuj ten kod QR lub otwórz URL na dowolnym urządzeniu.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Otwórz ${service}, aby się zalogować',
|
||||
'services.oauthProxy.copyUrl' => 'Skopiuj adres URL logowania',
|
||||
'services.oauthProxy.urlCopied' => 'URL skopiowany',
|
||||
'services.pendingAuth.copyUrl' => 'Skopiuj adres URL logowania',
|
||||
'services.pendingAuth.urlCopied' => 'URL skopiowany',
|
||||
'services.libraryFilter.title' => 'Filtr bibliotek',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Synchronizowanie wszystkich bibliotek',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Brak synchronizowanych bibliotek',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$pt extends Translations$services$en {
|
||||
@override late final _Translations$services$names$pt names = _Translations$services$names$pt._(_root);
|
||||
@override late final _Translations$services$deviceCode$pt deviceCode = _Translations$services$deviceCode$pt._(_root);
|
||||
@override late final _Translations$services$oauthProxy$pt oauthProxy = _Translations$services$oauthProxy$pt._(_root);
|
||||
@override late final _Translations$services$pendingAuth$pt pendingAuth = _Translations$services$pendingAuth$pt._(_root);
|
||||
@override late final _Translations$services$libraryFilter$pt libraryFilter = _Translations$services$libraryFilter$pt._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$pt extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Ativar o Plezy no ${service}';
|
||||
@override String body({required Object url}) => 'Acesse ${url} e insira este código:';
|
||||
@override String openToActivate({required Object service}) => 'Abrir ${service} para ativar';
|
||||
@override String get copyCode => 'Copiar código de ativação';
|
||||
@override String get waitingForAuthorization => 'Aguardando autorização…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$pt extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Entrar no ${service}';
|
||||
@override String get body => 'Leia este código QR ou abra a URL em qualquer dispositivo.';
|
||||
@override String openToSignIn({required Object service}) => 'Abrir ${service} para entrar';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$pt extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$pt._(TranslationsPt root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsPt _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Copiar URL de acesso';
|
||||
@override String get urlCopied => 'URL copiada';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsPt {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Ativar o Plezy no ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Acesse ${url} e insira este código:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Abrir ${service} para ativar',
|
||||
'services.deviceCode.copyCode' => 'Copiar código de ativação',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Aguardando autorização…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsPt {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Entrar no ${service}',
|
||||
'services.oauthProxy.body' => 'Leia este código QR ou abra a URL em qualquer dispositivo.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Abrir ${service} para entrar',
|
||||
'services.oauthProxy.copyUrl' => 'Copiar URL de acesso',
|
||||
'services.oauthProxy.urlCopied' => 'URL copiada',
|
||||
'services.pendingAuth.copyUrl' => 'Copiar URL de acesso',
|
||||
'services.pendingAuth.urlCopied' => 'URL copiada',
|
||||
'services.libraryFilter.title' => 'Filtro de bibliotecas',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Sincronizando todas as bibliotecas',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Nada a sincronizar',
|
||||
|
||||
@@ -1977,6 +1977,7 @@ class _Translations$services$ru extends Translations$services$en {
|
||||
@override late final _Translations$services$names$ru names = _Translations$services$names$ru._(_root);
|
||||
@override late final _Translations$services$deviceCode$ru deviceCode = _Translations$services$deviceCode$ru._(_root);
|
||||
@override late final _Translations$services$oauthProxy$ru oauthProxy = _Translations$services$oauthProxy$ru._(_root);
|
||||
@override late final _Translations$services$pendingAuth$ru pendingAuth = _Translations$services$pendingAuth$ru._(_root);
|
||||
@override late final _Translations$services$libraryFilter$ru libraryFilter = _Translations$services$libraryFilter$ru._(_root);
|
||||
}
|
||||
|
||||
@@ -2538,7 +2539,6 @@ class _Translations$services$deviceCode$ru extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Активируйте Plezy в ${service}';
|
||||
@override String body({required Object url}) => 'Перейдите на ${url} и введите этот код:';
|
||||
@override String openToActivate({required Object service}) => 'Открыть ${service} для активации';
|
||||
@override String get copyCode => 'Скопировать код активации';
|
||||
@override String get waitingForAuthorization => 'Ожидание авторизации…';
|
||||
@@ -2555,6 +2555,15 @@ class _Translations$services$oauthProxy$ru extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Войти в ${service}';
|
||||
@override String get body => 'Отсканируйте этот QR-код или откройте URL на любом устройстве.';
|
||||
@override String openToSignIn({required Object service}) => 'Открыть ${service} для входа';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$ru extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$ru._(TranslationsRu root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsRu _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Скопировать URL для входа';
|
||||
@override String get urlCopied => 'URL скопирован';
|
||||
}
|
||||
@@ -4278,7 +4287,6 @@ extension on TranslationsRu {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Активируйте Plezy в ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Перейдите на ${url} и введите этот код:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Открыть ${service} для активации',
|
||||
'services.deviceCode.copyCode' => 'Скопировать код активации',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Ожидание авторизации…',
|
||||
@@ -4286,8 +4294,8 @@ extension on TranslationsRu {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Войти в ${service}',
|
||||
'services.oauthProxy.body' => 'Отсканируйте этот QR-код или откройте URL на любом устройстве.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Открыть ${service} для входа',
|
||||
'services.oauthProxy.copyUrl' => 'Скопировать URL для входа',
|
||||
'services.oauthProxy.urlCopied' => 'URL скопирован',
|
||||
'services.pendingAuth.copyUrl' => 'Скопировать URL для входа',
|
||||
'services.pendingAuth.urlCopied' => 'URL скопирован',
|
||||
'services.libraryFilter.title' => 'Фильтр библиотек',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Синхронизация всех библиотек',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Ничего не синхронизируется',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$sv extends Translations$services$en {
|
||||
@override late final _Translations$services$names$sv names = _Translations$services$names$sv._(_root);
|
||||
@override late final _Translations$services$deviceCode$sv deviceCode = _Translations$services$deviceCode$sv._(_root);
|
||||
@override late final _Translations$services$oauthProxy$sv oauthProxy = _Translations$services$oauthProxy$sv._(_root);
|
||||
@override late final _Translations$services$pendingAuth$sv pendingAuth = _Translations$services$pendingAuth$sv._(_root);
|
||||
@override late final _Translations$services$libraryFilter$sv libraryFilter = _Translations$services$libraryFilter$sv._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$sv extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Aktivera Plezy på ${service}';
|
||||
@override String body({required Object url}) => 'Besök ${url} och ange den här koden:';
|
||||
@override String openToActivate({required Object service}) => 'Öppna ${service} för att aktivera';
|
||||
@override String get copyCode => 'Kopiera aktiveringskod';
|
||||
@override String get waitingForAuthorization => 'Väntar på auktorisering…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$sv extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => 'Logga in på ${service}';
|
||||
@override String get body => 'Skanna den här QR-koden eller öppna URL:en på valfri enhet.';
|
||||
@override String openToSignIn({required Object service}) => 'Öppna ${service} för att logga in';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$sv extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$sv._(TranslationsSv root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsSv _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Kopiera inloggnings-URL';
|
||||
@override String get urlCopied => 'URL kopierad';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsSv {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Aktivera Plezy på ${service}',
|
||||
'services.deviceCode.body' => ({required Object url}) => 'Besök ${url} och ange den här koden:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Öppna ${service} för att aktivera',
|
||||
'services.deviceCode.copyCode' => 'Kopiera aktiveringskod',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Väntar på auktorisering…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsSv {
|
||||
'services.oauthProxy.title' => ({required Object service}) => 'Logga in på ${service}',
|
||||
'services.oauthProxy.body' => 'Skanna den här QR-koden eller öppna URL:en på valfri enhet.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Öppna ${service} för att logga in',
|
||||
'services.oauthProxy.copyUrl' => 'Kopiera inloggnings-URL',
|
||||
'services.oauthProxy.urlCopied' => 'URL kopierad',
|
||||
'services.pendingAuth.copyUrl' => 'Kopiera inloggnings-URL',
|
||||
'services.pendingAuth.urlCopied' => 'URL kopierad',
|
||||
'services.libraryFilter.title' => 'Biblioteksfilter',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Synkroniserar alla bibliotek',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Ingenting synkroniseras',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$tr extends Translations$services$en {
|
||||
@override late final _Translations$services$names$tr names = _Translations$services$names$tr._(_root);
|
||||
@override late final _Translations$services$deviceCode$tr deviceCode = _Translations$services$deviceCode$tr._(_root);
|
||||
@override late final _Translations$services$oauthProxy$tr oauthProxy = _Translations$services$oauthProxy$tr._(_root);
|
||||
@override late final _Translations$services$pendingAuth$tr pendingAuth = _Translations$services$pendingAuth$tr._(_root);
|
||||
@override late final _Translations$services$libraryFilter$tr libraryFilter = _Translations$services$libraryFilter$tr._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$tr extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Plezy\'yi ${service} üzerinde etkinleştirin';
|
||||
@override String body({required Object url}) => '${url} adresini ziyaret edin ve bu kodu girin:';
|
||||
@override String openToActivate({required Object service}) => 'Etkinleştirmek için ${service} servisini açın';
|
||||
@override String get copyCode => 'Etkinleştirme kodunu kopyala';
|
||||
@override String get waitingForAuthorization => 'Yetkilendirme bekleniyor…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$tr extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => '${service} servisine giriş yapın';
|
||||
@override String get body => 'Bu QR kodunu tarayın veya URL\'yi herhangi bir cihazda açın.';
|
||||
@override String openToSignIn({required Object service}) => 'Giriş yapmak için ${service} servisini açın';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$tr extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$tr._(TranslationsTr root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsTr _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Giriş URL\'sini kopyala';
|
||||
@override String get urlCopied => 'URL kopyalandı';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsTr {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Plezy\'yi ${service} üzerinde etkinleştirin',
|
||||
'services.deviceCode.body' => ({required Object url}) => '${url} adresini ziyaret edin ve bu kodu girin:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Etkinleştirmek için ${service} servisini açın',
|
||||
'services.deviceCode.copyCode' => 'Etkinleştirme kodunu kopyala',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Yetkilendirme bekleniyor…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsTr {
|
||||
'services.oauthProxy.title' => ({required Object service}) => '${service} servisine giriş yapın',
|
||||
'services.oauthProxy.body' => 'Bu QR kodunu tarayın veya URL\'yi herhangi bir cihazda açın.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Giriş yapmak için ${service} servisini açın',
|
||||
'services.oauthProxy.copyUrl' => 'Giriş URL\'sini kopyala',
|
||||
'services.oauthProxy.urlCopied' => 'URL kopyalandı',
|
||||
'services.pendingAuth.copyUrl' => 'Giriş URL\'sini kopyala',
|
||||
'services.pendingAuth.urlCopied' => 'URL kopyalandı',
|
||||
'services.libraryFilter.title' => 'Kitaplık filtresi',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Tüm kitaplıklar eşitleniyor',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Hiçbir şey eşitlenmiyor',
|
||||
|
||||
@@ -1963,6 +1963,7 @@ class _Translations$services$uz extends Translations$services$en {
|
||||
@override late final _Translations$services$names$uz names = _Translations$services$names$uz._(_root);
|
||||
@override late final _Translations$services$deviceCode$uz deviceCode = _Translations$services$deviceCode$uz._(_root);
|
||||
@override late final _Translations$services$oauthProxy$uz oauthProxy = _Translations$services$oauthProxy$uz._(_root);
|
||||
@override late final _Translations$services$pendingAuth$uz pendingAuth = _Translations$services$pendingAuth$uz._(_root);
|
||||
@override late final _Translations$services$libraryFilter$uz libraryFilter = _Translations$services$libraryFilter$uz._(_root);
|
||||
}
|
||||
|
||||
@@ -2520,7 +2521,6 @@ class _Translations$services$deviceCode$uz extends Translations$services$deviceC
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => 'Plezy-ni ${service} xizmatida faollashtiring';
|
||||
@override String body({required Object url}) => '${url} manziliga oʻting va ushbu kodni kiriting:';
|
||||
@override String openToActivate({required Object service}) => 'Faollashtirish uchun ${service} xizmatini oching';
|
||||
@override String get copyCode => 'Faollashtirish kodini nusxalash';
|
||||
@override String get waitingForAuthorization => 'Avtorizatsiya kutilmoqda…';
|
||||
@@ -2537,6 +2537,15 @@ class _Translations$services$oauthProxy$uz extends Translations$services$oauthPr
|
||||
@override String title({required Object service}) => '${service} xizmatiga kiring';
|
||||
@override String get body => 'Ushbu QR kodni skanerlang yoki URL-ni oching.';
|
||||
@override String openToSignIn({required Object service}) => 'Kirish uchun ${service} xizmatini oching';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$uz extends Translations$services$pendingAuth$en {
|
||||
_Translations$services$pendingAuth$uz._(TranslationsUz root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsUz _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => 'Kirish URL-ini nusxalash';
|
||||
@override String get urlCopied => 'URL nusxalandi';
|
||||
}
|
||||
@@ -4260,7 +4269,6 @@ extension on TranslationsUz {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => 'Plezy-ni ${service} xizmatida faollashtiring',
|
||||
'services.deviceCode.body' => ({required Object url}) => '${url} manziliga oʻting va ushbu kodni kiriting:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => 'Faollashtirish uchun ${service} xizmatini oching',
|
||||
'services.deviceCode.copyCode' => 'Faollashtirish kodini nusxalash',
|
||||
'services.deviceCode.waitingForAuthorization' => 'Avtorizatsiya kutilmoqda…',
|
||||
@@ -4268,8 +4276,8 @@ extension on TranslationsUz {
|
||||
'services.oauthProxy.title' => ({required Object service}) => '${service} xizmatiga kiring',
|
||||
'services.oauthProxy.body' => 'Ushbu QR kodni skanerlang yoki URL-ni oching.',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Kirish uchun ${service} xizmatini oching',
|
||||
'services.oauthProxy.copyUrl' => 'Kirish URL-ini nusxalash',
|
||||
'services.oauthProxy.urlCopied' => 'URL nusxalandi',
|
||||
'services.pendingAuth.copyUrl' => 'Kirish URL-ini nusxalash',
|
||||
'services.pendingAuth.urlCopied' => 'URL nusxalandi',
|
||||
'services.libraryFilter.title' => 'Kutubxona filtri',
|
||||
'services.libraryFilter.subtitleAllSyncing' => 'Barcha kutubxonalar sinxronlanmoqda',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => 'Hech narsa sinxronlanmaydi',
|
||||
|
||||
@@ -1956,6 +1956,7 @@ class Translations$services$zh extends Translations$services$en {
|
||||
@override late final Translations$services$names$zh names = Translations$services$names$zh.internal(_root);
|
||||
@override late final Translations$services$deviceCode$zh deviceCode = Translations$services$deviceCode$zh.internal(_root);
|
||||
@override late final Translations$services$oauthProxy$zh oauthProxy = Translations$services$oauthProxy$zh.internal(_root);
|
||||
@override late final Translations$services$pendingAuth$zh pendingAuth = Translations$services$pendingAuth$zh.internal(_root);
|
||||
@override late final Translations$services$libraryFilter$zh libraryFilter = Translations$services$libraryFilter$zh.internal(_root);
|
||||
}
|
||||
|
||||
@@ -2511,7 +2512,6 @@ class Translations$services$deviceCode$zh extends Translations$services$deviceCo
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => '在 ${service} 上激活 Plezy';
|
||||
@override String body({required Object url}) => '访问 ${url} 并输入此代码:';
|
||||
@override String openToActivate({required Object service}) => '打开 ${service} 以激活';
|
||||
@override String get copyCode => '复制激活代码';
|
||||
@override String get waitingForAuthorization => '等待授权…';
|
||||
@@ -2528,6 +2528,15 @@ class Translations$services$oauthProxy$zh extends Translations$services$oauthPro
|
||||
@override String title({required Object service}) => '登录 ${service}';
|
||||
@override String get body => '扫描此二维码,或在任意设备上打开 URL。';
|
||||
@override String openToSignIn({required Object service}) => '打开 ${service} 以登录';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class Translations$services$pendingAuth$zh extends Translations$services$pendingAuth$en {
|
||||
Translations$services$pendingAuth$zh.internal(TranslationsZh root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsZh _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => '复制登录 URL';
|
||||
@override String get urlCopied => 'URL 已复制';
|
||||
}
|
||||
@@ -4251,7 +4260,6 @@ extension on TranslationsZh {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => '在 ${service} 上激活 Plezy',
|
||||
'services.deviceCode.body' => ({required Object url}) => '访问 ${url} 并输入此代码:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => '打开 ${service} 以激活',
|
||||
'services.deviceCode.copyCode' => '复制激活代码',
|
||||
'services.deviceCode.waitingForAuthorization' => '等待授权…',
|
||||
@@ -4259,8 +4267,8 @@ extension on TranslationsZh {
|
||||
'services.oauthProxy.title' => ({required Object service}) => '登录 ${service}',
|
||||
'services.oauthProxy.body' => '扫描此二维码,或在任意设备上打开 URL。',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => '打开 ${service} 以登录',
|
||||
'services.oauthProxy.copyUrl' => '复制登录 URL',
|
||||
'services.oauthProxy.urlCopied' => 'URL 已复制',
|
||||
'services.pendingAuth.copyUrl' => '复制登录 URL',
|
||||
'services.pendingAuth.urlCopied' => 'URL 已复制',
|
||||
'services.libraryFilter.title' => '媒体库筛选',
|
||||
'services.libraryFilter.subtitleAllSyncing' => '同步所有媒体库',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => '不同步任何内容',
|
||||
|
||||
@@ -1957,6 +1957,7 @@ class _Translations$services$zh_Hant extends Translations$services$zh {
|
||||
@override late final _Translations$services$names$zh_Hant names = _Translations$services$names$zh_Hant._(_root);
|
||||
@override late final _Translations$services$deviceCode$zh_Hant deviceCode = _Translations$services$deviceCode$zh_Hant._(_root);
|
||||
@override late final _Translations$services$oauthProxy$zh_Hant oauthProxy = _Translations$services$oauthProxy$zh_Hant._(_root);
|
||||
@override late final _Translations$services$pendingAuth$zh_Hant pendingAuth = _Translations$services$pendingAuth$zh_Hant._(_root);
|
||||
@override late final _Translations$services$libraryFilter$zh_Hant libraryFilter = _Translations$services$libraryFilter$zh_Hant._(_root);
|
||||
}
|
||||
|
||||
@@ -2512,7 +2513,6 @@ class _Translations$services$deviceCode$zh_Hant extends Translations$services$de
|
||||
|
||||
// Translations
|
||||
@override String title({required Object service}) => '在 ${service} 啟用 Plezy';
|
||||
@override String body({required Object url}) => '請前往 ${url} 並輸入此代碼:';
|
||||
@override String openToActivate({required Object service}) => '開啟 ${service} 進行啟用';
|
||||
@override String get copyCode => '複製啟用代碼';
|
||||
@override String get waitingForAuthorization => '等待授權中…';
|
||||
@@ -2529,6 +2529,15 @@ class _Translations$services$oauthProxy$zh_Hant extends Translations$services$oa
|
||||
@override String title({required Object service}) => '登入 ${service}';
|
||||
@override String get body => '掃描 QR 碼,或在任何裝置上開啟該網址。';
|
||||
@override String openToSignIn({required Object service}) => '開啟 ${service} 進行登入';
|
||||
}
|
||||
|
||||
// Path: services.pendingAuth
|
||||
class _Translations$services$pendingAuth$zh_Hant extends Translations$services$pendingAuth$zh {
|
||||
_Translations$services$pendingAuth$zh_Hant._(TranslationsZhHant root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsZhHant _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get copyUrl => '複製登入 URL';
|
||||
@override String get urlCopied => 'URL 已複製';
|
||||
}
|
||||
@@ -4252,7 +4261,6 @@ extension on TranslationsZhHant {
|
||||
'services.names.seerr' => 'Seerr',
|
||||
'services.names.mdblist' => 'MDBList',
|
||||
'services.deviceCode.title' => ({required Object service}) => '在 ${service} 啟用 Plezy',
|
||||
'services.deviceCode.body' => ({required Object url}) => '請前往 ${url} 並輸入此代碼:',
|
||||
'services.deviceCode.openToActivate' => ({required Object service}) => '開啟 ${service} 進行啟用',
|
||||
'services.deviceCode.copyCode' => '複製啟用代碼',
|
||||
'services.deviceCode.waitingForAuthorization' => '等待授權中…',
|
||||
@@ -4260,8 +4268,8 @@ extension on TranslationsZhHant {
|
||||
'services.oauthProxy.title' => ({required Object service}) => '登入 ${service}',
|
||||
'services.oauthProxy.body' => '掃描 QR 碼,或在任何裝置上開啟該網址。',
|
||||
'services.oauthProxy.openToSignIn' => ({required Object service}) => '開啟 ${service} 進行登入',
|
||||
'services.oauthProxy.copyUrl' => '複製登入 URL',
|
||||
'services.oauthProxy.urlCopied' => 'URL 已複製',
|
||||
'services.pendingAuth.copyUrl' => '複製登入 URL',
|
||||
'services.pendingAuth.urlCopied' => 'URL 已複製',
|
||||
'services.libraryFilter.title' => '媒體庫篩選',
|
||||
'services.libraryFilter.subtitleAllSyncing' => '同步所有媒體庫',
|
||||
'services.libraryFilter.subtitleNoneSyncing' => '不同步任何內容',
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Aktivera Plezy på ${service}",
|
||||
"body": "Besök ${url} och ange den här koden:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Öppna ${service} för att aktivera",
|
||||
"copyCode": "Kopiera aktiveringskod",
|
||||
"waitingForAuthorization": "Väntar på auktorisering…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "Logga in på ${service}",
|
||||
"body": "Skanna den här QR-koden eller öppna URL:en på valfri enhet.",
|
||||
"openToSignIn": "Öppna ${service} för att logga in",
|
||||
"openToSignIn": "Öppna ${service} för att logga in"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Kopiera inloggnings-URL",
|
||||
"urlCopied": "URL kopierad"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Plezy'yi ${service} üzerinde etkinleştirin",
|
||||
"body": "${url} adresini ziyaret edin ve bu kodu girin:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Etkinleştirmek için ${service} servisini açın",
|
||||
"copyCode": "Etkinleştirme kodunu kopyala",
|
||||
"waitingForAuthorization": "Yetkilendirme bekleniyor…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "${service} servisine giriş yapın",
|
||||
"body": "Bu QR kodunu tarayın veya URL'yi herhangi bir cihazda açın.",
|
||||
"openToSignIn": "Giriş yapmak için ${service} servisini açın",
|
||||
"openToSignIn": "Giriş yapmak için ${service} servisini açın"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Giriş URL'sini kopyala",
|
||||
"urlCopied": "URL kopyalandı"
|
||||
},
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "Plezy-ni ${service} xizmatida faollashtiring",
|
||||
"body": "${url} manziliga oʻting va ushbu kodni kiriting:",
|
||||
"instructions": "",
|
||||
"openToActivate": "Faollashtirish uchun ${service} xizmatini oching",
|
||||
"copyCode": "Faollashtirish kodini nusxalash",
|
||||
"waitingForAuthorization": "Avtorizatsiya kutilmoqda…",
|
||||
@@ -1877,7 +1877,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "${service} xizmatiga kiring",
|
||||
"body": "Ushbu QR kodni skanerlang yoki URL-ni oching.",
|
||||
"openToSignIn": "Kirish uchun ${service} xizmatini oching",
|
||||
"openToSignIn": "Kirish uchun ${service} xizmatini oching"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "Kirish URL-ini nusxalash",
|
||||
"urlCopied": "URL nusxalandi"
|
||||
},
|
||||
|
||||
@@ -1859,7 +1859,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "在 ${service} 啟用 Plezy",
|
||||
"body": "請前往 ${url} 並輸入此代碼:",
|
||||
"instructions": "",
|
||||
"openToActivate": "開啟 ${service} 進行啟用",
|
||||
"copyCode": "複製啟用代碼",
|
||||
"waitingForAuthorization": "等待授權中…",
|
||||
@@ -1868,7 +1868,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "登入 ${service}",
|
||||
"body": "掃描 QR 碼,或在任何裝置上開啟該網址。",
|
||||
"openToSignIn": "開啟 ${service} 進行登入",
|
||||
"openToSignIn": "開啟 ${service} 進行登入"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "複製登入 URL",
|
||||
"urlCopied": "URL 已複製"
|
||||
},
|
||||
|
||||
@@ -1859,7 +1859,7 @@
|
||||
},
|
||||
"deviceCode": {
|
||||
"title": "在 ${service} 上激活 Plezy",
|
||||
"body": "访问 ${url} 并输入此代码:",
|
||||
"instructions": "",
|
||||
"openToActivate": "打开 ${service} 以激活",
|
||||
"copyCode": "复制激活代码",
|
||||
"waitingForAuthorization": "等待授权…",
|
||||
@@ -1868,7 +1868,9 @@
|
||||
"oauthProxy": {
|
||||
"title": "登录 ${service}",
|
||||
"body": "扫描此二维码,或在任意设备上打开 URL。",
|
||||
"openToSignIn": "打开 ${service} 以登录",
|
||||
"openToSignIn": "打开 ${service} 以登录"
|
||||
},
|
||||
"pendingAuth": {
|
||||
"copyUrl": "复制登录 URL",
|
||||
"urlCopied": "URL 已复制"
|
||||
},
|
||||
|
||||
@@ -6,12 +6,15 @@ import '../models/trackers/device_code.dart';
|
||||
import '../utils/snackbar_helper.dart';
|
||||
import 'pending_auth_dialog.dart';
|
||||
|
||||
/// Shared device-code activation dialog for Trakt and Simkl (RFC 8628).
|
||||
/// Shared device-code activation dialog for Trakt, Simkl, and MDBList
|
||||
/// (RFC 8628).
|
||||
///
|
||||
/// Shows the `userCode` with copy-to-clipboard, a button to launch the
|
||||
/// verification URL in the browser, and a "waiting for authorization…" spinner
|
||||
/// while the poll loop runs. Dismissing calls [onCancel] so the provider can
|
||||
/// abort the poll.
|
||||
/// The [PendingAuthDialog] shell contributes the QR code (encoding the
|
||||
/// code-prefilled verification URL when the service provides one), the
|
||||
/// readable copyable verification URL, the browser launch button, and the
|
||||
/// "waiting for authorization…" spinner; this dialog adds the `userCode` with
|
||||
/// copy-to-clipboard. Dismissing calls [onCancel] so the provider can abort
|
||||
/// the poll.
|
||||
class DeviceCodeDialog extends StatelessWidget {
|
||||
final DeviceCode code;
|
||||
final String serviceName;
|
||||
@@ -30,8 +33,9 @@ class DeviceCodeDialog extends StatelessWidget {
|
||||
final theme = Theme.of(context);
|
||||
return PendingAuthDialog(
|
||||
title: t.services.deviceCode.title(service: serviceName),
|
||||
body: t.services.deviceCode.body(url: code.verificationUrl),
|
||||
body: t.services.deviceCode.instructions,
|
||||
url: code.verificationUrlComplete ?? code.verificationUrl,
|
||||
displayUrl: code.verificationUrl,
|
||||
openLabel: t.services.deviceCode.openToActivate(service: serviceName),
|
||||
onCancel: onCancel,
|
||||
children: [
|
||||
@@ -41,13 +45,19 @@ class DeviceCodeDialog extends StatelessWidget {
|
||||
semanticLabel: t.services.deviceCode.copyCode,
|
||||
semanticValue: code.userCode,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 12),
|
||||
child: Text(
|
||||
code.userCode,
|
||||
style: theme.textTheme.displaySmall?.copyWith(
|
||||
fontFeatures: const [FontFeature.tabularFigures()],
|
||||
letterSpacing: 4,
|
||||
fontWeight: .w600,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
|
||||
// Scale down instead of wrapping: user codes vary in length and
|
||||
// a wrapped activation code reads as two codes.
|
||||
child: FittedBox(
|
||||
fit: BoxFit.scaleDown,
|
||||
child: Text(
|
||||
code.userCode,
|
||||
maxLines: 1,
|
||||
style: theme.textTheme.displaySmall?.copyWith(
|
||||
fontFeatures: const [FontFeature.tabularFigures()],
|
||||
letterSpacing: 4,
|
||||
fontWeight: .w600,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:qr_flutter/qr_flutter.dart';
|
||||
|
||||
import '../i18n/strings.g.dart';
|
||||
import '../services/trackers/oauth_proxy_client.dart';
|
||||
import '../utils/snackbar_helper.dart';
|
||||
import 'pending_auth_dialog.dart';
|
||||
|
||||
/// Sign-in dialog for OAuth-proxy flows (MAL, AniList).
|
||||
///
|
||||
/// Shows a QR code plus a "open in browser" button — works uniformly on
|
||||
/// phones (user taps the button), desktops (same), and TVs without a browser
|
||||
/// (user scans the QR with a phone).
|
||||
/// The [PendingAuthDialog] shell contributes everything this flow needs — QR
|
||||
/// code, readable copyable URL, browser launch button, and the waiting
|
||||
/// spinner — so it works uniformly on phones (user taps the button), desktops
|
||||
/// (same), and TVs without a browser (user scans the QR with a phone).
|
||||
class OAuthProxyDialog extends StatelessWidget {
|
||||
final OAuthProxyStart start;
|
||||
final String serviceName;
|
||||
@@ -19,52 +17,15 @@ class OAuthProxyDialog extends StatelessWidget {
|
||||
|
||||
const OAuthProxyDialog({super.key, required this.start, required this.serviceName, required this.onCancel});
|
||||
|
||||
Future<void> _copyUrl(BuildContext context) async {
|
||||
await Clipboard.setData(ClipboardData(text: start.url));
|
||||
if (!context.mounted) return;
|
||||
showAppSnackBar(context, t.services.oauthProxy.urlCopied);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = Theme.of(context);
|
||||
return PendingAuthDialog(
|
||||
title: t.services.oauthProxy.title(service: serviceName),
|
||||
body: t.services.oauthProxy.body,
|
||||
url: start.url,
|
||||
openLabel: t.services.oauthProxy.openToSignIn(service: serviceName),
|
||||
onCancel: onCancel,
|
||||
children: [
|
||||
// QrImageView doesn't support intrinsic sizing; wrap in SizedBox so
|
||||
// AlertDialog's IntrinsicWidth walk sees a concrete width.
|
||||
Center(
|
||||
child: SizedBox.square(
|
||||
dimension: 220,
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: QrImageView(data: start.url, size: 220, version: QrVersions.auto, backgroundColor: Colors.white),
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
CopyTapRegion(
|
||||
onCopy: () => _copyUrl(context),
|
||||
semanticLabel: t.services.oauthProxy.copyUrl,
|
||||
semanticValue: start.url,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
child: Text(
|
||||
start.url,
|
||||
style: theme.textTheme.bodySmall?.copyWith(
|
||||
fontFamily: 'monospace',
|
||||
color: theme.colorScheme.onSurfaceVariant,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
],
|
||||
children: const [],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,29 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:material_symbols_icons/symbols.dart';
|
||||
import 'package:qr_flutter/qr_flutter.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
import '../focus/focusable_button.dart';
|
||||
import '../focus/focusable_wrapper.dart';
|
||||
import '../i18n/strings.g.dart';
|
||||
import '../utils/platform_detector.dart';
|
||||
import '../utils/snackbar_helper.dart';
|
||||
import 'app_icon.dart';
|
||||
import 'dialog_action_button.dart';
|
||||
import 'loading_indicator_box.dart';
|
||||
|
||||
/// Shell for the "waiting for out-of-band authorization" dialogs.
|
||||
///
|
||||
/// Shows [body], the service-specific [children], a button that launches [url]
|
||||
/// in the browser, and a "waiting for authorization…" spinner while the poll
|
||||
/// loop runs. Dismissing calls [onCancel] so the provider can abort the poll.
|
||||
/// Every flow gets the same affordances: a QR code for [url], a readable
|
||||
/// copyable URL underneath it, the service-specific [children], a button that
|
||||
/// launches [url] in the browser (hidden on Apple TV, which has none), and a
|
||||
/// "waiting for authorization…" spinner while the poll loop runs.
|
||||
///
|
||||
/// On wide viewports (TV, desktop, phone landscape) the QR pane sits beside
|
||||
/// the instructions so the dialog stays short enough for TV screens — tvOS
|
||||
/// renders at 540 logical pixels of height, where the stacked layout clips.
|
||||
/// Dismissing calls [onCancel] so the provider can abort the poll.
|
||||
class PendingAuthDialog extends StatelessWidget {
|
||||
final String title;
|
||||
final String body;
|
||||
@@ -21,7 +31,14 @@ class PendingAuthDialog extends StatelessWidget {
|
||||
/// Sits between the body text and the launch button, and carries its own
|
||||
/// trailing spacing.
|
||||
final List<Widget> children;
|
||||
|
||||
/// Encoded in the QR code, opened by the browser button, and copied by the
|
||||
/// URL tap region.
|
||||
final String url;
|
||||
|
||||
/// Short human-readable form of [url] shown under the QR code. Defaults to
|
||||
/// [url]; the scheme is stripped for display either way.
|
||||
final String? displayUrl;
|
||||
final String openLabel;
|
||||
final VoidCallback onCancel;
|
||||
|
||||
@@ -31,6 +48,7 @@ class PendingAuthDialog extends StatelessWidget {
|
||||
required this.body,
|
||||
required this.children,
|
||||
required this.url,
|
||||
this.displayUrl,
|
||||
required this.openLabel,
|
||||
required this.onCancel,
|
||||
});
|
||||
@@ -39,19 +57,56 @@ class PendingAuthDialog extends StatelessWidget {
|
||||
await launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication);
|
||||
}
|
||||
|
||||
Future<void> _copyUrl(BuildContext context) async {
|
||||
await Clipboard.setData(ClipboardData(text: url));
|
||||
if (!context.mounted) return;
|
||||
showAppSnackBar(context, t.services.pendingAuth.urlCopied);
|
||||
}
|
||||
|
||||
String get _urlDisplayText {
|
||||
var text = displayUrl ?? url;
|
||||
text = text.replaceFirst(RegExp('^https?://'), '');
|
||||
while (text.endsWith('/')) {
|
||||
text = text.substring(0, text.length - 1);
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = Theme.of(context);
|
||||
return AlertDialog(
|
||||
title: Text(title),
|
||||
content: Column(
|
||||
mainAxisSize: .min,
|
||||
crossAxisAlignment: .start,
|
||||
children: [
|
||||
Text(body, style: theme.textTheme.bodyMedium),
|
||||
const SizedBox(height: 16),
|
||||
...children,
|
||||
SizedBox(
|
||||
final screen = MediaQuery.sizeOf(context);
|
||||
// Side-by-side on anything wide enough (TV, desktop, phone landscape);
|
||||
// stacked on portrait phones.
|
||||
final wide = screen.width >= 600;
|
||||
final qrSize = wide ? (screen.height * 0.45).clamp(160.0, 220.0) : (screen.width - 160).clamp(140.0, 200.0);
|
||||
|
||||
final qr = SizedBox.square(
|
||||
dimension: qrSize,
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: QrImageView(data: url, size: qrSize, version: QrVersions.auto, backgroundColor: Colors.white),
|
||||
),
|
||||
);
|
||||
Widget urlChip({required TextAlign textAlign}) => CopyTapRegion(
|
||||
onCopy: () => _copyUrl(context),
|
||||
semanticLabel: t.services.pendingAuth.copyUrl,
|
||||
semanticValue: url,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
|
||||
child: Text(
|
||||
_urlDisplayText,
|
||||
style: theme.textTheme.titleMedium?.copyWith(fontFamily: 'monospace', fontWeight: .w600),
|
||||
textAlign: textAlign,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
final bodyText = Text(body, style: theme.textTheme.bodyMedium);
|
||||
// tvOS has no browser, so a launch button would be a dead focus target.
|
||||
final openButton = PlatformDetector.isAppleTV()
|
||||
? null
|
||||
: SizedBox(
|
||||
width: double.infinity,
|
||||
child: FocusableButton(
|
||||
onPressed: _open,
|
||||
@@ -62,17 +117,80 @@ class PendingAuthDialog extends StatelessWidget {
|
||||
onPressed: _open,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Row(
|
||||
children: [
|
||||
const LoadingIndicatorBox(size: 16),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Text(t.services.deviceCode.waitingForAuthorization, style: theme.textTheme.bodySmall)),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
final waitingRow = Row(
|
||||
children: [
|
||||
const LoadingIndicatorBox(size: 16),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Text(t.services.deviceCode.waitingForAuthorization, style: theme.textTheme.bodySmall)),
|
||||
],
|
||||
);
|
||||
|
||||
return AlertDialog(
|
||||
scrollable: true,
|
||||
title: Text(title),
|
||||
// Wide: the QR fills the left pane and everything textual lives in the
|
||||
// right column — body at the QR's top edge, button/spinner at its bottom
|
||||
// edge, the URL above the button, and any service extras (activation
|
||||
// code) centered in the remaining space. Both flows fill their column,
|
||||
// so neither pane floats in empty space.
|
||||
content: wide
|
||||
? IntrinsicHeight(
|
||||
child: Row(
|
||||
mainAxisSize: .min,
|
||||
crossAxisAlignment: .stretch,
|
||||
children: [
|
||||
Column(mainAxisSize: .min, mainAxisAlignment: .center, children: [qr]),
|
||||
const SizedBox(width: 28),
|
||||
ConstrainedBox(
|
||||
constraints: const BoxConstraints(maxWidth: 320),
|
||||
child: Column(
|
||||
crossAxisAlignment: .stretch,
|
||||
children: [
|
||||
bodyText,
|
||||
Expanded(
|
||||
child: children.isEmpty
|
||||
? const SizedBox.shrink()
|
||||
: Column(mainAxisAlignment: .center, children: children),
|
||||
),
|
||||
Align(
|
||||
alignment: .centerLeft,
|
||||
child: urlChip(textAlign: TextAlign.start),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
if (openButton != null) ...[openButton, const SizedBox(height: 16)],
|
||||
waitingRow,
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
: Column(
|
||||
mainAxisSize: .min,
|
||||
crossAxisAlignment: .stretch,
|
||||
children: [
|
||||
bodyText,
|
||||
const SizedBox(height: 16),
|
||||
...children,
|
||||
Center(
|
||||
child: Column(
|
||||
mainAxisSize: .min,
|
||||
children: [
|
||||
qr,
|
||||
const SizedBox(height: 8),
|
||||
ConstrainedBox(
|
||||
constraints: BoxConstraints(maxWidth: qrSize + 32),
|
||||
child: urlChip(textAlign: TextAlign.center),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
if (openButton != null) ...[openButton, const SizedBox(height: 16)],
|
||||
waitingRow,
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
DialogActionButton(
|
||||
onPressed: () {
|
||||
|
||||
@@ -13,7 +13,7 @@ void main() {
|
||||
'watchTogether.openSessionControls': translations.watchTogether.openSessionControls,
|
||||
'watchTogether.copySessionCode': translations.watchTogether.copySessionCode,
|
||||
'services.deviceCode.copyCode': translations.services.deviceCode.copyCode,
|
||||
'services.oauthProxy.copyUrl': translations.services.oauthProxy.copyUrl,
|
||||
'services.pendingAuth.copyUrl': translations.services.pendingAuth.copyUrl,
|
||||
};
|
||||
|
||||
for (final MapEntry(key: key, value: value) in labels.entries) {
|
||||
|
||||
@@ -5,19 +5,22 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:plezy/i18n/strings.g.dart';
|
||||
import 'package:plezy/models/trackers/device_code.dart';
|
||||
import 'package:plezy/widgets/device_code_dialog.dart';
|
||||
import 'package:qr_flutter/qr_flutter.dart';
|
||||
|
||||
void main() {
|
||||
setUpAll(() => LocaleSettings.setLocaleSync(AppLocale.en));
|
||||
|
||||
const code = DeviceCode(
|
||||
deviceCode: 'device-token',
|
||||
userCode: 'ABCD-EFGH',
|
||||
verificationUrl: 'https://example.com/activate',
|
||||
verificationUrlComplete: 'https://example.com/activate/ABCD-EFGH',
|
||||
expiresIn: 600,
|
||||
interval: 5,
|
||||
);
|
||||
|
||||
testWidgets('copy control exposes the activation code as its value', (tester) async {
|
||||
final semantics = tester.ensureSemantics();
|
||||
const code = DeviceCode(
|
||||
deviceCode: 'device-token',
|
||||
userCode: 'ABCD-EFGH',
|
||||
verificationUrl: 'https://example.com/activate',
|
||||
expiresIn: 600,
|
||||
interval: 5,
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
@@ -35,4 +38,23 @@ void main() {
|
||||
expect(find.bySemanticsLabel(code.userCode), findsNothing);
|
||||
semantics.dispose();
|
||||
});
|
||||
|
||||
testWidgets('shows a QR code for the complete verification URL and a copyable readable URL', (tester) async {
|
||||
final semantics = tester.ensureSemantics();
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: DeviceCodeDialog(code: code, serviceName: 'Example', onCancel: () {}),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(QrImageView), findsOneWidget);
|
||||
// The visible URL is the short verification URL with the scheme stripped,
|
||||
// but copying yields the full code-prefilled URL.
|
||||
expect(find.text('example.com/activate'), findsOneWidget);
|
||||
final urlFinder = find.bySemanticsLabel(t.services.pendingAuth.copyUrl);
|
||||
expect(urlFinder, findsOneWidget);
|
||||
expect(tester.getSemantics(urlFinder).getSemanticsData().value, code.verificationUrlComplete);
|
||||
semantics.dispose();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -5,17 +5,19 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:plezy/i18n/strings.g.dart';
|
||||
import 'package:plezy/services/trackers/oauth_proxy_client.dart';
|
||||
import 'package:plezy/widgets/oauth_proxy_dialog.dart';
|
||||
import 'package:qr_flutter/qr_flutter.dart';
|
||||
|
||||
void main() {
|
||||
setUpAll(() => LocaleSettings.setLocaleSync(AppLocale.en));
|
||||
|
||||
const start = OAuthProxyStart(session: 'session-token', url: 'https://example.com/oauth/start', expiresIn: 600);
|
||||
|
||||
testWidgets('copy control exposes the OAuth URL as its value', (tester) async {
|
||||
final semantics = tester.ensureSemantics();
|
||||
tester.view.devicePixelRatio = 1;
|
||||
tester.view.physicalSize = const Size(1024, 768);
|
||||
addTearDown(tester.view.resetDevicePixelRatio);
|
||||
addTearDown(tester.view.resetPhysicalSize);
|
||||
const start = OAuthProxyStart(session: 'session-token', url: 'https://example.com/oauth/start', expiresIn: 600);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
@@ -23,7 +25,7 @@ void main() {
|
||||
),
|
||||
);
|
||||
|
||||
final finder = find.bySemanticsLabel(t.services.oauthProxy.copyUrl);
|
||||
final finder = find.bySemanticsLabel(t.services.pendingAuth.copyUrl);
|
||||
expect(finder, findsOneWidget);
|
||||
final data = tester.getSemantics(finder).getSemanticsData();
|
||||
expect(data.value, start.url);
|
||||
@@ -33,4 +35,33 @@ void main() {
|
||||
expect(find.bySemanticsLabel(start.url), findsNothing);
|
||||
semantics.dispose();
|
||||
});
|
||||
|
||||
testWidgets('always shows a QR code encoding the sign-in URL', (tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: OAuthProxyDialog(start: start, serviceName: 'Example', onCancel: () {}),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(QrImageView), findsOneWidget);
|
||||
expect(find.text('example.com/oauth/start'), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('fits within a tvOS-sized 960x540 logical viewport without overflowing', (tester) async {
|
||||
tester.view.devicePixelRatio = 1;
|
||||
tester.view.physicalSize = const Size(960, 540);
|
||||
addTearDown(tester.view.resetDevicePixelRatio);
|
||||
addTearDown(tester.view.resetPhysicalSize);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: OAuthProxyDialog(start: start, serviceName: 'Example', onCancel: () {}),
|
||||
),
|
||||
);
|
||||
|
||||
// Wide layout: QR beside the instructions, dialog fully on screen.
|
||||
final dialogRect = tester.getRect(find.byType(AlertDialog));
|
||||
expect(dialogRect.height, lessThanOrEqualTo(540));
|
||||
expect(tester.takeException(), isNull);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user