From 27006cfa9965be391574fced50899ed8c1a447a6 Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Mon, 11 May 2026 04:43:21 +0200 Subject: [PATCH] fix(profiles): localize profile UI strings --- lib/i18n/da.i18n.json | 14 ++++ lib/i18n/de.i18n.json | 14 ++++ lib/i18n/en.i18n.json | 14 ++++ lib/i18n/es.i18n.json | 14 ++++ lib/i18n/fr.i18n.json | 14 ++++ lib/i18n/it.i18n.json | 14 ++++ lib/i18n/ja.i18n.json | 14 ++++ lib/i18n/ko.i18n.json | 14 ++++ lib/i18n/nb.i18n.json | 14 ++++ lib/i18n/nl.i18n.json | 14 ++++ lib/i18n/pl.i18n.json | 14 ++++ lib/i18n/pt.i18n.json | 14 ++++ lib/i18n/ru.i18n.json | 14 ++++ lib/i18n/strings.g.dart | 4 +- lib/i18n/strings_da.g.dart | 36 +++++++++-- lib/i18n/strings_de.g.dart | 36 +++++++++-- lib/i18n/strings_en.g.dart | 64 +++++++++++++++++-- lib/i18n/strings_es.g.dart | 36 +++++++++-- lib/i18n/strings_fr.g.dart | 36 +++++++++-- lib/i18n/strings_it.g.dart | 36 +++++++++-- lib/i18n/strings_ja.g.dart | 36 +++++++++-- lib/i18n/strings_ko.g.dart | 36 +++++++++-- lib/i18n/strings_nb.g.dart | 36 +++++++++-- lib/i18n/strings_nl.g.dart | 36 +++++++++-- lib/i18n/strings_pl.g.dart | 36 +++++++++-- lib/i18n/strings_pt.g.dart | 36 +++++++++-- lib/i18n/strings_ru.g.dart | 36 +++++++++-- lib/i18n/strings_sv.g.dart | 36 +++++++++-- lib/i18n/strings_zh.g.dart | 36 +++++++++-- lib/i18n/sv.i18n.json | 14 ++++ lib/i18n/zh.i18n.json | 14 ++++ .../profile/borrow_connection_screen.dart | 21 +++--- lib/screens/profile/pin_entry_dialog.dart | 10 +-- lib/screens/profile/pin_status_row.dart | 7 +- .../profile/profile_detail_screen.dart | 9 ++- .../profile/profile_switch_screen.dart | 2 +- 36 files changed, 748 insertions(+), 83 deletions(-) diff --git a/lib/i18n/da.i18n.json b/lib/i18n/da.i18n.json index 134201cf..59797e1e 100644 --- a/lib/i18n/da.i18n.json +++ b/lib/i18n/da.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN administreres af Plex. Rediger på plex.tv.", "noPinSetEditOnPlex": "Ingen PIN-kode angivet. For at kræve en, redigér Home-brugeren på plex.tv.", "setPin": "Angiv PIN", + "setPinTitle": "Angiv PIN", + "confirmPinTitle": "Bekræft PIN", + "pinSet": "PIN angivet", + "changePin": "Skift", + "removePin": "Fjern", "connectionsLabel": "Forbindelser", "add": "Tilføj", "deleteProfileButton": "Slet profil", "noConnectionsHint": "Ingen forbindelser — tilføj en for at bruge denne profil.", + "noConnections": "Ingen forbindelser", "plexHomeAccount": "Plex Home-konto", "connectionDefault": "Standard", + "connectionAs": "som ${displayName}", "makeDefault": "Gør til standard", "removeConnection": "Fjern", + "profileRenamed": "Profil omdøbt.", "borrowAddTo": "Tilføj til ${displayName}", "borrowExplain": "Lån en anden profils forbindelse. PIN-beskyttede profiler kræver en PIN.", "borrowEmpty": "Intet at låne endnu.", "borrowEmptySubtitle": "Forbind Plex eller Jellyfin til en anden profil først.", + "borrowFromProfile": "Fra ${displayName}", + "borrowConnectionBorrowed": "Forbindelse lånt.", + "borrowFailed": "Kunne ikke låne forbindelse.", + "incorrectPin": "Forkert PIN.", + "sourceProfileMissingParentAccount": "Kildeprofilen mangler sin overordnede konto.", + "failedToVerifyPin": "Kunne ikke bekræfte PIN.", "newProfile": "Ny profil", "profileNameHint": "fx. Gæster, Børn, Familiens stue", "pinProtectionOptional": "PIN-beskyttelse (valgfri)", diff --git a/lib/i18n/de.i18n.json b/lib/i18n/de.i18n.json index 20a67c1d..ca9c50c7 100644 --- a/lib/i18n/de.i18n.json +++ b/lib/i18n/de.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN wird von Plex verwaltet. Auf plex.tv bearbeiten.", "noPinSetEditOnPlex": "Keine PIN festgelegt. Um eine zu verlangen, bearbeite den Home-Benutzer auf plex.tv.", "setPin": "PIN festlegen", + "setPinTitle": "PIN festlegen", + "confirmPinTitle": "PIN bestätigen", + "pinSet": "PIN festgelegt", + "changePin": "Ändern", + "removePin": "Entfernen", "connectionsLabel": "Verbindungen", "add": "Hinzufügen", "deleteProfileButton": "Profil löschen", "noConnectionsHint": "Keine Verbindungen — füge eine hinzu, um dieses Profil zu nutzen.", + "noConnections": "Keine Verbindungen", "plexHomeAccount": "Plex Home-Konto", "connectionDefault": "Standard", + "connectionAs": "als ${displayName}", "makeDefault": "Als Standard", "removeConnection": "Entfernen", + "profileRenamed": "Profil umbenannt.", "borrowAddTo": "Zu ${displayName} hinzufügen", "borrowExplain": "Verbindung eines anderen Profils leihen. PIN-geschützte Profile erfordern eine PIN.", "borrowEmpty": "Noch nichts zum Ausleihen.", "borrowEmptySubtitle": "Verbinde zuerst Plex oder Jellyfin mit einem anderen Profil.", + "borrowFromProfile": "Von ${displayName}", + "borrowConnectionBorrowed": "Verbindung ausgeliehen.", + "borrowFailed": "Verbindung konnte nicht ausgeliehen werden.", + "incorrectPin": "Falsche PIN.", + "sourceProfileMissingParentAccount": "Dem Quellprofil fehlt das übergeordnete Konto.", + "failedToVerifyPin": "PIN konnte nicht verifiziert werden.", "newProfile": "Neues Profil", "profileNameHint": "z. B. Gäste, Kinder, Wohnzimmer", "pinProtectionOptional": "PIN-Schutz (optional)", diff --git a/lib/i18n/en.i18n.json b/lib/i18n/en.i18n.json index 9c911b74..c80c14b3 100644 --- a/lib/i18n/en.i18n.json +++ b/lib/i18n/en.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN managed by Plex. Edit on plex.tv.", "noPinSetEditOnPlex": "No PIN set. To require one, edit the home user on plex.tv.", "setPin": "Set PIN", + "setPinTitle": "Set PIN", + "confirmPinTitle": "Confirm PIN", + "pinSet": "PIN set", + "changePin": "Change", + "removePin": "Remove", "connectionsLabel": "Connections", "add": "Add", "deleteProfileButton": "Delete profile", "noConnectionsHint": "No connections — add one to use this profile.", + "noConnections": "No connections", "plexHomeAccount": "Plex Home account", "connectionDefault": "Default", + "connectionAs": "as ${displayName}", "makeDefault": "Make default", "removeConnection": "Remove", + "profileRenamed": "Profile renamed.", "borrowAddTo": "Add to ${displayName}", "borrowExplain": "Borrow another profile's connection. PIN-protected profiles require a PIN.", "borrowEmpty": "Nothing to borrow yet.", "borrowEmptySubtitle": "Connect Plex or Jellyfin to another profile first.", + "borrowFromProfile": "From ${displayName}", + "borrowConnectionBorrowed": "Connection borrowed.", + "borrowFailed": "Failed to borrow connection.", + "incorrectPin": "Incorrect PIN.", + "sourceProfileMissingParentAccount": "Source profile is missing its parent account.", + "failedToVerifyPin": "Failed to verify PIN.", "newProfile": "New profile", "profileNameHint": "e.g. Guests, Kids, Family Room", "pinProtectionOptional": "PIN protection (optional)", diff --git a/lib/i18n/es.i18n.json b/lib/i18n/es.i18n.json index 856eeccc..6f3f8084 100644 --- a/lib/i18n/es.i18n.json +++ b/lib/i18n/es.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN gestionado por Plex. Edita en plex.tv.", "noPinSetEditOnPlex": "Sin PIN establecido. Para requerir uno, edita el usuario Home en plex.tv.", "setPin": "Establecer PIN", + "setPinTitle": "Establecer PIN", + "confirmPinTitle": "Confirmar PIN", + "pinSet": "PIN establecido", + "changePin": "Cambiar", + "removePin": "Eliminar", "connectionsLabel": "Conexiones", "add": "Añadir", "deleteProfileButton": "Eliminar perfil", "noConnectionsHint": "Sin conexiones — añade una para usar este perfil.", + "noConnections": "Sin conexiones", "plexHomeAccount": "Cuenta Plex Home", "connectionDefault": "Predeterminada", + "connectionAs": "como ${displayName}", "makeDefault": "Establecer como predeterminada", "removeConnection": "Eliminar", + "profileRenamed": "Perfil renombrado.", "borrowAddTo": "Añadir a ${displayName}", "borrowExplain": "Toma prestada la conexión de otro perfil. Los perfiles protegidos con PIN requieren un PIN.", "borrowEmpty": "Nada para tomar prestado todavía.", "borrowEmptySubtitle": "Conecta Plex o Jellyfin primero a otro perfil.", + "borrowFromProfile": "De ${displayName}", + "borrowConnectionBorrowed": "Conexión tomada prestada.", + "borrowFailed": "No se pudo tomar prestada la conexión.", + "incorrectPin": "PIN incorrecto.", + "sourceProfileMissingParentAccount": "Al perfil de origen le falta su cuenta principal.", + "failedToVerifyPin": "No se pudo verificar el PIN.", "newProfile": "Nuevo perfil", "profileNameHint": "p. ej. Invitados, Niños, Sala familiar", "pinProtectionOptional": "Protección con PIN (opcional)", diff --git a/lib/i18n/fr.i18n.json b/lib/i18n/fr.i18n.json index 9270a88e..c859bca4 100644 --- a/lib/i18n/fr.i18n.json +++ b/lib/i18n/fr.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN géré par Plex. Modifier sur plex.tv.", "noPinSetEditOnPlex": "Aucun PIN défini. Pour en exiger un, modifiez l'utilisateur Home sur plex.tv.", "setPin": "Définir un PIN", + "setPinTitle": "Définir un PIN", + "confirmPinTitle": "Confirmer le PIN", + "pinSet": "PIN défini", + "changePin": "Modifier", + "removePin": "Retirer", "connectionsLabel": "Connexions", "add": "Ajouter", "deleteProfileButton": "Supprimer le profil", "noConnectionsHint": "Aucune connexion — ajoutez-en une pour utiliser ce profil.", + "noConnections": "Aucune connexion", "plexHomeAccount": "Compte Plex Home", "connectionDefault": "Par défaut", + "connectionAs": "en tant que ${displayName}", "makeDefault": "Définir par défaut", "removeConnection": "Retirer", + "profileRenamed": "Profil renommé.", "borrowAddTo": "Ajouter à ${displayName}", "borrowExplain": "Emprunter la connexion d'un autre profil. Les profils protégés par PIN exigent un PIN.", "borrowEmpty": "Rien à emprunter pour le moment.", "borrowEmptySubtitle": "Connectez d'abord Plex ou Jellyfin à un autre profil.", + "borrowFromProfile": "De ${displayName}", + "borrowConnectionBorrowed": "Connexion empruntée.", + "borrowFailed": "Impossible d'emprunter la connexion.", + "incorrectPin": "PIN incorrect.", + "sourceProfileMissingParentAccount": "Le profil source n'a pas son compte parent.", + "failedToVerifyPin": "Impossible de vérifier le PIN.", "newProfile": "Nouveau profil", "profileNameHint": "ex. Invités, Enfants, Salon familial", "pinProtectionOptional": "Protection par PIN (optionnelle)", diff --git a/lib/i18n/it.i18n.json b/lib/i18n/it.i18n.json index f9b13fae..15750ea2 100644 --- a/lib/i18n/it.i18n.json +++ b/lib/i18n/it.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN gestito da Plex. Modifica su plex.tv.", "noPinSetEditOnPlex": "Nessun PIN impostato. Per richiederne uno, modifica l'utente Home su plex.tv.", "setPin": "Imposta PIN", + "setPinTitle": "Imposta PIN", + "confirmPinTitle": "Conferma PIN", + "pinSet": "PIN impostato", + "changePin": "Cambia", + "removePin": "Rimuovi", "connectionsLabel": "Connessioni", "add": "Aggiungi", "deleteProfileButton": "Elimina profilo", "noConnectionsHint": "Nessuna connessione — aggiungine una per usare questo profilo.", + "noConnections": "Nessuna connessione", "plexHomeAccount": "Account Plex Home", "connectionDefault": "Predefinita", + "connectionAs": "come ${displayName}", "makeDefault": "Imposta come predefinita", "removeConnection": "Rimuovi", + "profileRenamed": "Profilo rinominato.", "borrowAddTo": "Aggiungi a ${displayName}", "borrowExplain": "Prendi in prestito la connessione di un altro profilo. I profili protetti da PIN richiedono un PIN.", "borrowEmpty": "Nulla da prendere in prestito al momento.", "borrowEmptySubtitle": "Collega prima Plex o Jellyfin a un altro profilo.", + "borrowFromProfile": "Da ${displayName}", + "borrowConnectionBorrowed": "Connessione presa in prestito.", + "borrowFailed": "Impossibile prendere in prestito la connessione.", + "incorrectPin": "PIN errato.", + "sourceProfileMissingParentAccount": "Al profilo di origine manca l'account principale.", + "failedToVerifyPin": "Impossibile verificare il PIN.", "newProfile": "Nuovo profilo", "profileNameHint": "es. Ospiti, Bambini, Soggiorno", "pinProtectionOptional": "Protezione PIN (opzionale)", diff --git a/lib/i18n/ja.i18n.json b/lib/i18n/ja.i18n.json index a0e82ae9..7fb37397 100644 --- a/lib/i18n/ja.i18n.json +++ b/lib/i18n/ja.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PINはPlexで管理されています。plex.tvで編集してください。", "noPinSetEditOnPlex": "PINが設定されていません。要求するには、plex.tvでHomeユーザーを編集してください。", "setPin": "PINを設定", + "setPinTitle": "PINを設定", + "confirmPinTitle": "PINを確認", + "pinSet": "PIN設定済み", + "changePin": "変更", + "removePin": "削除", "connectionsLabel": "接続", "add": "追加", "deleteProfileButton": "プロファイルを削除", "noConnectionsHint": "接続がありません — このプロファイルを使うには1つ追加してください。", + "noConnections": "接続がありません", "plexHomeAccount": "Plex Homeアカウント", "connectionDefault": "デフォルト", + "connectionAs": "${displayName}として", "makeDefault": "デフォルトに設定", "removeConnection": "削除", + "profileRenamed": "プロフィール名を変更しました。", "borrowAddTo": "${displayName}に追加", "borrowExplain": "別のプロフィールの接続を借用します。PIN保護されたプロフィールにはPINが必要です。", "borrowEmpty": "まだ借りるものがありません。", "borrowEmptySubtitle": "まず別のプロフィールにPlexまたはJellyfinを接続してください。", + "borrowFromProfile": "${displayName}から", + "borrowConnectionBorrowed": "接続を借用しました。", + "borrowFailed": "接続を借用できませんでした。", + "incorrectPin": "PINが正しくありません。", + "sourceProfileMissingParentAccount": "ソースプロフィールに親アカウントがありません。", + "failedToVerifyPin": "PINを確認できませんでした。", "newProfile": "新しいプロファイル", "profileNameHint": "例:ゲスト、キッズ、ファミリールーム", "pinProtectionOptional": "PIN保護(オプション)", diff --git a/lib/i18n/ko.i18n.json b/lib/i18n/ko.i18n.json index 16b39380..3c7b2ea9 100644 --- a/lib/i18n/ko.i18n.json +++ b/lib/i18n/ko.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN은 Plex에서 관리됩니다. plex.tv에서 편집하세요.", "noPinSetEditOnPlex": "설정된 PIN이 없습니다. 요구하려면 plex.tv에서 Home 사용자를 편집하세요.", "setPin": "PIN 설정", + "setPinTitle": "PIN 설정", + "confirmPinTitle": "PIN 확인", + "pinSet": "PIN 설정됨", + "changePin": "변경", + "removePin": "제거", "connectionsLabel": "연결", "add": "추가", "deleteProfileButton": "프로필 삭제", "noConnectionsHint": "연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.", + "noConnections": "연결 없음", "plexHomeAccount": "Plex Home 계정", "connectionDefault": "기본값", + "connectionAs": "${displayName}(으)로", "makeDefault": "기본값으로 설정", "removeConnection": "제거", + "profileRenamed": "프로필 이름이 변경되었습니다.", "borrowAddTo": "${displayName}에 추가", "borrowExplain": "다른 프로필의 연결을 빌립니다. PIN으로 보호된 프로필에는 PIN이 필요합니다.", "borrowEmpty": "아직 빌릴 것이 없습니다.", "borrowEmptySubtitle": "먼저 다른 프로필에 Plex 또는 Jellyfin을 연결하세요.", + "borrowFromProfile": "${displayName}에서", + "borrowConnectionBorrowed": "연결을 빌렸습니다.", + "borrowFailed": "연결을 빌리지 못했습니다.", + "incorrectPin": "PIN이 올바르지 않습니다.", + "sourceProfileMissingParentAccount": "원본 프로필에 상위 계정이 없습니다.", + "failedToVerifyPin": "PIN을 확인하지 못했습니다.", "newProfile": "새 프로필", "profileNameHint": "예: 손님, 어린이, 가족실", "pinProtectionOptional": "PIN 보호 (선택 사항)", diff --git a/lib/i18n/nb.i18n.json b/lib/i18n/nb.i18n.json index 43336705..68a7316e 100644 --- a/lib/i18n/nb.i18n.json +++ b/lib/i18n/nb.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN administreres av Plex. Rediger på plex.tv.", "noPinSetEditOnPlex": "Ingen PIN er satt. For å kreve én, rediger Home-brukeren på plex.tv.", "setPin": "Sett PIN", + "setPinTitle": "Sett PIN", + "confirmPinTitle": "Bekreft PIN", + "pinSet": "PIN satt", + "changePin": "Endre", + "removePin": "Fjern", "connectionsLabel": "Tilkoblinger", "add": "Legg til", "deleteProfileButton": "Slett profil", "noConnectionsHint": "Ingen tilkoblinger — legg til én for å bruke denne profilen.", + "noConnections": "Ingen tilkoblinger", "plexHomeAccount": "Plex Home-konto", "connectionDefault": "Standard", + "connectionAs": "som ${displayName}", "makeDefault": "Gjør til standard", "removeConnection": "Fjern", + "profileRenamed": "Profilen er omdøpt.", "borrowAddTo": "Legg til ${displayName}", "borrowExplain": "Lån en annen profils tilkobling. PIN-beskyttede profiler krever PIN.", "borrowEmpty": "Ingenting å låne enda.", "borrowEmptySubtitle": "Koble Plex eller Jellyfin til en annen profil først.", + "borrowFromProfile": "Fra ${displayName}", + "borrowConnectionBorrowed": "Tilkobling lånt.", + "borrowFailed": "Kunne ikke låne tilkoblingen.", + "incorrectPin": "Feil PIN.", + "sourceProfileMissingParentAccount": "Kildeprofilen mangler foreldrekontoen sin.", + "failedToVerifyPin": "Kunne ikke bekrefte PIN.", "newProfile": "Ny profil", "profileNameHint": "f.eks. Gjester, Barn, Familierom", "pinProtectionOptional": "PIN-beskyttelse (valgfri)", diff --git a/lib/i18n/nl.i18n.json b/lib/i18n/nl.i18n.json index 451ca5a8..d60e0310 100644 --- a/lib/i18n/nl.i18n.json +++ b/lib/i18n/nl.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN wordt beheerd door Plex. Bewerk op plex.tv.", "noPinSetEditOnPlex": "Geen PIN ingesteld. Bewerk de Home-gebruiker op plex.tv om er één te vereisen.", "setPin": "PIN instellen", + "setPinTitle": "PIN instellen", + "confirmPinTitle": "PIN bevestigen", + "pinSet": "PIN ingesteld", + "changePin": "Wijzigen", + "removePin": "Verwijderen", "connectionsLabel": "Verbindingen", "add": "Toevoegen", "deleteProfileButton": "Profiel verwijderen", "noConnectionsHint": "Geen verbindingen — voeg er één toe om dit profiel te gebruiken.", + "noConnections": "Geen verbindingen", "plexHomeAccount": "Plex Home-account", "connectionDefault": "Standaard", + "connectionAs": "als ${displayName}", "makeDefault": "Als standaard instellen", "removeConnection": "Verwijderen", + "profileRenamed": "Profiel hernoemd.", "borrowAddTo": "Toevoegen aan ${displayName}", "borrowExplain": "Leen de verbinding van een ander profiel. PIN-beveiligde profielen vereisen een PIN.", "borrowEmpty": "Nog niets te lenen.", "borrowEmptySubtitle": "Verbind Plex of Jellyfin eerst met een ander profiel.", + "borrowFromProfile": "Van ${displayName}", + "borrowConnectionBorrowed": "Verbinding geleend.", + "borrowFailed": "Kan verbinding niet lenen.", + "incorrectPin": "Onjuiste PIN.", + "sourceProfileMissingParentAccount": "Het bronprofiel mist het bovenliggende account.", + "failedToVerifyPin": "Kan PIN niet verifiëren.", "newProfile": "Nieuw profiel", "profileNameHint": "bijv. Gasten, Kinderen, Woonkamer", "pinProtectionOptional": "PIN-beveiliging (optioneel)", diff --git a/lib/i18n/pl.i18n.json b/lib/i18n/pl.i18n.json index 85e14286..3dbacdb2 100644 --- a/lib/i18n/pl.i18n.json +++ b/lib/i18n/pl.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN zarządzany przez Plex. Edytuj na plex.tv.", "noPinSetEditOnPlex": "Nie ustawiono PIN-u. Aby go wymagać, edytuj użytkownika Home na plex.tv.", "setPin": "Ustaw PIN", + "setPinTitle": "Ustaw PIN", + "confirmPinTitle": "Potwierdź PIN", + "pinSet": "PIN ustawiony", + "changePin": "Zmień", + "removePin": "Usuń", "connectionsLabel": "Połączenia", "add": "Dodaj", "deleteProfileButton": "Usuń profil", "noConnectionsHint": "Brak połączeń — dodaj jedno, aby używać tego profilu.", + "noConnections": "Brak połączeń", "plexHomeAccount": "Konto Plex Home", "connectionDefault": "Domyślne", + "connectionAs": "jako ${displayName}", "makeDefault": "Ustaw jako domyślne", "removeConnection": "Usuń", + "profileRenamed": "Zmieniono nazwę profilu.", "borrowAddTo": "Dodaj do ${displayName}", "borrowExplain": "Pożycz połączenie z innego profilu. Profile chronione PIN wymagają PIN-u.", "borrowEmpty": "Nic do pożyczenia.", "borrowEmptySubtitle": "Najpierw połącz Plex lub Jellyfin z innym profilem.", + "borrowFromProfile": "Od ${displayName}", + "borrowConnectionBorrowed": "Połączenie pożyczone.", + "borrowFailed": "Nie udało się pożyczyć połączenia.", + "incorrectPin": "Nieprawidłowy PIN.", + "sourceProfileMissingParentAccount": "Profil źródłowy nie ma konta nadrzędnego.", + "failedToVerifyPin": "Nie udało się zweryfikować PIN-u.", "newProfile": "Nowy profil", "profileNameHint": "np. Goście, Dzieci, Salon", "pinProtectionOptional": "Ochrona PIN-em (opcjonalnie)", diff --git a/lib/i18n/pt.i18n.json b/lib/i18n/pt.i18n.json index 2b5df4cf..6e494841 100644 --- a/lib/i18n/pt.i18n.json +++ b/lib/i18n/pt.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN gerenciado pelo Plex. Edite em plex.tv.", "noPinSetEditOnPlex": "Nenhum PIN definido. Para exigir um, edite o usuário Home em plex.tv.", "setPin": "Definir PIN", + "setPinTitle": "Definir PIN", + "confirmPinTitle": "Confirmar PIN", + "pinSet": "PIN definido", + "changePin": "Alterar", + "removePin": "Remover", "connectionsLabel": "Conexões", "add": "Adicionar", "deleteProfileButton": "Excluir perfil", "noConnectionsHint": "Sem conexões — adicione uma para usar este perfil.", + "noConnections": "Sem conexões", "plexHomeAccount": "Conta Plex Home", "connectionDefault": "Padrão", + "connectionAs": "como ${displayName}", "makeDefault": "Definir como padrão", "removeConnection": "Remover", + "profileRenamed": "Perfil renomeado.", "borrowAddTo": "Adicionar a ${displayName}", "borrowExplain": "Use a conexão de outro perfil. Perfis protegidos por PIN exigem PIN.", "borrowEmpty": "Nada para emprestar ainda.", "borrowEmptySubtitle": "Conecte Plex ou Jellyfin a outro perfil primeiro.", + "borrowFromProfile": "De ${displayName}", + "borrowConnectionBorrowed": "Conexão tomada emprestada.", + "borrowFailed": "Não foi possível tomar a conexão emprestada.", + "incorrectPin": "PIN incorreto.", + "sourceProfileMissingParentAccount": "O perfil de origem não tem a conta principal.", + "failedToVerifyPin": "Não foi possível verificar o PIN.", "newProfile": "Novo perfil", "profileNameHint": "ex.: Visitantes, Crianças, Sala de família", "pinProtectionOptional": "Proteção por PIN (opcional)", diff --git a/lib/i18n/ru.i18n.json b/lib/i18n/ru.i18n.json index 8ebf5fd2..8d0e203c 100644 --- a/lib/i18n/ru.i18n.json +++ b/lib/i18n/ru.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN управляется Plex. Редактируйте на plex.tv.", "noPinSetEditOnPlex": "PIN не установлен. Чтобы требовать его, отредактируйте пользователя Home на plex.tv.", "setPin": "Установить PIN", + "setPinTitle": "Установить PIN", + "confirmPinTitle": "Подтвердить PIN", + "pinSet": "PIN установлен", + "changePin": "Изменить", + "removePin": "Удалить", "connectionsLabel": "Соединения", "add": "Добавить", "deleteProfileButton": "Удалить профиль", "noConnectionsHint": "Нет соединений — добавьте одно, чтобы использовать этот профиль.", + "noConnections": "Нет соединений", "plexHomeAccount": "Аккаунт Plex Home", "connectionDefault": "По умолчанию", + "connectionAs": "как ${displayName}", "makeDefault": "Сделать по умолчанию", "removeConnection": "Удалить", + "profileRenamed": "Профиль переименован.", "borrowAddTo": "Добавить в ${displayName}", "borrowExplain": "Заимствуйте подключение другого профиля. Для профилей с PIN нужен PIN.", "borrowEmpty": "Пока нечего заимствовать.", "borrowEmptySubtitle": "Сначала подключите Plex или Jellyfin к другому профилю.", + "borrowFromProfile": "Из ${displayName}", + "borrowConnectionBorrowed": "Подключение заимствовано.", + "borrowFailed": "Не удалось заимствовать подключение.", + "incorrectPin": "Неверный PIN.", + "sourceProfileMissingParentAccount": "У исходного профиля отсутствует родительская учетная запись.", + "failedToVerifyPin": "Не удалось проверить PIN.", "newProfile": "Новый профиль", "profileNameHint": "например, Гости, Дети, Семейная комната", "pinProtectionOptional": "Защита PIN-кодом (необязательно)", diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index e5e2334b..79f0dbc7 100644 --- a/lib/i18n/strings.g.dart +++ b/lib/i18n/strings.g.dart @@ -4,9 +4,9 @@ /// To regenerate, run: `dart run slang` /// /// Locales: 15 -/// Strings: 16935 (1129 per locale) +/// Strings: 17145 (1143 per locale) /// -/// Built on 2026-05-10 at 13:39 UTC +/// Built on 2026-05-11 at 02:36 UTC // coverage:ignore-file // ignore_for_file: type=lint, unused_import diff --git a/lib/i18n/strings_da.g.dart b/lib/i18n/strings_da.g.dart index d1ae9787..88ae2d7f 100644 --- a/lib/i18n/strings_da.g.dart +++ b/lib/i18n/strings_da.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesDa extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN administreres af Plex. Rediger på plex.tv.'; @override String get noPinSetEditOnPlex => 'Ingen PIN-kode angivet. For at kræve en, redigér Home-brugeren på plex.tv.'; @override String get setPin => 'Angiv PIN'; + @override String get setPinTitle => 'Angiv PIN'; + @override String get confirmPinTitle => 'Bekræft PIN'; + @override String get pinSet => 'PIN angivet'; + @override String get changePin => 'Skift'; + @override String get removePin => 'Fjern'; @override String get connectionsLabel => 'Forbindelser'; @override String get add => 'Tilføj'; @override String get deleteProfileButton => 'Slet profil'; @override String get noConnectionsHint => 'Ingen forbindelser — tilføj en for at bruge denne profil.'; + @override String get noConnections => 'Ingen forbindelser'; @override String get plexHomeAccount => 'Plex Home-konto'; @override String get connectionDefault => 'Standard'; + @override String connectionAs({required Object displayName}) => 'som ${displayName}'; @override String get makeDefault => 'Gør til standard'; @override String get removeConnection => 'Fjern'; + @override String get profileRenamed => 'Profil omdøbt.'; @override String borrowAddTo({required Object displayName}) => 'Tilføj til ${displayName}'; @override String get borrowExplain => 'Lån en anden profils forbindelse. PIN-beskyttede profiler kræver en PIN.'; @override String get borrowEmpty => 'Intet at låne endnu.'; @override String get borrowEmptySubtitle => 'Forbind Plex eller Jellyfin til en anden profil først.'; + @override String borrowFromProfile({required Object displayName}) => 'Fra ${displayName}'; + @override String get borrowConnectionBorrowed => 'Forbindelse lånt.'; + @override String get borrowFailed => 'Kunne ikke låne forbindelse.'; + @override String get incorrectPin => 'Forkert PIN.'; + @override String get sourceProfileMissingParentAccount => 'Kildeprofilen mangler sin overordnede konto.'; + @override String get failedToVerifyPin => 'Kunne ikke bekræfte PIN.'; @override String get newProfile => 'Ny profil'; @override String get profileNameHint => 'fx. Gæster, Børn, Familiens stue'; @override String get pinProtectionOptional => 'PIN-beskyttelse (valgfri)'; @@ -2256,20 +2270,34 @@ extension on TranslationsDa { 'profiles.pinManagedByPlex' => 'PIN administreres af Plex. Rediger på plex.tv.', 'profiles.noPinSetEditOnPlex' => 'Ingen PIN-kode angivet. For at kræve en, redigér Home-brugeren på plex.tv.', 'profiles.setPin' => 'Angiv PIN', + 'profiles.setPinTitle' => 'Angiv PIN', + 'profiles.confirmPinTitle' => 'Bekræft PIN', + 'profiles.pinSet' => 'PIN angivet', + 'profiles.changePin' => 'Skift', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Fjern', 'profiles.connectionsLabel' => 'Forbindelser', 'profiles.add' => 'Tilføj', 'profiles.deleteProfileButton' => 'Slet profil', 'profiles.noConnectionsHint' => 'Ingen forbindelser — tilføj en for at bruge denne profil.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Ingen forbindelser', 'profiles.plexHomeAccount' => 'Plex Home-konto', 'profiles.connectionDefault' => 'Standard', + 'profiles.connectionAs' => ({required Object displayName}) => 'som ${displayName}', 'profiles.makeDefault' => 'Gør til standard', 'profiles.removeConnection' => 'Fjern', + 'profiles.profileRenamed' => 'Profil omdøbt.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Tilføj til ${displayName}', 'profiles.borrowExplain' => 'Lån en anden profils forbindelse. PIN-beskyttede profiler kræver en PIN.', 'profiles.borrowEmpty' => 'Intet at låne endnu.', 'profiles.borrowEmptySubtitle' => 'Forbind Plex eller Jellyfin til en anden profil først.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'Fra ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Forbindelse lånt.', + 'profiles.borrowFailed' => 'Kunne ikke låne forbindelse.', + 'profiles.incorrectPin' => 'Forkert PIN.', + 'profiles.sourceProfileMissingParentAccount' => 'Kildeprofilen mangler sin overordnede konto.', + 'profiles.failedToVerifyPin' => 'Kunne ikke bekræfte PIN.', 'profiles.newProfile' => 'Ny profil', 'profiles.profileNameHint' => 'fx. Gæster, Børn, Familiens stue', 'profiles.pinProtectionOptional' => 'PIN-beskyttelse (valgfri)', @@ -2760,6 +2788,8 @@ extension on TranslationsDa { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episoder tilføjet de seneste ${count} dage', 'metadataEdit.deleteAfterPlaying' => 'Slet episoder efter afspilning', 'metadataEdit.never' => 'Aldrig', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Efter en dag', 'metadataEdit.afterAWeek' => 'Efter en uge', 'metadataEdit.afterAMonth' => 'Efter en måned', @@ -2774,8 +2804,6 @@ extension on TranslationsDa { 'metadataEdit.metadataLanguage' => 'Metadatasprog', 'metadataEdit.useOriginalTitle' => 'Brug originaltitel', 'metadataEdit.preferredAudioLanguage' => 'Foretrukket lydsprog', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Foretrukket undertekstsprog', 'metadataEdit.subtitleMode' => 'Auto-vælg underteksttilstand', 'metadataEdit.manuallySelected' => 'Manuelt valgt', diff --git a/lib/i18n/strings_de.g.dart b/lib/i18n/strings_de.g.dart index d53b5d62..543758d0 100644 --- a/lib/i18n/strings_de.g.dart +++ b/lib/i18n/strings_de.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesDe extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN wird von Plex verwaltet. Auf plex.tv bearbeiten.'; @override String get noPinSetEditOnPlex => 'Keine PIN festgelegt. Um eine zu verlangen, bearbeite den Home-Benutzer auf plex.tv.'; @override String get setPin => 'PIN festlegen'; + @override String get setPinTitle => 'PIN festlegen'; + @override String get confirmPinTitle => 'PIN bestätigen'; + @override String get pinSet => 'PIN festgelegt'; + @override String get changePin => 'Ändern'; + @override String get removePin => 'Entfernen'; @override String get connectionsLabel => 'Verbindungen'; @override String get add => 'Hinzufügen'; @override String get deleteProfileButton => 'Profil löschen'; @override String get noConnectionsHint => 'Keine Verbindungen — füge eine hinzu, um dieses Profil zu nutzen.'; + @override String get noConnections => 'Keine Verbindungen'; @override String get plexHomeAccount => 'Plex Home-Konto'; @override String get connectionDefault => 'Standard'; + @override String connectionAs({required Object displayName}) => 'als ${displayName}'; @override String get makeDefault => 'Als Standard'; @override String get removeConnection => 'Entfernen'; + @override String get profileRenamed => 'Profil umbenannt.'; @override String borrowAddTo({required Object displayName}) => 'Zu ${displayName} hinzufügen'; @override String get borrowExplain => 'Verbindung eines anderen Profils leihen. PIN-geschützte Profile erfordern eine PIN.'; @override String get borrowEmpty => 'Noch nichts zum Ausleihen.'; @override String get borrowEmptySubtitle => 'Verbinde zuerst Plex oder Jellyfin mit einem anderen Profil.'; + @override String borrowFromProfile({required Object displayName}) => 'Von ${displayName}'; + @override String get borrowConnectionBorrowed => 'Verbindung ausgeliehen.'; + @override String get borrowFailed => 'Verbindung konnte nicht ausgeliehen werden.'; + @override String get incorrectPin => 'Falsche PIN.'; + @override String get sourceProfileMissingParentAccount => 'Dem Quellprofil fehlt das übergeordnete Konto.'; + @override String get failedToVerifyPin => 'PIN konnte nicht verifiziert werden.'; @override String get newProfile => 'Neues Profil'; @override String get profileNameHint => 'z. B. Gäste, Kinder, Wohnzimmer'; @override String get pinProtectionOptional => 'PIN-Schutz (optional)'; @@ -2256,20 +2270,34 @@ extension on TranslationsDe { 'profiles.pinManagedByPlex' => 'PIN wird von Plex verwaltet. Auf plex.tv bearbeiten.', 'profiles.noPinSetEditOnPlex' => 'Keine PIN festgelegt. Um eine zu verlangen, bearbeite den Home-Benutzer auf plex.tv.', 'profiles.setPin' => 'PIN festlegen', + 'profiles.setPinTitle' => 'PIN festlegen', + 'profiles.confirmPinTitle' => 'PIN bestätigen', + 'profiles.pinSet' => 'PIN festgelegt', + 'profiles.changePin' => 'Ändern', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Entfernen', 'profiles.connectionsLabel' => 'Verbindungen', 'profiles.add' => 'Hinzufügen', 'profiles.deleteProfileButton' => 'Profil löschen', 'profiles.noConnectionsHint' => 'Keine Verbindungen — füge eine hinzu, um dieses Profil zu nutzen.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Keine Verbindungen', 'profiles.plexHomeAccount' => 'Plex Home-Konto', 'profiles.connectionDefault' => 'Standard', + 'profiles.connectionAs' => ({required Object displayName}) => 'als ${displayName}', 'profiles.makeDefault' => 'Als Standard', 'profiles.removeConnection' => 'Entfernen', + 'profiles.profileRenamed' => 'Profil umbenannt.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Zu ${displayName} hinzufügen', 'profiles.borrowExplain' => 'Verbindung eines anderen Profils leihen. PIN-geschützte Profile erfordern eine PIN.', 'profiles.borrowEmpty' => 'Noch nichts zum Ausleihen.', 'profiles.borrowEmptySubtitle' => 'Verbinde zuerst Plex oder Jellyfin mit einem anderen Profil.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'Von ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Verbindung ausgeliehen.', + 'profiles.borrowFailed' => 'Verbindung konnte nicht ausgeliehen werden.', + 'profiles.incorrectPin' => 'Falsche PIN.', + 'profiles.sourceProfileMissingParentAccount' => 'Dem Quellprofil fehlt das übergeordnete Konto.', + 'profiles.failedToVerifyPin' => 'PIN konnte nicht verifiziert werden.', 'profiles.newProfile' => 'Neues Profil', 'profiles.profileNameHint' => 'z. B. Gäste, Kinder, Wohnzimmer', 'profiles.pinProtectionOptional' => 'PIN-Schutz (optional)', @@ -2760,6 +2788,8 @@ extension on TranslationsDe { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episoden der letzten ${count} Tage', 'metadataEdit.deleteAfterPlaying' => 'Episoden nach Wiedergabe löschen', 'metadataEdit.never' => 'Nie', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Nach einem Tag', 'metadataEdit.afterAWeek' => 'Nach einer Woche', 'metadataEdit.afterAMonth' => 'Nach einem Monat', @@ -2774,8 +2804,6 @@ extension on TranslationsDe { 'metadataEdit.metadataLanguage' => 'Metadaten-Sprache', 'metadataEdit.useOriginalTitle' => 'Originaltitel verwenden', 'metadataEdit.preferredAudioLanguage' => 'Bevorzugte Audiosprache', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Bevorzugte Untertitelsprache', 'metadataEdit.subtitleMode' => 'Automatische Untertitelauswahl', 'metadataEdit.manuallySelected' => 'Manuell ausgewählt', diff --git a/lib/i18n/strings_en.g.dart b/lib/i18n/strings_en.g.dart index 5db76eae..1f0f4d3c 100644 --- a/lib/i18n/strings_en.g.dart +++ b/lib/i18n/strings_en.g.dart @@ -1700,6 +1700,21 @@ class TranslationsProfilesEn { /// en: 'Set PIN' String get setPin => 'Set PIN'; + /// en: 'Set PIN' + String get setPinTitle => 'Set PIN'; + + /// en: 'Confirm PIN' + String get confirmPinTitle => 'Confirm PIN'; + + /// en: 'PIN set' + String get pinSet => 'PIN set'; + + /// en: 'Change' + String get changePin => 'Change'; + + /// en: 'Remove' + String get removePin => 'Remove'; + /// en: 'Connections' String get connectionsLabel => 'Connections'; @@ -1712,18 +1727,27 @@ class TranslationsProfilesEn { /// en: 'No connections — add one to use this profile.' String get noConnectionsHint => 'No connections — add one to use this profile.'; + /// en: 'No connections' + String get noConnections => 'No connections'; + /// en: 'Plex Home account' String get plexHomeAccount => 'Plex Home account'; /// en: 'Default' String get connectionDefault => 'Default'; + /// en: 'as ${displayName}' + String connectionAs({required Object displayName}) => 'as ${displayName}'; + /// en: 'Make default' String get makeDefault => 'Make default'; /// en: 'Remove' String get removeConnection => 'Remove'; + /// en: 'Profile renamed.' + String get profileRenamed => 'Profile renamed.'; + /// en: 'Add to ${displayName}' String borrowAddTo({required Object displayName}) => 'Add to ${displayName}'; @@ -1736,6 +1760,24 @@ class TranslationsProfilesEn { /// en: 'Connect Plex or Jellyfin to another profile first.' String get borrowEmptySubtitle => 'Connect Plex or Jellyfin to another profile first.'; + /// en: 'From ${displayName}' + String borrowFromProfile({required Object displayName}) => 'From ${displayName}'; + + /// en: 'Connection borrowed.' + String get borrowConnectionBorrowed => 'Connection borrowed.'; + + /// en: 'Failed to borrow connection.' + String get borrowFailed => 'Failed to borrow connection.'; + + /// en: 'Incorrect PIN.' + String get incorrectPin => 'Incorrect PIN.'; + + /// en: 'Source profile is missing its parent account.' + String get sourceProfileMissingParentAccount => 'Source profile is missing its parent account.'; + + /// en: 'Failed to verify PIN.' + String get failedToVerifyPin => 'Failed to verify PIN.'; + /// en: 'New profile' String get newProfile => 'New profile'; @@ -4520,20 +4562,34 @@ extension on Translations { 'profiles.pinManagedByPlex' => 'PIN managed by Plex. Edit on plex.tv.', 'profiles.noPinSetEditOnPlex' => 'No PIN set. To require one, edit the home user on plex.tv.', 'profiles.setPin' => 'Set PIN', + 'profiles.setPinTitle' => 'Set PIN', + 'profiles.confirmPinTitle' => 'Confirm PIN', + 'profiles.pinSet' => 'PIN set', + 'profiles.changePin' => 'Change', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Remove', 'profiles.connectionsLabel' => 'Connections', 'profiles.add' => 'Add', 'profiles.deleteProfileButton' => 'Delete profile', 'profiles.noConnectionsHint' => 'No connections — add one to use this profile.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'No connections', 'profiles.plexHomeAccount' => 'Plex Home account', 'profiles.connectionDefault' => 'Default', + 'profiles.connectionAs' => ({required Object displayName}) => 'as ${displayName}', 'profiles.makeDefault' => 'Make default', 'profiles.removeConnection' => 'Remove', + 'profiles.profileRenamed' => 'Profile renamed.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Add to ${displayName}', 'profiles.borrowExplain' => 'Borrow another profile\'s connection. PIN-protected profiles require a PIN.', 'profiles.borrowEmpty' => 'Nothing to borrow yet.', 'profiles.borrowEmptySubtitle' => 'Connect Plex or Jellyfin to another profile first.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'From ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Connection borrowed.', + 'profiles.borrowFailed' => 'Failed to borrow connection.', + 'profiles.incorrectPin' => 'Incorrect PIN.', + 'profiles.sourceProfileMissingParentAccount' => 'Source profile is missing its parent account.', + 'profiles.failedToVerifyPin' => 'Failed to verify PIN.', 'profiles.newProfile' => 'New profile', 'profiles.profileNameHint' => 'e.g. Guests, Kids, Family Room', 'profiles.pinProtectionOptional' => 'PIN protection (optional)', @@ -5024,6 +5080,8 @@ extension on Translations { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episodes added in the past ${count} days', 'metadataEdit.deleteAfterPlaying' => 'Delete Episodes After Playing', 'metadataEdit.never' => 'Never', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'After a day', 'metadataEdit.afterAWeek' => 'After a week', 'metadataEdit.afterAMonth' => 'After a month', @@ -5038,8 +5096,6 @@ extension on Translations { 'metadataEdit.metadataLanguage' => 'Metadata Language', 'metadataEdit.useOriginalTitle' => 'Use Original Title', 'metadataEdit.preferredAudioLanguage' => 'Preferred Audio Language', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Preferred Subtitle Language', 'metadataEdit.subtitleMode' => 'Auto-Select Subtitle Mode', 'metadataEdit.manuallySelected' => 'Manually selected', diff --git a/lib/i18n/strings_es.g.dart b/lib/i18n/strings_es.g.dart index 14401552..78049e26 100644 --- a/lib/i18n/strings_es.g.dart +++ b/lib/i18n/strings_es.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesEs extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN gestionado por Plex. Edita en plex.tv.'; @override String get noPinSetEditOnPlex => 'Sin PIN establecido. Para requerir uno, edita el usuario Home en plex.tv.'; @override String get setPin => 'Establecer PIN'; + @override String get setPinTitle => 'Establecer PIN'; + @override String get confirmPinTitle => 'Confirmar PIN'; + @override String get pinSet => 'PIN establecido'; + @override String get changePin => 'Cambiar'; + @override String get removePin => 'Eliminar'; @override String get connectionsLabel => 'Conexiones'; @override String get add => 'Añadir'; @override String get deleteProfileButton => 'Eliminar perfil'; @override String get noConnectionsHint => 'Sin conexiones — añade una para usar este perfil.'; + @override String get noConnections => 'Sin conexiones'; @override String get plexHomeAccount => 'Cuenta Plex Home'; @override String get connectionDefault => 'Predeterminada'; + @override String connectionAs({required Object displayName}) => 'como ${displayName}'; @override String get makeDefault => 'Establecer como predeterminada'; @override String get removeConnection => 'Eliminar'; + @override String get profileRenamed => 'Perfil renombrado.'; @override String borrowAddTo({required Object displayName}) => 'Añadir a ${displayName}'; @override String get borrowExplain => 'Toma prestada la conexión de otro perfil. Los perfiles protegidos con PIN requieren un PIN.'; @override String get borrowEmpty => 'Nada para tomar prestado todavía.'; @override String get borrowEmptySubtitle => 'Conecta Plex o Jellyfin primero a otro perfil.'; + @override String borrowFromProfile({required Object displayName}) => 'De ${displayName}'; + @override String get borrowConnectionBorrowed => 'Conexión tomada prestada.'; + @override String get borrowFailed => 'No se pudo tomar prestada la conexión.'; + @override String get incorrectPin => 'PIN incorrecto.'; + @override String get sourceProfileMissingParentAccount => 'Al perfil de origen le falta su cuenta principal.'; + @override String get failedToVerifyPin => 'No se pudo verificar el PIN.'; @override String get newProfile => 'Nuevo perfil'; @override String get profileNameHint => 'p. ej. Invitados, Niños, Sala familiar'; @override String get pinProtectionOptional => 'Protección con PIN (opcional)'; @@ -2256,20 +2270,34 @@ extension on TranslationsEs { 'profiles.pinManagedByPlex' => 'PIN gestionado por Plex. Edita en plex.tv.', 'profiles.noPinSetEditOnPlex' => 'Sin PIN establecido. Para requerir uno, edita el usuario Home en plex.tv.', 'profiles.setPin' => 'Establecer PIN', + 'profiles.setPinTitle' => 'Establecer PIN', + 'profiles.confirmPinTitle' => 'Confirmar PIN', + 'profiles.pinSet' => 'PIN establecido', + 'profiles.changePin' => 'Cambiar', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Eliminar', 'profiles.connectionsLabel' => 'Conexiones', 'profiles.add' => 'Añadir', 'profiles.deleteProfileButton' => 'Eliminar perfil', 'profiles.noConnectionsHint' => 'Sin conexiones — añade una para usar este perfil.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Sin conexiones', 'profiles.plexHomeAccount' => 'Cuenta Plex Home', 'profiles.connectionDefault' => 'Predeterminada', + 'profiles.connectionAs' => ({required Object displayName}) => 'como ${displayName}', 'profiles.makeDefault' => 'Establecer como predeterminada', 'profiles.removeConnection' => 'Eliminar', + 'profiles.profileRenamed' => 'Perfil renombrado.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Añadir a ${displayName}', 'profiles.borrowExplain' => 'Toma prestada la conexión de otro perfil. Los perfiles protegidos con PIN requieren un PIN.', 'profiles.borrowEmpty' => 'Nada para tomar prestado todavía.', 'profiles.borrowEmptySubtitle' => 'Conecta Plex o Jellyfin primero a otro perfil.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'De ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Conexión tomada prestada.', + 'profiles.borrowFailed' => 'No se pudo tomar prestada la conexión.', + 'profiles.incorrectPin' => 'PIN incorrecto.', + 'profiles.sourceProfileMissingParentAccount' => 'Al perfil de origen le falta su cuenta principal.', + 'profiles.failedToVerifyPin' => 'No se pudo verificar el PIN.', 'profiles.newProfile' => 'Nuevo perfil', 'profiles.profileNameHint' => 'p. ej. Invitados, Niños, Sala familiar', 'profiles.pinProtectionOptional' => 'Protección con PIN (opcional)', @@ -2760,6 +2788,8 @@ extension on TranslationsEs { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episodios añadidos en los últimos ${count} días', 'metadataEdit.deleteAfterPlaying' => 'Eliminar episodios después de reproducir', 'metadataEdit.never' => 'Nunca', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Después de un día', 'metadataEdit.afterAWeek' => 'Después de una semana', 'metadataEdit.afterAMonth' => 'Después de un mes', @@ -2774,8 +2804,6 @@ extension on TranslationsEs { 'metadataEdit.metadataLanguage' => 'Idioma de metadatos', 'metadataEdit.useOriginalTitle' => 'Usar título original', 'metadataEdit.preferredAudioLanguage' => 'Idioma de audio preferido', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Idioma de subtítulos preferido', 'metadataEdit.subtitleMode' => 'Selección automática de subtítulos', 'metadataEdit.manuallySelected' => 'Seleccionado manualmente', diff --git a/lib/i18n/strings_fr.g.dart b/lib/i18n/strings_fr.g.dart index 6478f51b..16740856 100644 --- a/lib/i18n/strings_fr.g.dart +++ b/lib/i18n/strings_fr.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesFr extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN géré par Plex. Modifier sur plex.tv.'; @override String get noPinSetEditOnPlex => 'Aucun PIN défini. Pour en exiger un, modifiez l\'utilisateur Home sur plex.tv.'; @override String get setPin => 'Définir un PIN'; + @override String get setPinTitle => 'Définir un PIN'; + @override String get confirmPinTitle => 'Confirmer le PIN'; + @override String get pinSet => 'PIN défini'; + @override String get changePin => 'Modifier'; + @override String get removePin => 'Retirer'; @override String get connectionsLabel => 'Connexions'; @override String get add => 'Ajouter'; @override String get deleteProfileButton => 'Supprimer le profil'; @override String get noConnectionsHint => 'Aucune connexion — ajoutez-en une pour utiliser ce profil.'; + @override String get noConnections => 'Aucune connexion'; @override String get plexHomeAccount => 'Compte Plex Home'; @override String get connectionDefault => 'Par défaut'; + @override String connectionAs({required Object displayName}) => 'en tant que ${displayName}'; @override String get makeDefault => 'Définir par défaut'; @override String get removeConnection => 'Retirer'; + @override String get profileRenamed => 'Profil renommé.'; @override String borrowAddTo({required Object displayName}) => 'Ajouter à ${displayName}'; @override String get borrowExplain => 'Emprunter la connexion d\'un autre profil. Les profils protégés par PIN exigent un PIN.'; @override String get borrowEmpty => 'Rien à emprunter pour le moment.'; @override String get borrowEmptySubtitle => 'Connectez d\'abord Plex ou Jellyfin à un autre profil.'; + @override String borrowFromProfile({required Object displayName}) => 'De ${displayName}'; + @override String get borrowConnectionBorrowed => 'Connexion empruntée.'; + @override String get borrowFailed => 'Impossible d\'emprunter la connexion.'; + @override String get incorrectPin => 'PIN incorrect.'; + @override String get sourceProfileMissingParentAccount => 'Le profil source n\'a pas son compte parent.'; + @override String get failedToVerifyPin => 'Impossible de vérifier le PIN.'; @override String get newProfile => 'Nouveau profil'; @override String get profileNameHint => 'ex. Invités, Enfants, Salon familial'; @override String get pinProtectionOptional => 'Protection par PIN (optionnelle)'; @@ -2256,20 +2270,34 @@ extension on TranslationsFr { 'profiles.pinManagedByPlex' => 'PIN géré par Plex. Modifier sur plex.tv.', 'profiles.noPinSetEditOnPlex' => 'Aucun PIN défini. Pour en exiger un, modifiez l\'utilisateur Home sur plex.tv.', 'profiles.setPin' => 'Définir un PIN', + 'profiles.setPinTitle' => 'Définir un PIN', + 'profiles.confirmPinTitle' => 'Confirmer le PIN', + 'profiles.pinSet' => 'PIN défini', + 'profiles.changePin' => 'Modifier', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Retirer', 'profiles.connectionsLabel' => 'Connexions', 'profiles.add' => 'Ajouter', 'profiles.deleteProfileButton' => 'Supprimer le profil', 'profiles.noConnectionsHint' => 'Aucune connexion — ajoutez-en une pour utiliser ce profil.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Aucune connexion', 'profiles.plexHomeAccount' => 'Compte Plex Home', 'profiles.connectionDefault' => 'Par défaut', + 'profiles.connectionAs' => ({required Object displayName}) => 'en tant que ${displayName}', 'profiles.makeDefault' => 'Définir par défaut', 'profiles.removeConnection' => 'Retirer', + 'profiles.profileRenamed' => 'Profil renommé.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Ajouter à ${displayName}', 'profiles.borrowExplain' => 'Emprunter la connexion d\'un autre profil. Les profils protégés par PIN exigent un PIN.', 'profiles.borrowEmpty' => 'Rien à emprunter pour le moment.', 'profiles.borrowEmptySubtitle' => 'Connectez d\'abord Plex ou Jellyfin à un autre profil.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'De ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Connexion empruntée.', + 'profiles.borrowFailed' => 'Impossible d\'emprunter la connexion.', + 'profiles.incorrectPin' => 'PIN incorrect.', + 'profiles.sourceProfileMissingParentAccount' => 'Le profil source n\'a pas son compte parent.', + 'profiles.failedToVerifyPin' => 'Impossible de vérifier le PIN.', 'profiles.newProfile' => 'Nouveau profil', 'profiles.profileNameHint' => 'ex. Invités, Enfants, Salon familial', 'profiles.pinProtectionOptional' => 'Protection par PIN (optionnelle)', @@ -2760,6 +2788,8 @@ extension on TranslationsFr { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Épisodes ajoutés ces ${count} derniers jours', 'metadataEdit.deleteAfterPlaying' => 'Supprimer les épisodes après lecture', 'metadataEdit.never' => 'Jamais', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Après un jour', 'metadataEdit.afterAWeek' => 'Après une semaine', 'metadataEdit.afterAMonth' => 'Après un mois', @@ -2774,8 +2804,6 @@ extension on TranslationsFr { 'metadataEdit.metadataLanguage' => 'Langue des métadonnées', 'metadataEdit.useOriginalTitle' => 'Utiliser le titre original', 'metadataEdit.preferredAudioLanguage' => 'Langue audio préférée', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Langue de sous-titres préférée', 'metadataEdit.subtitleMode' => 'Sélection automatique des sous-titres', 'metadataEdit.manuallySelected' => 'Sélectionné manuellement', diff --git a/lib/i18n/strings_it.g.dart b/lib/i18n/strings_it.g.dart index eee7fa31..56d94f01 100644 --- a/lib/i18n/strings_it.g.dart +++ b/lib/i18n/strings_it.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesIt extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN gestito da Plex. Modifica su plex.tv.'; @override String get noPinSetEditOnPlex => 'Nessun PIN impostato. Per richiederne uno, modifica l\'utente Home su plex.tv.'; @override String get setPin => 'Imposta PIN'; + @override String get setPinTitle => 'Imposta PIN'; + @override String get confirmPinTitle => 'Conferma PIN'; + @override String get pinSet => 'PIN impostato'; + @override String get changePin => 'Cambia'; + @override String get removePin => 'Rimuovi'; @override String get connectionsLabel => 'Connessioni'; @override String get add => 'Aggiungi'; @override String get deleteProfileButton => 'Elimina profilo'; @override String get noConnectionsHint => 'Nessuna connessione — aggiungine una per usare questo profilo.'; + @override String get noConnections => 'Nessuna connessione'; @override String get plexHomeAccount => 'Account Plex Home'; @override String get connectionDefault => 'Predefinita'; + @override String connectionAs({required Object displayName}) => 'come ${displayName}'; @override String get makeDefault => 'Imposta come predefinita'; @override String get removeConnection => 'Rimuovi'; + @override String get profileRenamed => 'Profilo rinominato.'; @override String borrowAddTo({required Object displayName}) => 'Aggiungi a ${displayName}'; @override String get borrowExplain => 'Prendi in prestito la connessione di un altro profilo. I profili protetti da PIN richiedono un PIN.'; @override String get borrowEmpty => 'Nulla da prendere in prestito al momento.'; @override String get borrowEmptySubtitle => 'Collega prima Plex o Jellyfin a un altro profilo.'; + @override String borrowFromProfile({required Object displayName}) => 'Da ${displayName}'; + @override String get borrowConnectionBorrowed => 'Connessione presa in prestito.'; + @override String get borrowFailed => 'Impossibile prendere in prestito la connessione.'; + @override String get incorrectPin => 'PIN errato.'; + @override String get sourceProfileMissingParentAccount => 'Al profilo di origine manca l\'account principale.'; + @override String get failedToVerifyPin => 'Impossibile verificare il PIN.'; @override String get newProfile => 'Nuovo profilo'; @override String get profileNameHint => 'es. Ospiti, Bambini, Soggiorno'; @override String get pinProtectionOptional => 'Protezione PIN (opzionale)'; @@ -2256,20 +2270,34 @@ extension on TranslationsIt { 'profiles.pinManagedByPlex' => 'PIN gestito da Plex. Modifica su plex.tv.', 'profiles.noPinSetEditOnPlex' => 'Nessun PIN impostato. Per richiederne uno, modifica l\'utente Home su plex.tv.', 'profiles.setPin' => 'Imposta PIN', + 'profiles.setPinTitle' => 'Imposta PIN', + 'profiles.confirmPinTitle' => 'Conferma PIN', + 'profiles.pinSet' => 'PIN impostato', + 'profiles.changePin' => 'Cambia', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Rimuovi', 'profiles.connectionsLabel' => 'Connessioni', 'profiles.add' => 'Aggiungi', 'profiles.deleteProfileButton' => 'Elimina profilo', 'profiles.noConnectionsHint' => 'Nessuna connessione — aggiungine una per usare questo profilo.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Nessuna connessione', 'profiles.plexHomeAccount' => 'Account Plex Home', 'profiles.connectionDefault' => 'Predefinita', + 'profiles.connectionAs' => ({required Object displayName}) => 'come ${displayName}', 'profiles.makeDefault' => 'Imposta come predefinita', 'profiles.removeConnection' => 'Rimuovi', + 'profiles.profileRenamed' => 'Profilo rinominato.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Aggiungi a ${displayName}', 'profiles.borrowExplain' => 'Prendi in prestito la connessione di un altro profilo. I profili protetti da PIN richiedono un PIN.', 'profiles.borrowEmpty' => 'Nulla da prendere in prestito al momento.', 'profiles.borrowEmptySubtitle' => 'Collega prima Plex o Jellyfin a un altro profilo.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'Da ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Connessione presa in prestito.', + 'profiles.borrowFailed' => 'Impossibile prendere in prestito la connessione.', + 'profiles.incorrectPin' => 'PIN errato.', + 'profiles.sourceProfileMissingParentAccount' => 'Al profilo di origine manca l\'account principale.', + 'profiles.failedToVerifyPin' => 'Impossibile verificare il PIN.', 'profiles.newProfile' => 'Nuovo profilo', 'profiles.profileNameHint' => 'es. Ospiti, Bambini, Soggiorno', 'profiles.pinProtectionOptional' => 'Protezione PIN (opzionale)', @@ -2760,6 +2788,8 @@ extension on TranslationsIt { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episodi aggiunti negli ultimi ${count} giorni', 'metadataEdit.deleteAfterPlaying' => 'Elimina episodi dopo la riproduzione', 'metadataEdit.never' => 'Mai', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Dopo un giorno', 'metadataEdit.afterAWeek' => 'Dopo una settimana', 'metadataEdit.afterAMonth' => 'Dopo un mese', @@ -2774,8 +2804,6 @@ extension on TranslationsIt { 'metadataEdit.metadataLanguage' => 'Lingua metadati', 'metadataEdit.useOriginalTitle' => 'Usa titolo originale', 'metadataEdit.preferredAudioLanguage' => 'Lingua audio preferita', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Lingua sottotitoli preferita', 'metadataEdit.subtitleMode' => 'Selezione automatica sottotitoli', 'metadataEdit.manuallySelected' => 'Selezionato manualmente', diff --git a/lib/i18n/strings_ja.g.dart b/lib/i18n/strings_ja.g.dart index 07fa7624..8ccd7214 100644 --- a/lib/i18n/strings_ja.g.dart +++ b/lib/i18n/strings_ja.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesJa extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PINはPlexで管理されています。plex.tvで編集してください。'; @override String get noPinSetEditOnPlex => 'PINが設定されていません。要求するには、plex.tvでHomeユーザーを編集してください。'; @override String get setPin => 'PINを設定'; + @override String get setPinTitle => 'PINを設定'; + @override String get confirmPinTitle => 'PINを確認'; + @override String get pinSet => 'PIN設定済み'; + @override String get changePin => '変更'; + @override String get removePin => '削除'; @override String get connectionsLabel => '接続'; @override String get add => '追加'; @override String get deleteProfileButton => 'プロファイルを削除'; @override String get noConnectionsHint => '接続がありません — このプロファイルを使うには1つ追加してください。'; + @override String get noConnections => '接続がありません'; @override String get plexHomeAccount => 'Plex Homeアカウント'; @override String get connectionDefault => 'デフォルト'; + @override String connectionAs({required Object displayName}) => '${displayName}として'; @override String get makeDefault => 'デフォルトに設定'; @override String get removeConnection => '削除'; + @override String get profileRenamed => 'プロフィール名を変更しました。'; @override String borrowAddTo({required Object displayName}) => '${displayName}に追加'; @override String get borrowExplain => '別のプロフィールの接続を借用します。PIN保護されたプロフィールにはPINが必要です。'; @override String get borrowEmpty => 'まだ借りるものがありません。'; @override String get borrowEmptySubtitle => 'まず別のプロフィールにPlexまたはJellyfinを接続してください。'; + @override String borrowFromProfile({required Object displayName}) => '${displayName}から'; + @override String get borrowConnectionBorrowed => '接続を借用しました。'; + @override String get borrowFailed => '接続を借用できませんでした。'; + @override String get incorrectPin => 'PINが正しくありません。'; + @override String get sourceProfileMissingParentAccount => 'ソースプロフィールに親アカウントがありません。'; + @override String get failedToVerifyPin => 'PINを確認できませんでした。'; @override String get newProfile => '新しいプロファイル'; @override String get profileNameHint => '例:ゲスト、キッズ、ファミリールーム'; @override String get pinProtectionOptional => 'PIN保護(オプション)'; @@ -2256,20 +2270,34 @@ extension on TranslationsJa { 'profiles.pinManagedByPlex' => 'PINはPlexで管理されています。plex.tvで編集してください。', 'profiles.noPinSetEditOnPlex' => 'PINが設定されていません。要求するには、plex.tvでHomeユーザーを編集してください。', 'profiles.setPin' => 'PINを設定', + 'profiles.setPinTitle' => 'PINを設定', + 'profiles.confirmPinTitle' => 'PINを確認', + 'profiles.pinSet' => 'PIN設定済み', + 'profiles.changePin' => '変更', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => '削除', 'profiles.connectionsLabel' => '接続', 'profiles.add' => '追加', 'profiles.deleteProfileButton' => 'プロファイルを削除', 'profiles.noConnectionsHint' => '接続がありません — このプロファイルを使うには1つ追加してください。', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => '接続がありません', 'profiles.plexHomeAccount' => 'Plex Homeアカウント', 'profiles.connectionDefault' => 'デフォルト', + 'profiles.connectionAs' => ({required Object displayName}) => '${displayName}として', 'profiles.makeDefault' => 'デフォルトに設定', 'profiles.removeConnection' => '削除', + 'profiles.profileRenamed' => 'プロフィール名を変更しました。', 'profiles.borrowAddTo' => ({required Object displayName}) => '${displayName}に追加', 'profiles.borrowExplain' => '別のプロフィールの接続を借用します。PIN保護されたプロフィールにはPINが必要です。', 'profiles.borrowEmpty' => 'まだ借りるものがありません。', 'profiles.borrowEmptySubtitle' => 'まず別のプロフィールにPlexまたはJellyfinを接続してください。', + 'profiles.borrowFromProfile' => ({required Object displayName}) => '${displayName}から', + 'profiles.borrowConnectionBorrowed' => '接続を借用しました。', + 'profiles.borrowFailed' => '接続を借用できませんでした。', + 'profiles.incorrectPin' => 'PINが正しくありません。', + 'profiles.sourceProfileMissingParentAccount' => 'ソースプロフィールに親アカウントがありません。', + 'profiles.failedToVerifyPin' => 'PINを確認できませんでした。', 'profiles.newProfile' => '新しいプロファイル', 'profiles.profileNameHint' => '例:ゲスト、キッズ、ファミリールーム', 'profiles.pinProtectionOptional' => 'PIN保護(オプション)', @@ -2760,6 +2788,8 @@ extension on TranslationsJa { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => '過去${count}日間に追加されたエピソード', 'metadataEdit.deleteAfterPlaying' => '再生後にエピソードを削除', 'metadataEdit.never' => 'しない', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => '1日後', 'metadataEdit.afterAWeek' => '1週間後', 'metadataEdit.afterAMonth' => '1ヶ月後', @@ -2774,8 +2804,6 @@ extension on TranslationsJa { 'metadataEdit.metadataLanguage' => 'メタデータの言語', 'metadataEdit.useOriginalTitle' => '原題を使用', 'metadataEdit.preferredAudioLanguage' => '優先音声言語', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => '優先字幕言語', 'metadataEdit.subtitleMode' => '字幕自動選択モード', 'metadataEdit.manuallySelected' => '手動選択', diff --git a/lib/i18n/strings_ko.g.dart b/lib/i18n/strings_ko.g.dart index 5eb71f16..b1eb4e9e 100644 --- a/lib/i18n/strings_ko.g.dart +++ b/lib/i18n/strings_ko.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesKo extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN은 Plex에서 관리됩니다. plex.tv에서 편집하세요.'; @override String get noPinSetEditOnPlex => '설정된 PIN이 없습니다. 요구하려면 plex.tv에서 Home 사용자를 편집하세요.'; @override String get setPin => 'PIN 설정'; + @override String get setPinTitle => 'PIN 설정'; + @override String get confirmPinTitle => 'PIN 확인'; + @override String get pinSet => 'PIN 설정됨'; + @override String get changePin => '변경'; + @override String get removePin => '제거'; @override String get connectionsLabel => '연결'; @override String get add => '추가'; @override String get deleteProfileButton => '프로필 삭제'; @override String get noConnectionsHint => '연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.'; + @override String get noConnections => '연결 없음'; @override String get plexHomeAccount => 'Plex Home 계정'; @override String get connectionDefault => '기본값'; + @override String connectionAs({required Object displayName}) => '${displayName}(으)로'; @override String get makeDefault => '기본값으로 설정'; @override String get removeConnection => '제거'; + @override String get profileRenamed => '프로필 이름이 변경되었습니다.'; @override String borrowAddTo({required Object displayName}) => '${displayName}에 추가'; @override String get borrowExplain => '다른 프로필의 연결을 빌립니다. PIN으로 보호된 프로필에는 PIN이 필요합니다.'; @override String get borrowEmpty => '아직 빌릴 것이 없습니다.'; @override String get borrowEmptySubtitle => '먼저 다른 프로필에 Plex 또는 Jellyfin을 연결하세요.'; + @override String borrowFromProfile({required Object displayName}) => '${displayName}에서'; + @override String get borrowConnectionBorrowed => '연결을 빌렸습니다.'; + @override String get borrowFailed => '연결을 빌리지 못했습니다.'; + @override String get incorrectPin => 'PIN이 올바르지 않습니다.'; + @override String get sourceProfileMissingParentAccount => '원본 프로필에 상위 계정이 없습니다.'; + @override String get failedToVerifyPin => 'PIN을 확인하지 못했습니다.'; @override String get newProfile => '새 프로필'; @override String get profileNameHint => '예: 손님, 어린이, 가족실'; @override String get pinProtectionOptional => 'PIN 보호 (선택 사항)'; @@ -2256,20 +2270,34 @@ extension on TranslationsKo { 'profiles.pinManagedByPlex' => 'PIN은 Plex에서 관리됩니다. plex.tv에서 편집하세요.', 'profiles.noPinSetEditOnPlex' => '설정된 PIN이 없습니다. 요구하려면 plex.tv에서 Home 사용자를 편집하세요.', 'profiles.setPin' => 'PIN 설정', + 'profiles.setPinTitle' => 'PIN 설정', + 'profiles.confirmPinTitle' => 'PIN 확인', + 'profiles.pinSet' => 'PIN 설정됨', + 'profiles.changePin' => '변경', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => '제거', 'profiles.connectionsLabel' => '연결', 'profiles.add' => '추가', 'profiles.deleteProfileButton' => '프로필 삭제', 'profiles.noConnectionsHint' => '연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => '연결 없음', 'profiles.plexHomeAccount' => 'Plex Home 계정', 'profiles.connectionDefault' => '기본값', + 'profiles.connectionAs' => ({required Object displayName}) => '${displayName}(으)로', 'profiles.makeDefault' => '기본값으로 설정', 'profiles.removeConnection' => '제거', + 'profiles.profileRenamed' => '프로필 이름이 변경되었습니다.', 'profiles.borrowAddTo' => ({required Object displayName}) => '${displayName}에 추가', 'profiles.borrowExplain' => '다른 프로필의 연결을 빌립니다. PIN으로 보호된 프로필에는 PIN이 필요합니다.', 'profiles.borrowEmpty' => '아직 빌릴 것이 없습니다.', 'profiles.borrowEmptySubtitle' => '먼저 다른 프로필에 Plex 또는 Jellyfin을 연결하세요.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => '${displayName}에서', + 'profiles.borrowConnectionBorrowed' => '연결을 빌렸습니다.', + 'profiles.borrowFailed' => '연결을 빌리지 못했습니다.', + 'profiles.incorrectPin' => 'PIN이 올바르지 않습니다.', + 'profiles.sourceProfileMissingParentAccount' => '원본 프로필에 상위 계정이 없습니다.', + 'profiles.failedToVerifyPin' => 'PIN을 확인하지 못했습니다.', 'profiles.newProfile' => '새 프로필', 'profiles.profileNameHint' => '예: 손님, 어린이, 가족실', 'profiles.pinProtectionOptional' => 'PIN 보호 (선택 사항)', @@ -2760,6 +2788,8 @@ extension on TranslationsKo { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => '최근 ${count}일 내 추가된 에피소드', 'metadataEdit.deleteAfterPlaying' => '재생 후 에피소드 삭제', 'metadataEdit.never' => '안 함', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => '하루 후', 'metadataEdit.afterAWeek' => '일주일 후', 'metadataEdit.afterAMonth' => '한 달 후', @@ -2774,8 +2804,6 @@ extension on TranslationsKo { 'metadataEdit.metadataLanguage' => '메타데이터 언어', 'metadataEdit.useOriginalTitle' => '원제 사용', 'metadataEdit.preferredAudioLanguage' => '선호 오디오 언어', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => '선호 자막 언어', 'metadataEdit.subtitleMode' => '자막 자동 선택 모드', 'metadataEdit.manuallySelected' => '수동 선택', diff --git a/lib/i18n/strings_nb.g.dart b/lib/i18n/strings_nb.g.dart index 65771d4f..92651597 100644 --- a/lib/i18n/strings_nb.g.dart +++ b/lib/i18n/strings_nb.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesNb extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN administreres av Plex. Rediger på plex.tv.'; @override String get noPinSetEditOnPlex => 'Ingen PIN er satt. For å kreve én, rediger Home-brukeren på plex.tv.'; @override String get setPin => 'Sett PIN'; + @override String get setPinTitle => 'Sett PIN'; + @override String get confirmPinTitle => 'Bekreft PIN'; + @override String get pinSet => 'PIN satt'; + @override String get changePin => 'Endre'; + @override String get removePin => 'Fjern'; @override String get connectionsLabel => 'Tilkoblinger'; @override String get add => 'Legg til'; @override String get deleteProfileButton => 'Slett profil'; @override String get noConnectionsHint => 'Ingen tilkoblinger — legg til én for å bruke denne profilen.'; + @override String get noConnections => 'Ingen tilkoblinger'; @override String get plexHomeAccount => 'Plex Home-konto'; @override String get connectionDefault => 'Standard'; + @override String connectionAs({required Object displayName}) => 'som ${displayName}'; @override String get makeDefault => 'Gjør til standard'; @override String get removeConnection => 'Fjern'; + @override String get profileRenamed => 'Profilen er omdøpt.'; @override String borrowAddTo({required Object displayName}) => 'Legg til ${displayName}'; @override String get borrowExplain => 'Lån en annen profils tilkobling. PIN-beskyttede profiler krever PIN.'; @override String get borrowEmpty => 'Ingenting å låne enda.'; @override String get borrowEmptySubtitle => 'Koble Plex eller Jellyfin til en annen profil først.'; + @override String borrowFromProfile({required Object displayName}) => 'Fra ${displayName}'; + @override String get borrowConnectionBorrowed => 'Tilkobling lånt.'; + @override String get borrowFailed => 'Kunne ikke låne tilkoblingen.'; + @override String get incorrectPin => 'Feil PIN.'; + @override String get sourceProfileMissingParentAccount => 'Kildeprofilen mangler foreldrekontoen sin.'; + @override String get failedToVerifyPin => 'Kunne ikke bekrefte PIN.'; @override String get newProfile => 'Ny profil'; @override String get profileNameHint => 'f.eks. Gjester, Barn, Familierom'; @override String get pinProtectionOptional => 'PIN-beskyttelse (valgfri)'; @@ -2256,20 +2270,34 @@ extension on TranslationsNb { 'profiles.pinManagedByPlex' => 'PIN administreres av Plex. Rediger på plex.tv.', 'profiles.noPinSetEditOnPlex' => 'Ingen PIN er satt. For å kreve én, rediger Home-brukeren på plex.tv.', 'profiles.setPin' => 'Sett PIN', + 'profiles.setPinTitle' => 'Sett PIN', + 'profiles.confirmPinTitle' => 'Bekreft PIN', + 'profiles.pinSet' => 'PIN satt', + 'profiles.changePin' => 'Endre', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Fjern', 'profiles.connectionsLabel' => 'Tilkoblinger', 'profiles.add' => 'Legg til', 'profiles.deleteProfileButton' => 'Slett profil', 'profiles.noConnectionsHint' => 'Ingen tilkoblinger — legg til én for å bruke denne profilen.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Ingen tilkoblinger', 'profiles.plexHomeAccount' => 'Plex Home-konto', 'profiles.connectionDefault' => 'Standard', + 'profiles.connectionAs' => ({required Object displayName}) => 'som ${displayName}', 'profiles.makeDefault' => 'Gjør til standard', 'profiles.removeConnection' => 'Fjern', + 'profiles.profileRenamed' => 'Profilen er omdøpt.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Legg til ${displayName}', 'profiles.borrowExplain' => 'Lån en annen profils tilkobling. PIN-beskyttede profiler krever PIN.', 'profiles.borrowEmpty' => 'Ingenting å låne enda.', 'profiles.borrowEmptySubtitle' => 'Koble Plex eller Jellyfin til en annen profil først.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'Fra ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Tilkobling lånt.', + 'profiles.borrowFailed' => 'Kunne ikke låne tilkoblingen.', + 'profiles.incorrectPin' => 'Feil PIN.', + 'profiles.sourceProfileMissingParentAccount' => 'Kildeprofilen mangler foreldrekontoen sin.', + 'profiles.failedToVerifyPin' => 'Kunne ikke bekrefte PIN.', 'profiles.newProfile' => 'Ny profil', 'profiles.profileNameHint' => 'f.eks. Gjester, Barn, Familierom', 'profiles.pinProtectionOptional' => 'PIN-beskyttelse (valgfri)', @@ -2760,6 +2788,8 @@ extension on TranslationsNb { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episoder lagt til de siste ${count} dagene', 'metadataEdit.deleteAfterPlaying' => 'Slett episoder etter avspilling', 'metadataEdit.never' => 'Aldri', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Etter en dag', 'metadataEdit.afterAWeek' => 'Etter en uke', 'metadataEdit.afterAMonth' => 'Etter en måned', @@ -2774,8 +2804,6 @@ extension on TranslationsNb { 'metadataEdit.metadataLanguage' => 'Metadataspråk', 'metadataEdit.useOriginalTitle' => 'Bruk originaltittel', 'metadataEdit.preferredAudioLanguage' => 'Foretrukket lydspråk', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Foretrukket undertekstspråk', 'metadataEdit.subtitleMode' => 'Automatisk valg av undertekstmodus', 'metadataEdit.manuallySelected' => 'Manuelt valgt', diff --git a/lib/i18n/strings_nl.g.dart b/lib/i18n/strings_nl.g.dart index a0c81570..1a12e672 100644 --- a/lib/i18n/strings_nl.g.dart +++ b/lib/i18n/strings_nl.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesNl extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN wordt beheerd door Plex. Bewerk op plex.tv.'; @override String get noPinSetEditOnPlex => 'Geen PIN ingesteld. Bewerk de Home-gebruiker op plex.tv om er één te vereisen.'; @override String get setPin => 'PIN instellen'; + @override String get setPinTitle => 'PIN instellen'; + @override String get confirmPinTitle => 'PIN bevestigen'; + @override String get pinSet => 'PIN ingesteld'; + @override String get changePin => 'Wijzigen'; + @override String get removePin => 'Verwijderen'; @override String get connectionsLabel => 'Verbindingen'; @override String get add => 'Toevoegen'; @override String get deleteProfileButton => 'Profiel verwijderen'; @override String get noConnectionsHint => 'Geen verbindingen — voeg er één toe om dit profiel te gebruiken.'; + @override String get noConnections => 'Geen verbindingen'; @override String get plexHomeAccount => 'Plex Home-account'; @override String get connectionDefault => 'Standaard'; + @override String connectionAs({required Object displayName}) => 'als ${displayName}'; @override String get makeDefault => 'Als standaard instellen'; @override String get removeConnection => 'Verwijderen'; + @override String get profileRenamed => 'Profiel hernoemd.'; @override String borrowAddTo({required Object displayName}) => 'Toevoegen aan ${displayName}'; @override String get borrowExplain => 'Leen de verbinding van een ander profiel. PIN-beveiligde profielen vereisen een PIN.'; @override String get borrowEmpty => 'Nog niets te lenen.'; @override String get borrowEmptySubtitle => 'Verbind Plex of Jellyfin eerst met een ander profiel.'; + @override String borrowFromProfile({required Object displayName}) => 'Van ${displayName}'; + @override String get borrowConnectionBorrowed => 'Verbinding geleend.'; + @override String get borrowFailed => 'Kan verbinding niet lenen.'; + @override String get incorrectPin => 'Onjuiste PIN.'; + @override String get sourceProfileMissingParentAccount => 'Het bronprofiel mist het bovenliggende account.'; + @override String get failedToVerifyPin => 'Kan PIN niet verifiëren.'; @override String get newProfile => 'Nieuw profiel'; @override String get profileNameHint => 'bijv. Gasten, Kinderen, Woonkamer'; @override String get pinProtectionOptional => 'PIN-beveiliging (optioneel)'; @@ -2256,20 +2270,34 @@ extension on TranslationsNl { 'profiles.pinManagedByPlex' => 'PIN wordt beheerd door Plex. Bewerk op plex.tv.', 'profiles.noPinSetEditOnPlex' => 'Geen PIN ingesteld. Bewerk de Home-gebruiker op plex.tv om er één te vereisen.', 'profiles.setPin' => 'PIN instellen', + 'profiles.setPinTitle' => 'PIN instellen', + 'profiles.confirmPinTitle' => 'PIN bevestigen', + 'profiles.pinSet' => 'PIN ingesteld', + 'profiles.changePin' => 'Wijzigen', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Verwijderen', 'profiles.connectionsLabel' => 'Verbindingen', 'profiles.add' => 'Toevoegen', 'profiles.deleteProfileButton' => 'Profiel verwijderen', 'profiles.noConnectionsHint' => 'Geen verbindingen — voeg er één toe om dit profiel te gebruiken.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Geen verbindingen', 'profiles.plexHomeAccount' => 'Plex Home-account', 'profiles.connectionDefault' => 'Standaard', + 'profiles.connectionAs' => ({required Object displayName}) => 'als ${displayName}', 'profiles.makeDefault' => 'Als standaard instellen', 'profiles.removeConnection' => 'Verwijderen', + 'profiles.profileRenamed' => 'Profiel hernoemd.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Toevoegen aan ${displayName}', 'profiles.borrowExplain' => 'Leen de verbinding van een ander profiel. PIN-beveiligde profielen vereisen een PIN.', 'profiles.borrowEmpty' => 'Nog niets te lenen.', 'profiles.borrowEmptySubtitle' => 'Verbind Plex of Jellyfin eerst met een ander profiel.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'Van ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Verbinding geleend.', + 'profiles.borrowFailed' => 'Kan verbinding niet lenen.', + 'profiles.incorrectPin' => 'Onjuiste PIN.', + 'profiles.sourceProfileMissingParentAccount' => 'Het bronprofiel mist het bovenliggende account.', + 'profiles.failedToVerifyPin' => 'Kan PIN niet verifiëren.', 'profiles.newProfile' => 'Nieuw profiel', 'profiles.profileNameHint' => 'bijv. Gasten, Kinderen, Woonkamer', 'profiles.pinProtectionOptional' => 'PIN-beveiliging (optioneel)', @@ -2760,6 +2788,8 @@ extension on TranslationsNl { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Afleveringen toegevoegd in de afgelopen ${count} dagen', 'metadataEdit.deleteAfterPlaying' => 'Afleveringen verwijderen na afspelen', 'metadataEdit.never' => 'Nooit', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Na een dag', 'metadataEdit.afterAWeek' => 'Na een week', 'metadataEdit.afterAMonth' => 'Na een maand', @@ -2774,8 +2804,6 @@ extension on TranslationsNl { 'metadataEdit.metadataLanguage' => 'Metadatataal', 'metadataEdit.useOriginalTitle' => 'Oorspronkelijke titel gebruiken', 'metadataEdit.preferredAudioLanguage' => 'Voorkeurstaal audio', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Voorkeurstaal ondertiteling', 'metadataEdit.subtitleMode' => 'Automatische ondertitelselectie', 'metadataEdit.manuallySelected' => 'Handmatig geselecteerd', diff --git a/lib/i18n/strings_pl.g.dart b/lib/i18n/strings_pl.g.dart index b93324b0..93e9323d 100644 --- a/lib/i18n/strings_pl.g.dart +++ b/lib/i18n/strings_pl.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesPl extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN zarządzany przez Plex. Edytuj na plex.tv.'; @override String get noPinSetEditOnPlex => 'Nie ustawiono PIN-u. Aby go wymagać, edytuj użytkownika Home na plex.tv.'; @override String get setPin => 'Ustaw PIN'; + @override String get setPinTitle => 'Ustaw PIN'; + @override String get confirmPinTitle => 'Potwierdź PIN'; + @override String get pinSet => 'PIN ustawiony'; + @override String get changePin => 'Zmień'; + @override String get removePin => 'Usuń'; @override String get connectionsLabel => 'Połączenia'; @override String get add => 'Dodaj'; @override String get deleteProfileButton => 'Usuń profil'; @override String get noConnectionsHint => 'Brak połączeń — dodaj jedno, aby używać tego profilu.'; + @override String get noConnections => 'Brak połączeń'; @override String get plexHomeAccount => 'Konto Plex Home'; @override String get connectionDefault => 'Domyślne'; + @override String connectionAs({required Object displayName}) => 'jako ${displayName}'; @override String get makeDefault => 'Ustaw jako domyślne'; @override String get removeConnection => 'Usuń'; + @override String get profileRenamed => 'Zmieniono nazwę profilu.'; @override String borrowAddTo({required Object displayName}) => 'Dodaj do ${displayName}'; @override String get borrowExplain => 'Pożycz połączenie z innego profilu. Profile chronione PIN wymagają PIN-u.'; @override String get borrowEmpty => 'Nic do pożyczenia.'; @override String get borrowEmptySubtitle => 'Najpierw połącz Plex lub Jellyfin z innym profilem.'; + @override String borrowFromProfile({required Object displayName}) => 'Od ${displayName}'; + @override String get borrowConnectionBorrowed => 'Połączenie pożyczone.'; + @override String get borrowFailed => 'Nie udało się pożyczyć połączenia.'; + @override String get incorrectPin => 'Nieprawidłowy PIN.'; + @override String get sourceProfileMissingParentAccount => 'Profil źródłowy nie ma konta nadrzędnego.'; + @override String get failedToVerifyPin => 'Nie udało się zweryfikować PIN-u.'; @override String get newProfile => 'Nowy profil'; @override String get profileNameHint => 'np. Goście, Dzieci, Salon'; @override String get pinProtectionOptional => 'Ochrona PIN-em (opcjonalnie)'; @@ -2256,20 +2270,34 @@ extension on TranslationsPl { 'profiles.pinManagedByPlex' => 'PIN zarządzany przez Plex. Edytuj na plex.tv.', 'profiles.noPinSetEditOnPlex' => 'Nie ustawiono PIN-u. Aby go wymagać, edytuj użytkownika Home na plex.tv.', 'profiles.setPin' => 'Ustaw PIN', + 'profiles.setPinTitle' => 'Ustaw PIN', + 'profiles.confirmPinTitle' => 'Potwierdź PIN', + 'profiles.pinSet' => 'PIN ustawiony', + 'profiles.changePin' => 'Zmień', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Usuń', 'profiles.connectionsLabel' => 'Połączenia', 'profiles.add' => 'Dodaj', 'profiles.deleteProfileButton' => 'Usuń profil', 'profiles.noConnectionsHint' => 'Brak połączeń — dodaj jedno, aby używać tego profilu.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Brak połączeń', 'profiles.plexHomeAccount' => 'Konto Plex Home', 'profiles.connectionDefault' => 'Domyślne', + 'profiles.connectionAs' => ({required Object displayName}) => 'jako ${displayName}', 'profiles.makeDefault' => 'Ustaw jako domyślne', 'profiles.removeConnection' => 'Usuń', + 'profiles.profileRenamed' => 'Zmieniono nazwę profilu.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Dodaj do ${displayName}', 'profiles.borrowExplain' => 'Pożycz połączenie z innego profilu. Profile chronione PIN wymagają PIN-u.', 'profiles.borrowEmpty' => 'Nic do pożyczenia.', 'profiles.borrowEmptySubtitle' => 'Najpierw połącz Plex lub Jellyfin z innym profilem.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'Od ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Połączenie pożyczone.', + 'profiles.borrowFailed' => 'Nie udało się pożyczyć połączenia.', + 'profiles.incorrectPin' => 'Nieprawidłowy PIN.', + 'profiles.sourceProfileMissingParentAccount' => 'Profil źródłowy nie ma konta nadrzędnego.', + 'profiles.failedToVerifyPin' => 'Nie udało się zweryfikować PIN-u.', 'profiles.newProfile' => 'Nowy profil', 'profiles.profileNameHint' => 'np. Goście, Dzieci, Salon', 'profiles.pinProtectionOptional' => 'Ochrona PIN-em (opcjonalnie)', @@ -2760,6 +2788,8 @@ extension on TranslationsPl { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Odcinki dodane w ciągu ostatnich ${count} dni', 'metadataEdit.deleteAfterPlaying' => 'Usuń odcinki po odtworzeniu', 'metadataEdit.never' => 'Nigdy', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Po jednym dniu', 'metadataEdit.afterAWeek' => 'Po tygodniu', 'metadataEdit.afterAMonth' => 'Po miesiącu', @@ -2774,8 +2804,6 @@ extension on TranslationsPl { 'metadataEdit.metadataLanguage' => 'Język metadanych', 'metadataEdit.useOriginalTitle' => 'Użyj oryginalnego tytułu', 'metadataEdit.preferredAudioLanguage' => 'Preferowany język audio', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Preferowany język napisów', 'metadataEdit.subtitleMode' => 'Tryb automatycznego wyboru napisów', 'metadataEdit.manuallySelected' => 'Wybrany ręcznie', diff --git a/lib/i18n/strings_pt.g.dart b/lib/i18n/strings_pt.g.dart index 84393794..433d4062 100644 --- a/lib/i18n/strings_pt.g.dart +++ b/lib/i18n/strings_pt.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesPt extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN gerenciado pelo Plex. Edite em plex.tv.'; @override String get noPinSetEditOnPlex => 'Nenhum PIN definido. Para exigir um, edite o usuário Home em plex.tv.'; @override String get setPin => 'Definir PIN'; + @override String get setPinTitle => 'Definir PIN'; + @override String get confirmPinTitle => 'Confirmar PIN'; + @override String get pinSet => 'PIN definido'; + @override String get changePin => 'Alterar'; + @override String get removePin => 'Remover'; @override String get connectionsLabel => 'Conexões'; @override String get add => 'Adicionar'; @override String get deleteProfileButton => 'Excluir perfil'; @override String get noConnectionsHint => 'Sem conexões — adicione uma para usar este perfil.'; + @override String get noConnections => 'Sem conexões'; @override String get plexHomeAccount => 'Conta Plex Home'; @override String get connectionDefault => 'Padrão'; + @override String connectionAs({required Object displayName}) => 'como ${displayName}'; @override String get makeDefault => 'Definir como padrão'; @override String get removeConnection => 'Remover'; + @override String get profileRenamed => 'Perfil renomeado.'; @override String borrowAddTo({required Object displayName}) => 'Adicionar a ${displayName}'; @override String get borrowExplain => 'Use a conexão de outro perfil. Perfis protegidos por PIN exigem PIN.'; @override String get borrowEmpty => 'Nada para emprestar ainda.'; @override String get borrowEmptySubtitle => 'Conecte Plex ou Jellyfin a outro perfil primeiro.'; + @override String borrowFromProfile({required Object displayName}) => 'De ${displayName}'; + @override String get borrowConnectionBorrowed => 'Conexão tomada emprestada.'; + @override String get borrowFailed => 'Não foi possível tomar a conexão emprestada.'; + @override String get incorrectPin => 'PIN incorreto.'; + @override String get sourceProfileMissingParentAccount => 'O perfil de origem não tem a conta principal.'; + @override String get failedToVerifyPin => 'Não foi possível verificar o PIN.'; @override String get newProfile => 'Novo perfil'; @override String get profileNameHint => 'ex.: Visitantes, Crianças, Sala de família'; @override String get pinProtectionOptional => 'Proteção por PIN (opcional)'; @@ -2256,20 +2270,34 @@ extension on TranslationsPt { 'profiles.pinManagedByPlex' => 'PIN gerenciado pelo Plex. Edite em plex.tv.', 'profiles.noPinSetEditOnPlex' => 'Nenhum PIN definido. Para exigir um, edite o usuário Home em plex.tv.', 'profiles.setPin' => 'Definir PIN', + 'profiles.setPinTitle' => 'Definir PIN', + 'profiles.confirmPinTitle' => 'Confirmar PIN', + 'profiles.pinSet' => 'PIN definido', + 'profiles.changePin' => 'Alterar', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Remover', 'profiles.connectionsLabel' => 'Conexões', 'profiles.add' => 'Adicionar', 'profiles.deleteProfileButton' => 'Excluir perfil', 'profiles.noConnectionsHint' => 'Sem conexões — adicione uma para usar este perfil.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Sem conexões', 'profiles.plexHomeAccount' => 'Conta Plex Home', 'profiles.connectionDefault' => 'Padrão', + 'profiles.connectionAs' => ({required Object displayName}) => 'como ${displayName}', 'profiles.makeDefault' => 'Definir como padrão', 'profiles.removeConnection' => 'Remover', + 'profiles.profileRenamed' => 'Perfil renomeado.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Adicionar a ${displayName}', 'profiles.borrowExplain' => 'Use a conexão de outro perfil. Perfis protegidos por PIN exigem PIN.', 'profiles.borrowEmpty' => 'Nada para emprestar ainda.', 'profiles.borrowEmptySubtitle' => 'Conecte Plex ou Jellyfin a outro perfil primeiro.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'De ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Conexão tomada emprestada.', + 'profiles.borrowFailed' => 'Não foi possível tomar a conexão emprestada.', + 'profiles.incorrectPin' => 'PIN incorreto.', + 'profiles.sourceProfileMissingParentAccount' => 'O perfil de origem não tem a conta principal.', + 'profiles.failedToVerifyPin' => 'Não foi possível verificar o PIN.', 'profiles.newProfile' => 'Novo perfil', 'profiles.profileNameHint' => 'ex.: Visitantes, Crianças, Sala de família', 'profiles.pinProtectionOptional' => 'Proteção por PIN (opcional)', @@ -2760,6 +2788,8 @@ extension on TranslationsPt { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episódios adicionados nos últimos ${count} dias', 'metadataEdit.deleteAfterPlaying' => 'Excluir Episódios Após Reproduzir', 'metadataEdit.never' => 'Nunca', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Após um dia', 'metadataEdit.afterAWeek' => 'Após uma semana', 'metadataEdit.afterAMonth' => 'Após um mês', @@ -2774,8 +2804,6 @@ extension on TranslationsPt { 'metadataEdit.metadataLanguage' => 'Idioma dos Metadados', 'metadataEdit.useOriginalTitle' => 'Usar Título Original', 'metadataEdit.preferredAudioLanguage' => 'Idioma de Áudio Preferido', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Idioma de Legenda Preferido', 'metadataEdit.subtitleMode' => 'Modo de Seleção Automática de Legendas', 'metadataEdit.manuallySelected' => 'Seleção manual', diff --git a/lib/i18n/strings_ru.g.dart b/lib/i18n/strings_ru.g.dart index d2cb0642..d3158d23 100644 --- a/lib/i18n/strings_ru.g.dart +++ b/lib/i18n/strings_ru.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesRu extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN управляется Plex. Редактируйте на plex.tv.'; @override String get noPinSetEditOnPlex => 'PIN не установлен. Чтобы требовать его, отредактируйте пользователя Home на plex.tv.'; @override String get setPin => 'Установить PIN'; + @override String get setPinTitle => 'Установить PIN'; + @override String get confirmPinTitle => 'Подтвердить PIN'; + @override String get pinSet => 'PIN установлен'; + @override String get changePin => 'Изменить'; + @override String get removePin => 'Удалить'; @override String get connectionsLabel => 'Соединения'; @override String get add => 'Добавить'; @override String get deleteProfileButton => 'Удалить профиль'; @override String get noConnectionsHint => 'Нет соединений — добавьте одно, чтобы использовать этот профиль.'; + @override String get noConnections => 'Нет соединений'; @override String get plexHomeAccount => 'Аккаунт Plex Home'; @override String get connectionDefault => 'По умолчанию'; + @override String connectionAs({required Object displayName}) => 'как ${displayName}'; @override String get makeDefault => 'Сделать по умолчанию'; @override String get removeConnection => 'Удалить'; + @override String get profileRenamed => 'Профиль переименован.'; @override String borrowAddTo({required Object displayName}) => 'Добавить в ${displayName}'; @override String get borrowExplain => 'Заимствуйте подключение другого профиля. Для профилей с PIN нужен PIN.'; @override String get borrowEmpty => 'Пока нечего заимствовать.'; @override String get borrowEmptySubtitle => 'Сначала подключите Plex или Jellyfin к другому профилю.'; + @override String borrowFromProfile({required Object displayName}) => 'Из ${displayName}'; + @override String get borrowConnectionBorrowed => 'Подключение заимствовано.'; + @override String get borrowFailed => 'Не удалось заимствовать подключение.'; + @override String get incorrectPin => 'Неверный PIN.'; + @override String get sourceProfileMissingParentAccount => 'У исходного профиля отсутствует родительская учетная запись.'; + @override String get failedToVerifyPin => 'Не удалось проверить PIN.'; @override String get newProfile => 'Новый профиль'; @override String get profileNameHint => 'например, Гости, Дети, Семейная комната'; @override String get pinProtectionOptional => 'Защита PIN-кодом (необязательно)'; @@ -2256,20 +2270,34 @@ extension on TranslationsRu { 'profiles.pinManagedByPlex' => 'PIN управляется Plex. Редактируйте на plex.tv.', 'profiles.noPinSetEditOnPlex' => 'PIN не установлен. Чтобы требовать его, отредактируйте пользователя Home на plex.tv.', 'profiles.setPin' => 'Установить PIN', + 'profiles.setPinTitle' => 'Установить PIN', + 'profiles.confirmPinTitle' => 'Подтвердить PIN', + 'profiles.pinSet' => 'PIN установлен', + 'profiles.changePin' => 'Изменить', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Удалить', 'profiles.connectionsLabel' => 'Соединения', 'profiles.add' => 'Добавить', 'profiles.deleteProfileButton' => 'Удалить профиль', 'profiles.noConnectionsHint' => 'Нет соединений — добавьте одно, чтобы использовать этот профиль.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Нет соединений', 'profiles.plexHomeAccount' => 'Аккаунт Plex Home', 'profiles.connectionDefault' => 'По умолчанию', + 'profiles.connectionAs' => ({required Object displayName}) => 'как ${displayName}', 'profiles.makeDefault' => 'Сделать по умолчанию', 'profiles.removeConnection' => 'Удалить', + 'profiles.profileRenamed' => 'Профиль переименован.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Добавить в ${displayName}', 'profiles.borrowExplain' => 'Заимствуйте подключение другого профиля. Для профилей с PIN нужен PIN.', 'profiles.borrowEmpty' => 'Пока нечего заимствовать.', 'profiles.borrowEmptySubtitle' => 'Сначала подключите Plex или Jellyfin к другому профилю.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'Из ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Подключение заимствовано.', + 'profiles.borrowFailed' => 'Не удалось заимствовать подключение.', + 'profiles.incorrectPin' => 'Неверный PIN.', + 'profiles.sourceProfileMissingParentAccount' => 'У исходного профиля отсутствует родительская учетная запись.', + 'profiles.failedToVerifyPin' => 'Не удалось проверить PIN.', 'profiles.newProfile' => 'Новый профиль', 'profiles.profileNameHint' => 'например, Гости, Дети, Семейная комната', 'profiles.pinProtectionOptional' => 'Защита PIN-кодом (необязательно)', @@ -2760,6 +2788,8 @@ extension on TranslationsRu { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Эпизоды, добавленные за последние ${count} дней', 'metadataEdit.deleteAfterPlaying' => 'Удалять эпизоды после просмотра', 'metadataEdit.never' => 'Никогда', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Через день', 'metadataEdit.afterAWeek' => 'Через неделю', 'metadataEdit.afterAMonth' => 'Через месяц', @@ -2774,8 +2804,6 @@ extension on TranslationsRu { 'metadataEdit.metadataLanguage' => 'Язык метаданных', 'metadataEdit.useOriginalTitle' => 'Использовать оригинальное название', 'metadataEdit.preferredAudioLanguage' => 'Предпочитаемый язык аудио', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Предпочитаемый язык субтитров', 'metadataEdit.subtitleMode' => 'Автовыбор субтитров', 'metadataEdit.manuallySelected' => 'Выбор вручную', diff --git a/lib/i18n/strings_sv.g.dart b/lib/i18n/strings_sv.g.dart index cb1c1a40..655f4610 100644 --- a/lib/i18n/strings_sv.g.dart +++ b/lib/i18n/strings_sv.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesSv extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN hanteras av Plex. Redigera på plex.tv.'; @override String get noPinSetEditOnPlex => 'Ingen PIN angiven. För att kräva en, redigera Home-användaren på plex.tv.'; @override String get setPin => 'Ange PIN'; + @override String get setPinTitle => 'Ange PIN'; + @override String get confirmPinTitle => 'Bekräfta PIN'; + @override String get pinSet => 'PIN angiven'; + @override String get changePin => 'Ändra'; + @override String get removePin => 'Ta bort'; @override String get connectionsLabel => 'Anslutningar'; @override String get add => 'Lägg till'; @override String get deleteProfileButton => 'Ta bort profil'; @override String get noConnectionsHint => 'Inga anslutningar — lägg till en för att använda den här profilen.'; + @override String get noConnections => 'Inga anslutningar'; @override String get plexHomeAccount => 'Plex Home-konto'; @override String get connectionDefault => 'Standard'; + @override String connectionAs({required Object displayName}) => 'som ${displayName}'; @override String get makeDefault => 'Gör till standard'; @override String get removeConnection => 'Ta bort'; + @override String get profileRenamed => 'Profilen har bytt namn.'; @override String borrowAddTo({required Object displayName}) => 'Lägg till i ${displayName}'; @override String get borrowExplain => 'Låna en annan profils anslutning. PIN-skyddade profiler kräver en PIN.'; @override String get borrowEmpty => 'Inget att låna ännu.'; @override String get borrowEmptySubtitle => 'Anslut Plex eller Jellyfin till en annan profil först.'; + @override String borrowFromProfile({required Object displayName}) => 'Från ${displayName}'; + @override String get borrowConnectionBorrowed => 'Anslutning lånad.'; + @override String get borrowFailed => 'Kunde inte låna anslutningen.'; + @override String get incorrectPin => 'Fel PIN.'; + @override String get sourceProfileMissingParentAccount => 'Källprofilen saknar sitt överordnade konto.'; + @override String get failedToVerifyPin => 'Kunde inte verifiera PIN.'; @override String get newProfile => 'Ny profil'; @override String get profileNameHint => 't.ex. Gäster, Barn, Familjerum'; @override String get pinProtectionOptional => 'PIN-skydd (valfritt)'; @@ -2256,20 +2270,34 @@ extension on TranslationsSv { 'profiles.pinManagedByPlex' => 'PIN hanteras av Plex. Redigera på plex.tv.', 'profiles.noPinSetEditOnPlex' => 'Ingen PIN angiven. För att kräva en, redigera Home-användaren på plex.tv.', 'profiles.setPin' => 'Ange PIN', + 'profiles.setPinTitle' => 'Ange PIN', + 'profiles.confirmPinTitle' => 'Bekräfta PIN', + 'profiles.pinSet' => 'PIN angiven', + 'profiles.changePin' => 'Ändra', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => 'Ta bort', 'profiles.connectionsLabel' => 'Anslutningar', 'profiles.add' => 'Lägg till', 'profiles.deleteProfileButton' => 'Ta bort profil', 'profiles.noConnectionsHint' => 'Inga anslutningar — lägg till en för att använda den här profilen.', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => 'Inga anslutningar', 'profiles.plexHomeAccount' => 'Plex Home-konto', 'profiles.connectionDefault' => 'Standard', + 'profiles.connectionAs' => ({required Object displayName}) => 'som ${displayName}', 'profiles.makeDefault' => 'Gör till standard', 'profiles.removeConnection' => 'Ta bort', + 'profiles.profileRenamed' => 'Profilen har bytt namn.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Lägg till i ${displayName}', 'profiles.borrowExplain' => 'Låna en annan profils anslutning. PIN-skyddade profiler kräver en PIN.', 'profiles.borrowEmpty' => 'Inget att låna ännu.', 'profiles.borrowEmptySubtitle' => 'Anslut Plex eller Jellyfin till en annan profil först.', + 'profiles.borrowFromProfile' => ({required Object displayName}) => 'Från ${displayName}', + 'profiles.borrowConnectionBorrowed' => 'Anslutning lånad.', + 'profiles.borrowFailed' => 'Kunde inte låna anslutningen.', + 'profiles.incorrectPin' => 'Fel PIN.', + 'profiles.sourceProfileMissingParentAccount' => 'Källprofilen saknar sitt överordnade konto.', + 'profiles.failedToVerifyPin' => 'Kunde inte verifiera PIN.', 'profiles.newProfile' => 'Ny profil', 'profiles.profileNameHint' => 't.ex. Gäster, Barn, Familjerum', 'profiles.pinProtectionOptional' => 'PIN-skydd (valfritt)', @@ -2760,6 +2788,8 @@ extension on TranslationsSv { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Avsnitt tillagda de senaste ${count} dagarna', 'metadataEdit.deleteAfterPlaying' => 'Ta bort avsnitt efter uppspelning', 'metadataEdit.never' => 'Aldrig', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => 'Efter en dag', 'metadataEdit.afterAWeek' => 'Efter en vecka', 'metadataEdit.afterAMonth' => 'Efter en månad', @@ -2774,8 +2804,6 @@ extension on TranslationsSv { 'metadataEdit.metadataLanguage' => 'Metadataspråk', 'metadataEdit.useOriginalTitle' => 'Använd originaltitel', 'metadataEdit.preferredAudioLanguage' => 'Föredraget ljudspråk', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => 'Föredraget undertextspråk', 'metadataEdit.subtitleMode' => 'Automatiskt val av undertexter', 'metadataEdit.manuallySelected' => 'Manuellt vald', diff --git a/lib/i18n/strings_zh.g.dart b/lib/i18n/strings_zh.g.dart index 9233c749..f3b09b6e 100644 --- a/lib/i18n/strings_zh.g.dart +++ b/lib/i18n/strings_zh.g.dart @@ -736,18 +736,32 @@ class _TranslationsProfilesZh extends TranslationsProfilesEn { @override String get pinManagedByPlex => 'PIN 由 Plex 管理。在 plex.tv 上编辑。'; @override String get noPinSetEditOnPlex => '未设置 PIN。如需要求 PIN,请在 plex.tv 上编辑 Home 用户。'; @override String get setPin => '设置 PIN'; + @override String get setPinTitle => '设置 PIN'; + @override String get confirmPinTitle => '确认 PIN'; + @override String get pinSet => '已设置 PIN'; + @override String get changePin => '更改'; + @override String get removePin => '移除'; @override String get connectionsLabel => '连接'; @override String get add => '添加'; @override String get deleteProfileButton => '删除配置文件'; @override String get noConnectionsHint => '没有连接 — 添加一个以使用此配置文件。'; + @override String get noConnections => '没有连接'; @override String get plexHomeAccount => 'Plex Home 账户'; @override String get connectionDefault => '默认'; + @override String connectionAs({required Object displayName}) => '以 ${displayName} 身份'; @override String get makeDefault => '设为默认'; @override String get removeConnection => '移除'; + @override String get profileRenamed => '个人资料已重命名。'; @override String borrowAddTo({required Object displayName}) => '添加到 ${displayName}'; @override String get borrowExplain => '借用另一个个人资料的连接。受 PIN 保护的个人资料需要 PIN。'; @override String get borrowEmpty => '暂无可借用的内容。'; @override String get borrowEmptySubtitle => '请先将 Plex 或 Jellyfin 连接到另一个个人资料。'; + @override String borrowFromProfile({required Object displayName}) => '来自 ${displayName}'; + @override String get borrowConnectionBorrowed => '已借用连接。'; + @override String get borrowFailed => '无法借用连接。'; + @override String get incorrectPin => 'PIN 不正确。'; + @override String get sourceProfileMissingParentAccount => '源个人资料缺少其父账号。'; + @override String get failedToVerifyPin => '无法验证 PIN。'; @override String get newProfile => '新建配置文件'; @override String get profileNameHint => '例如:访客、儿童、家庭房'; @override String get pinProtectionOptional => 'PIN 保护(可选)'; @@ -2256,20 +2270,34 @@ extension on TranslationsZh { 'profiles.pinManagedByPlex' => 'PIN 由 Plex 管理。在 plex.tv 上编辑。', 'profiles.noPinSetEditOnPlex' => '未设置 PIN。如需要求 PIN,请在 plex.tv 上编辑 Home 用户。', 'profiles.setPin' => '设置 PIN', + 'profiles.setPinTitle' => '设置 PIN', + 'profiles.confirmPinTitle' => '确认 PIN', + 'profiles.pinSet' => '已设置 PIN', + 'profiles.changePin' => '更改', + _ => null, + } ?? switch (path) { + 'profiles.removePin' => '移除', 'profiles.connectionsLabel' => '连接', 'profiles.add' => '添加', 'profiles.deleteProfileButton' => '删除配置文件', 'profiles.noConnectionsHint' => '没有连接 — 添加一个以使用此配置文件。', - _ => null, - } ?? switch (path) { + 'profiles.noConnections' => '没有连接', 'profiles.plexHomeAccount' => 'Plex Home 账户', 'profiles.connectionDefault' => '默认', + 'profiles.connectionAs' => ({required Object displayName}) => '以 ${displayName} 身份', 'profiles.makeDefault' => '设为默认', 'profiles.removeConnection' => '移除', + 'profiles.profileRenamed' => '个人资料已重命名。', 'profiles.borrowAddTo' => ({required Object displayName}) => '添加到 ${displayName}', 'profiles.borrowExplain' => '借用另一个个人资料的连接。受 PIN 保护的个人资料需要 PIN。', 'profiles.borrowEmpty' => '暂无可借用的内容。', 'profiles.borrowEmptySubtitle' => '请先将 Plex 或 Jellyfin 连接到另一个个人资料。', + 'profiles.borrowFromProfile' => ({required Object displayName}) => '来自 ${displayName}', + 'profiles.borrowConnectionBorrowed' => '已借用连接。', + 'profiles.borrowFailed' => '无法借用连接。', + 'profiles.incorrectPin' => 'PIN 不正确。', + 'profiles.sourceProfileMissingParentAccount' => '源个人资料缺少其父账号。', + 'profiles.failedToVerifyPin' => '无法验证 PIN。', 'profiles.newProfile' => '新建配置文件', 'profiles.profileNameHint' => '例如:访客、儿童、家庭房', 'profiles.pinProtectionOptional' => 'PIN 保护(可选)', @@ -2760,6 +2788,8 @@ extension on TranslationsZh { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => '过去 ${count} 天内添加的剧集', 'metadataEdit.deleteAfterPlaying' => '播放后删除剧集', 'metadataEdit.never' => '从不', + _ => null, + } ?? switch (path) { 'metadataEdit.afterADay' => '一天后', 'metadataEdit.afterAWeek' => '一周后', 'metadataEdit.afterAMonth' => '一个月后', @@ -2774,8 +2804,6 @@ extension on TranslationsZh { 'metadataEdit.metadataLanguage' => '元数据语言', 'metadataEdit.useOriginalTitle' => '使用原始标题', 'metadataEdit.preferredAudioLanguage' => '首选音频语言', - _ => null, - } ?? switch (path) { 'metadataEdit.preferredSubtitleLanguage' => '首选字幕语言', 'metadataEdit.subtitleMode' => '自动选择字幕模式', 'metadataEdit.manuallySelected' => '手动选择', diff --git a/lib/i18n/sv.i18n.json b/lib/i18n/sv.i18n.json index 1f1cf1d6..1b6983fc 100644 --- a/lib/i18n/sv.i18n.json +++ b/lib/i18n/sv.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN hanteras av Plex. Redigera på plex.tv.", "noPinSetEditOnPlex": "Ingen PIN angiven. För att kräva en, redigera Home-användaren på plex.tv.", "setPin": "Ange PIN", + "setPinTitle": "Ange PIN", + "confirmPinTitle": "Bekräfta PIN", + "pinSet": "PIN angiven", + "changePin": "Ändra", + "removePin": "Ta bort", "connectionsLabel": "Anslutningar", "add": "Lägg till", "deleteProfileButton": "Ta bort profil", "noConnectionsHint": "Inga anslutningar — lägg till en för att använda den här profilen.", + "noConnections": "Inga anslutningar", "plexHomeAccount": "Plex Home-konto", "connectionDefault": "Standard", + "connectionAs": "som ${displayName}", "makeDefault": "Gör till standard", "removeConnection": "Ta bort", + "profileRenamed": "Profilen har bytt namn.", "borrowAddTo": "Lägg till i ${displayName}", "borrowExplain": "Låna en annan profils anslutning. PIN-skyddade profiler kräver en PIN.", "borrowEmpty": "Inget att låna ännu.", "borrowEmptySubtitle": "Anslut Plex eller Jellyfin till en annan profil först.", + "borrowFromProfile": "Från ${displayName}", + "borrowConnectionBorrowed": "Anslutning lånad.", + "borrowFailed": "Kunde inte låna anslutningen.", + "incorrectPin": "Fel PIN.", + "sourceProfileMissingParentAccount": "Källprofilen saknar sitt överordnade konto.", + "failedToVerifyPin": "Kunde inte verifiera PIN.", "newProfile": "Ny profil", "profileNameHint": "t.ex. Gäster, Barn, Familjerum", "pinProtectionOptional": "PIN-skydd (valfritt)", diff --git a/lib/i18n/zh.i18n.json b/lib/i18n/zh.i18n.json index d937cfa0..2906bd18 100644 --- a/lib/i18n/zh.i18n.json +++ b/lib/i18n/zh.i18n.json @@ -548,18 +548,32 @@ "pinManagedByPlex": "PIN 由 Plex 管理。在 plex.tv 上编辑。", "noPinSetEditOnPlex": "未设置 PIN。如需要求 PIN,请在 plex.tv 上编辑 Home 用户。", "setPin": "设置 PIN", + "setPinTitle": "设置 PIN", + "confirmPinTitle": "确认 PIN", + "pinSet": "已设置 PIN", + "changePin": "更改", + "removePin": "移除", "connectionsLabel": "连接", "add": "添加", "deleteProfileButton": "删除配置文件", "noConnectionsHint": "没有连接 — 添加一个以使用此配置文件。", + "noConnections": "没有连接", "plexHomeAccount": "Plex Home 账户", "connectionDefault": "默认", + "connectionAs": "以 ${displayName} 身份", "makeDefault": "设为默认", "removeConnection": "移除", + "profileRenamed": "个人资料已重命名。", "borrowAddTo": "添加到 ${displayName}", "borrowExplain": "借用另一个个人资料的连接。受 PIN 保护的个人资料需要 PIN。", "borrowEmpty": "暂无可借用的内容。", "borrowEmptySubtitle": "请先将 Plex 或 Jellyfin 连接到另一个个人资料。", + "borrowFromProfile": "来自 ${displayName}", + "borrowConnectionBorrowed": "已借用连接。", + "borrowFailed": "无法借用连接。", + "incorrectPin": "PIN 不正确。", + "sourceProfileMissingParentAccount": "源个人资料缺少其父账号。", + "failedToVerifyPin": "无法验证 PIN。", "newProfile": "新建配置文件", "profileNameHint": "例如:访客、儿童、家庭房", "pinProtectionOptional": "PIN 保护(可选)", diff --git a/lib/screens/profile/borrow_connection_screen.dart b/lib/screens/profile/borrow_connection_screen.dart index 50366edb..796a4d4b 100644 --- a/lib/screens/profile/borrow_connection_screen.dart +++ b/lib/screens/profile/borrow_connection_screen.dart @@ -241,7 +241,7 @@ class _BorrowConnectionScreenState extends State { if (pin == null) return false; if (!verifyProfilePin(cand.source, pin)) { if (!mounted) return false; - showErrorSnackBar(context, 'Incorrect PIN.'); + showErrorSnackBar(context, t.profiles.incorrectPin); return false; } return true; @@ -254,7 +254,7 @@ class _BorrowConnectionScreenState extends State { if (parentId == null || homeUuid == null) return false; final parent = await context.read().getPlexAccount(parentId); if (parent == null) { - if (mounted) showErrorSnackBar(context, 'Source profile is missing its parent account.'); + if (mounted) showErrorSnackBar(context, t.profiles.sourceProfileMissingParentAccount); return false; } final auth = await PlexAuthService.create(); @@ -272,7 +272,7 @@ class _BorrowConnectionScreenState extends State { ); if (!result.succeeded) { if (result.status == PlexHomeSwitchStatus.failed && mounted) { - showErrorSnackBar(context, 'Failed to verify PIN.'); + showErrorSnackBar(context, t.profiles.failedToVerifyPin); } return false; } @@ -300,7 +300,7 @@ class _BorrowConnectionScreenState extends State { ); if (!result.succeeded) { if (result.status == PlexHomeSwitchStatus.failed && mounted) { - showErrorSnackBar(context, 'Failed to borrow connection.'); + showErrorSnackBar(context, t.profiles.borrowFailed); } return; } @@ -319,12 +319,12 @@ class _BorrowConnectionScreenState extends State { Navigator.of(context).pop(true); return; } - showSuccessSnackBar(context, 'Connection borrowed.'); + showSuccessSnackBar(context, t.profiles.borrowConnectionBorrowed); } } catch (e, st) { appLogger.w('Borrow failed', error: e, stackTrace: st); if (mounted) { - showErrorSnackBar(context, 'Failed to borrow connection.'); + showErrorSnackBar(context, t.profiles.borrowFailed); } } finally { auth.dispose(); @@ -349,7 +349,7 @@ class _BorrowConnectionScreenState extends State { Navigator.of(context).pop(true); return; } - showSuccessSnackBar(context, 'Connection borrowed.'); + showSuccessSnackBar(context, t.profiles.borrowConnectionBorrowed); } } } @@ -393,7 +393,7 @@ class _BorrowTile extends StatelessWidget { Row( children: [ Text( - 'From ${candidate.source.displayName}', + t.profiles.borrowFromProfile(displayName: candidate.source.displayName), style: theme.textTheme.bodySmall?.copyWith(color: theme.colorScheme.onSurfaceVariant), ), if (candidate.source.isPinProtected) ...[ @@ -405,7 +405,10 @@ class _BorrowTile extends StatelessWidget { if (candidate.connection is PlexAccountConnection) Padding( padding: const EdgeInsets.only(top: 4), - child: Text('as ${candidate.source.displayName}', style: theme.textTheme.bodySmall), + child: Text( + t.profiles.connectionAs(displayName: candidate.source.displayName), + style: theme.textTheme.bodySmall, + ), ), ], ), diff --git a/lib/screens/profile/pin_entry_dialog.dart b/lib/screens/profile/pin_entry_dialog.dart index 4f94c181..d620a98b 100644 --- a/lib/screens/profile/pin_entry_dialog.dart +++ b/lib/screens/profile/pin_entry_dialog.dart @@ -638,7 +638,7 @@ class _PinKey { case _PinKeyType.digit: return digit.toString(); case _PinKeyType.backspace: - return 'Del'; + return t.common.delete; case _PinKeyType.close: return t.common.cancel; } @@ -671,13 +671,13 @@ Future showPinEntryDialog(BuildContext context, String userName, {Strin /// in one place so multiple call sites don't drift. Future captureAndConfirmPin( BuildContext context, { - String setLabel = 'Set PIN', - String confirmLabel = 'Confirm PIN', + String? setLabel, + String? confirmLabel, void Function(BuildContext)? onMismatch, }) async { - final pin = await showPinEntryDialog(context, setLabel); + final pin = await showPinEntryDialog(context, setLabel ?? t.profiles.setPinTitle); if (pin == null || !context.mounted) return null; - final confirm = await showPinEntryDialog(context, confirmLabel); + final confirm = await showPinEntryDialog(context, confirmLabel ?? t.profiles.confirmPinTitle); if (confirm == null || !context.mounted) return null; if (pin == confirm) return pin; onMismatch?.call(context); diff --git a/lib/screens/profile/pin_status_row.dart b/lib/screens/profile/pin_status_row.dart index 866019ff..07de3387 100644 --- a/lib/screens/profile/pin_status_row.dart +++ b/lib/screens/profile/pin_status_row.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:material_symbols_icons/symbols.dart'; import '../../focus/focusable_button.dart'; +import '../../i18n/strings.g.dart'; import '../../widgets/app_icon.dart'; /// "PIN set" pill + Change/Remove text buttons. Shown on profile creation @@ -26,7 +27,7 @@ class PinStatusRow extends StatelessWidget { AppIcon(Symbols.lock_rounded, fill: 1, color: theme.colorScheme.onPrimaryContainer, size: 18), const SizedBox(width: 6), Text( - 'PIN set', + t.profiles.pinSet, style: theme.textTheme.labelMedium?.copyWith(color: theme.colorScheme.onPrimaryContainer), ), ], @@ -35,11 +36,11 @@ class PinStatusRow extends StatelessWidget { const SizedBox(width: 12), FocusableButton( onPressed: onChange, - child: TextButton(onPressed: onChange, child: const Text('Change')), + child: TextButton(onPressed: onChange, child: Text(t.profiles.changePin)), ), FocusableButton( onPressed: onRemove, - child: TextButton(onPressed: onRemove, child: const Text('Remove')), + child: TextButton(onPressed: onRemove, child: Text(t.profiles.removePin)), ), ], ); diff --git a/lib/screens/profile/profile_detail_screen.dart b/lib/screens/profile/profile_detail_screen.dart index b22ac1bf..175e1b26 100644 --- a/lib/screens/profile/profile_detail_screen.dart +++ b/lib/screens/profile/profile_detail_screen.dart @@ -78,11 +78,14 @@ class _ProfileDetailScreenState extends State with Controll await context.read().upsert(updated); if (!mounted) return; setState(() => _profile = updated); - showSuccessSnackBar(context, 'Profile renamed.'); + showSuccessSnackBar(context, t.profiles.profileRenamed); } Future _setPin() async { - final pin = await captureAndConfirmPin(context, onMismatch: (ctx) => showErrorSnackBar(ctx, "PINs don't match")); + final pin = await captureAndConfirmPin( + context, + onMismatch: (ctx) => showErrorSnackBar(ctx, t.profiles.pinsDontMatch), + ); if (pin == null || !mounted) return; final updated = _profile.copyWith(pinHash: computePinHash(pin)); await context.read().upsert(updated); @@ -350,7 +353,7 @@ class _ConnectionSubtitle { final users = homeCache[conn.id]; if (users != null) { final user = users.where((u) => u.uuid == pc.userIdentifier).firstOrNull; - if (user != null) parts.add('as ${user.displayName}'); + if (user != null) parts.add(t.profiles.connectionAs(displayName: user.displayName)); } } if (pc.isDefault) parts.add(t.profiles.connectionDefault); diff --git a/lib/screens/profile/profile_switch_screen.dart b/lib/screens/profile/profile_switch_screen.dart index 7a5f6382..cd63ed02 100644 --- a/lib/screens/profile/profile_switch_screen.dart +++ b/lib/screens/profile/profile_switch_screen.dart @@ -532,7 +532,7 @@ class _ConnectionChips extends StatelessWidget { Widget build(BuildContext context) { final theme = Theme.of(context); if (chips.isEmpty) { - return Text('No connections', style: theme.textTheme.bodySmall?.copyWith(color: theme.colorScheme.error)); + return Text(t.profiles.noConnections, style: theme.textTheme.bodySmall?.copyWith(color: theme.colorScheme.error)); } return Wrap( spacing: 6,