fix(profiles): name the Plex user and account in one translated chip

A Plex account connection labels itself with the account owner's name.
Under a profile tile that reads as being signed in as the owner: the
Plex Home tile showed the owner beneath the Home user's own name, and a
local profile that borrowed a Home user out of someone else's account
showed only the lender.

Both halves of the relation now go through a single translated string,
so a locale orders them itself instead of inheriting the English
"user via account" — az, hu, ja, kk, ko, tr, uz, zh and zh-Hant put the
account first. When the Home cache cannot resolve the connection's uuid
the chip names the account alone rather than falling back to a bare
name. ProfilesView carries the Home user cache that resolution needs,
and chip labels ellipsize now that an account label can be an email.
This commit is contained in:
edde746
2026-08-05 13:05:15 +02:00
parent edaff1fbfc
commit 26dbce0277
48 changed files with 437 additions and 139 deletions
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Bu profil silinsin?", "deleteThisProfileTitle": "Bu profil silinsin?",
"deleteThisProfileMessage": "${displayName} silinəcək. Qoşulmalar təsirlənmir.", "deleteThisProfileMessage": "${displayName} silinəcək. Qoşulmalar təsirlənmir.",
"active": "Aktiv", "active": "Aktiv",
"viaPlexAccount": "",
"manage": "İdarə et", "manage": "İdarə et",
"delete": "Sil", "delete": "Sil",
"signOut": "Çıxış et", "signOut": "Çıxış et",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Qoşulma yoxdur — bu profili istifadə etmək üçün birini əlavə edin.", "noConnectionsHint": "Qoşulma yoxdur — bu profili istifadə etmək üçün birini əlavə edin.",
"noConnections": "Qoşulma yoxdur", "noConnections": "Qoşulma yoxdur",
"plexHomeAccount": "Plex Ev hesabı", "plexHomeAccount": "Plex Ev hesabı",
"plexAccountChip": "Plex hesabı: ${account}",
"plexAccountUserChip": "${account} hesabı vasitəsilə ${user}",
"connectionDefault": "Defolt", "connectionDefault": "Defolt",
"connectionAs": "${displayName} olaraq", "connectionAs": "${displayName} olaraq",
"makeDefault": "Defolt et", "makeDefault": "Defolt et",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Да се изтрие ли този профил?", "deleteThisProfileTitle": "Да се изтрие ли този профил?",
"deleteThisProfileMessage": "Премахване на ${displayName}. Връзките не се засягат.", "deleteThisProfileMessage": "Премахване на ${displayName}. Връзките не се засягат.",
"active": "Активен", "active": "Активен",
"viaPlexAccount": "",
"manage": "Управление", "manage": "Управление",
"delete": "Изтрий", "delete": "Изтрий",
"signOut": "Изход", "signOut": "Изход",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Няма връзки — добавете такава, за да използвате този профил.", "noConnectionsHint": "Няма връзки — добавете такава, за да използвате този профил.",
"noConnections": "Няма връзки", "noConnections": "Няма връзки",
"plexHomeAccount": "Plex Home акаунт", "plexHomeAccount": "Plex Home акаунт",
"plexAccountChip": "Plex акаунт: ${account}",
"plexAccountUserChip": "${user} през ${account}",
"connectionDefault": "По подразбиране", "connectionDefault": "По подразбиране",
"connectionAs": "като ${displayName}", "connectionAs": "като ${displayName}",
"makeDefault": "Направи по подразбиране", "makeDefault": "Направи по подразбиране",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Slet denne profil?", "deleteThisProfileTitle": "Slet denne profil?",
"deleteThisProfileMessage": "Fjern ${displayName}. Forbindelser påvirkes ikke.", "deleteThisProfileMessage": "Fjern ${displayName}. Forbindelser påvirkes ikke.",
"active": "Aktiv", "active": "Aktiv",
"viaPlexAccount": "",
"manage": "Administrer", "manage": "Administrer",
"delete": "Slet", "delete": "Slet",
"signOut": "Log ud", "signOut": "Log ud",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Ingen forbindelser — tilføj en for at bruge denne profil.", "noConnectionsHint": "Ingen forbindelser — tilføj en for at bruge denne profil.",
"noConnections": "Ingen forbindelser", "noConnections": "Ingen forbindelser",
"plexHomeAccount": "Plex Home-konto", "plexHomeAccount": "Plex Home-konto",
"plexAccountChip": "Plex-konto: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Standard", "connectionDefault": "Standard",
"connectionAs": "som ${displayName}", "connectionAs": "som ${displayName}",
"makeDefault": "Gør til standard", "makeDefault": "Gør til standard",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Dieses Profil löschen?", "deleteThisProfileTitle": "Dieses Profil löschen?",
"deleteThisProfileMessage": "${displayName} entfernen. Verbindungen bleiben unberührt.", "deleteThisProfileMessage": "${displayName} entfernen. Verbindungen bleiben unberührt.",
"active": "Aktiv", "active": "Aktiv",
"viaPlexAccount": "",
"manage": "Verwalten", "manage": "Verwalten",
"delete": "Löschen", "delete": "Löschen",
"signOut": "Abmelden", "signOut": "Abmelden",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Keine Verbindungen — füge eine hinzu, um dieses Profil zu nutzen.", "noConnectionsHint": "Keine Verbindungen — füge eine hinzu, um dieses Profil zu nutzen.",
"noConnections": "Keine Verbindungen", "noConnections": "Keine Verbindungen",
"plexHomeAccount": "Plex Home-Konto", "plexHomeAccount": "Plex Home-Konto",
"plexAccountChip": "Plex-Konto: ${account}",
"plexAccountUserChip": "${user} über ${account}",
"connectionDefault": "Standard", "connectionDefault": "Standard",
"connectionAs": "als ${displayName}", "connectionAs": "als ${displayName}",
"makeDefault": "Als Standard festlegen", "makeDefault": "Als Standard festlegen",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Delete this profile?", "deleteThisProfileTitle": "Delete this profile?",
"deleteThisProfileMessage": "Remove ${displayName}. Connections aren't affected.", "deleteThisProfileMessage": "Remove ${displayName}. Connections aren't affected.",
"active": "Active", "active": "Active",
"viaPlexAccount": "via ${name}",
"manage": "Manage", "manage": "Manage",
"delete": "Delete", "delete": "Delete",
"signOut": "Sign out", "signOut": "Sign out",
@@ -795,6 +794,8 @@
"noConnectionsHint": "No connections — add one to use this profile.", "noConnectionsHint": "No connections — add one to use this profile.",
"noConnections": "No connections", "noConnections": "No connections",
"plexHomeAccount": "Plex Home account", "plexHomeAccount": "Plex Home account",
"plexAccountChip": "Plex account: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Default", "connectionDefault": "Default",
"connectionAs": "as ${displayName}", "connectionAs": "as ${displayName}",
"makeDefault": "Make default", "makeDefault": "Make default",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "¿Eliminar este perfil?", "deleteThisProfileTitle": "¿Eliminar este perfil?",
"deleteThisProfileMessage": "Eliminar ${displayName}. Las conexiones no se verán afectadas.", "deleteThisProfileMessage": "Eliminar ${displayName}. Las conexiones no se verán afectadas.",
"active": "Activo", "active": "Activo",
"viaPlexAccount": "",
"manage": "Administrar", "manage": "Administrar",
"delete": "Eliminar", "delete": "Eliminar",
"signOut": "Cerrar sesión", "signOut": "Cerrar sesión",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Sin conexiones — añade una para usar este perfil.", "noConnectionsHint": "Sin conexiones — añade una para usar este perfil.",
"noConnections": "Sin conexiones", "noConnections": "Sin conexiones",
"plexHomeAccount": "Cuenta Plex Home", "plexHomeAccount": "Cuenta Plex Home",
"plexAccountChip": "Cuenta Plex: ${account}",
"plexAccountUserChip": "${user} a través de ${account}",
"connectionDefault": "Predeterminada", "connectionDefault": "Predeterminada",
"connectionAs": "como ${displayName}", "connectionAs": "como ${displayName}",
"makeDefault": "Establecer como predeterminada", "makeDefault": "Establecer como predeterminada",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Supprimer ce profil ?", "deleteThisProfileTitle": "Supprimer ce profil ?",
"deleteThisProfileMessage": "Supprimer ${displayName}. Les connexions ne sont pas affectées.", "deleteThisProfileMessage": "Supprimer ${displayName}. Les connexions ne sont pas affectées.",
"active": "Actif", "active": "Actif",
"viaPlexAccount": "",
"manage": "Gérer", "manage": "Gérer",
"delete": "Supprimer", "delete": "Supprimer",
"signOut": "Se déconnecter", "signOut": "Se déconnecter",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Aucune connexion — ajoutez-en une pour utiliser ce profil.", "noConnectionsHint": "Aucune connexion — ajoutez-en une pour utiliser ce profil.",
"noConnections": "Aucune connexion", "noConnections": "Aucune connexion",
"plexHomeAccount": "Compte Plex Home", "plexHomeAccount": "Compte Plex Home",
"plexAccountChip": "Compte Plex : ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Par défaut", "connectionDefault": "Par défaut",
"connectionAs": "en tant que ${displayName}", "connectionAs": "en tant que ${displayName}",
"makeDefault": "Définir par défaut", "makeDefault": "Définir par défaut",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Törlöd ezt a profilt?", "deleteThisProfileTitle": "Törlöd ezt a profilt?",
"deleteThisProfileMessage": "${displayName} eltávolítása. A kapcsolatokat nem érinti.", "deleteThisProfileMessage": "${displayName} eltávolítása. A kapcsolatokat nem érinti.",
"active": "Aktív", "active": "Aktív",
"viaPlexAccount": "",
"manage": "Kezelés", "manage": "Kezelés",
"delete": "Törlés", "delete": "Törlés",
"signOut": "Kijelentkezés", "signOut": "Kijelentkezés",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Nincsenek kapcsolatok — adj hozzá egyet a profil használatához.", "noConnectionsHint": "Nincsenek kapcsolatok — adj hozzá egyet a profil használatához.",
"noConnections": "Nincsenek kapcsolatok", "noConnections": "Nincsenek kapcsolatok",
"plexHomeAccount": "Plex Home-fiók", "plexHomeAccount": "Plex Home-fiók",
"plexAccountChip": "Plex-fiók: ${account}",
"plexAccountUserChip": "${account} fiókján keresztül: ${user}",
"connectionDefault": "Alapértelmezett", "connectionDefault": "Alapértelmezett",
"connectionAs": "mint ${displayName}", "connectionAs": "mint ${displayName}",
"makeDefault": "Beállítás alapértelmezettként", "makeDefault": "Beállítás alapértelmezettként",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Eliminare questo profilo?", "deleteThisProfileTitle": "Eliminare questo profilo?",
"deleteThisProfileMessage": "Rimuovi ${displayName}. Le connessioni resteranno invariate.", "deleteThisProfileMessage": "Rimuovi ${displayName}. Le connessioni resteranno invariate.",
"active": "Attivo", "active": "Attivo",
"viaPlexAccount": "",
"manage": "Gestisci", "manage": "Gestisci",
"delete": "Elimina", "delete": "Elimina",
"signOut": "Esci", "signOut": "Esci",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Nessuna connessione — aggiungine una per usare questo profilo.", "noConnectionsHint": "Nessuna connessione — aggiungine una per usare questo profilo.",
"noConnections": "Nessuna connessione", "noConnections": "Nessuna connessione",
"plexHomeAccount": "Account Plex Home", "plexHomeAccount": "Account Plex Home",
"plexAccountChip": "Account Plex: ${account}",
"plexAccountUserChip": "${user} tramite ${account}",
"connectionDefault": "Predefinita", "connectionDefault": "Predefinita",
"connectionAs": "come ${displayName}", "connectionAs": "come ${displayName}",
"makeDefault": "Imposta come predefinita", "makeDefault": "Imposta come predefinita",
+2 -1
View File
@@ -762,7 +762,6 @@
"deleteThisProfileTitle": "このプロフィールを削除しますか?", "deleteThisProfileTitle": "このプロフィールを削除しますか?",
"deleteThisProfileMessage": "${displayName}を削除します。接続には影響しません。", "deleteThisProfileMessage": "${displayName}を削除します。接続には影響しません。",
"active": "アクティブ", "active": "アクティブ",
"viaPlexAccount": "",
"manage": "管理", "manage": "管理",
"delete": "削除", "delete": "削除",
"signOut": "サインアウト", "signOut": "サインアウト",
@@ -794,6 +793,8 @@
"noConnectionsHint": "接続がありません — このプロフィールを使うには接続を追加してください。", "noConnectionsHint": "接続がありません — このプロフィールを使うには接続を追加してください。",
"noConnections": "接続がありません", "noConnections": "接続がありません",
"plexHomeAccount": "Plex Homeアカウント", "plexHomeAccount": "Plex Homeアカウント",
"plexAccountChip": "Plexアカウント: ${account}",
"plexAccountUserChip": "${account}経由の${user}",
"connectionDefault": "デフォルト", "connectionDefault": "デフォルト",
"connectionAs": "${displayName}として", "connectionAs": "${displayName}として",
"makeDefault": "デフォルトに設定", "makeDefault": "デフォルトに設定",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Осы профиль өшірілсін бе?", "deleteThisProfileTitle": "Осы профиль өшірілсін бе?",
"deleteThisProfileMessage": "${displayName} өшіріледі. Қосылымдарға әсер етпейді.", "deleteThisProfileMessage": "${displayName} өшіріледі. Қосылымдарға әсер етпейді.",
"active": "Белсенді", "active": "Белсенді",
"viaPlexAccount": "",
"manage": "Басқару", "manage": "Басқару",
"delete": "Өшіру", "delete": "Өшіру",
"signOut": "Шығу", "signOut": "Шығу",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Қосылымдар жоқ — бұл профильді пайдалану үшін қосылым қосыңыз.", "noConnectionsHint": "Қосылымдар жоқ — бұл профильді пайдалану үшін қосылым қосыңыз.",
"noConnections": "Қосылымдар жоқ", "noConnections": "Қосылымдар жоқ",
"plexHomeAccount": "Plex Home тіркелгісі", "plexHomeAccount": "Plex Home тіркелгісі",
"plexAccountChip": "Plex тіркелгісі: ${account}",
"plexAccountUserChip": "${account} арқылы ${user}",
"connectionDefault": "Әдепкі", "connectionDefault": "Әдепкі",
"connectionAs": "${displayName} ретінде", "connectionAs": "${displayName} ретінде",
"makeDefault": "Әдепкі ету", "makeDefault": "Әдепкі ету",
+2 -1
View File
@@ -762,7 +762,6 @@
"deleteThisProfileTitle": "이 프로필을 삭제하시겠습니까?", "deleteThisProfileTitle": "이 프로필을 삭제하시겠습니까?",
"deleteThisProfileMessage": "${displayName}을(를) 제거합니다. 연결에는 영향이 없습니다.", "deleteThisProfileMessage": "${displayName}을(를) 제거합니다. 연결에는 영향이 없습니다.",
"active": "활성", "active": "활성",
"viaPlexAccount": "",
"manage": "관리", "manage": "관리",
"delete": "삭제", "delete": "삭제",
"signOut": "로그아웃", "signOut": "로그아웃",
@@ -794,6 +793,8 @@
"noConnectionsHint": "연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.", "noConnectionsHint": "연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.",
"noConnections": "연결 없음", "noConnections": "연결 없음",
"plexHomeAccount": "Plex Home 계정", "plexHomeAccount": "Plex Home 계정",
"plexAccountChip": "Plex 계정: ${account}",
"plexAccountUserChip": "${account} 계정의 ${user}",
"connectionDefault": "기본값", "connectionDefault": "기본값",
"connectionAs": "${displayName}(으)로", "connectionAs": "${displayName}(으)로",
"makeDefault": "기본값으로 설정", "makeDefault": "기본값으로 설정",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Slett denne profilen?", "deleteThisProfileTitle": "Slett denne profilen?",
"deleteThisProfileMessage": "Fjern ${displayName}. Tilkoblinger påvirkes ikke.", "deleteThisProfileMessage": "Fjern ${displayName}. Tilkoblinger påvirkes ikke.",
"active": "Aktiv", "active": "Aktiv",
"viaPlexAccount": "",
"manage": "Administrer", "manage": "Administrer",
"delete": "Slett", "delete": "Slett",
"signOut": "Logg ut", "signOut": "Logg ut",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Ingen tilkoblinger — legg til én for å bruke denne profilen.", "noConnectionsHint": "Ingen tilkoblinger — legg til én for å bruke denne profilen.",
"noConnections": "Ingen tilkoblinger", "noConnections": "Ingen tilkoblinger",
"plexHomeAccount": "Plex Home-konto", "plexHomeAccount": "Plex Home-konto",
"plexAccountChip": "Plex-konto: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Standard", "connectionDefault": "Standard",
"connectionAs": "som ${displayName}", "connectionAs": "som ${displayName}",
"makeDefault": "Gjør til standard", "makeDefault": "Gjør til standard",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Dit profiel verwijderen?", "deleteThisProfileTitle": "Dit profiel verwijderen?",
"deleteThisProfileMessage": "Verwijder ${displayName}. Verbindingen blijven ongewijzigd.", "deleteThisProfileMessage": "Verwijder ${displayName}. Verbindingen blijven ongewijzigd.",
"active": "Actief", "active": "Actief",
"viaPlexAccount": "",
"manage": "Beheren", "manage": "Beheren",
"delete": "Verwijderen", "delete": "Verwijderen",
"signOut": "Afmelden", "signOut": "Afmelden",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Geen verbindingen — voeg er één toe om dit profiel te gebruiken.", "noConnectionsHint": "Geen verbindingen — voeg er één toe om dit profiel te gebruiken.",
"noConnections": "Geen verbindingen", "noConnections": "Geen verbindingen",
"plexHomeAccount": "Plex Home-account", "plexHomeAccount": "Plex Home-account",
"plexAccountChip": "Plex-account: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Standaard", "connectionDefault": "Standaard",
"connectionAs": "als ${displayName}", "connectionAs": "als ${displayName}",
"makeDefault": "Als standaard instellen", "makeDefault": "Als standaard instellen",
+2 -1
View File
@@ -765,7 +765,6 @@
"deleteThisProfileTitle": "Usunąć ten profil?", "deleteThisProfileTitle": "Usunąć ten profil?",
"deleteThisProfileMessage": "Usuń ${displayName}. Połączenia nie zostaną zmienione.", "deleteThisProfileMessage": "Usuń ${displayName}. Połączenia nie zostaną zmienione.",
"active": "Aktywny", "active": "Aktywny",
"viaPlexAccount": "",
"manage": "Zarządzaj", "manage": "Zarządzaj",
"delete": "Usuń", "delete": "Usuń",
"signOut": "Wyloguj się", "signOut": "Wyloguj się",
@@ -797,6 +796,8 @@
"noConnectionsHint": "Brak połączeń — dodaj jedno, aby używać tego profilu.", "noConnectionsHint": "Brak połączeń — dodaj jedno, aby używać tego profilu.",
"noConnections": "Brak połączeń", "noConnections": "Brak połączeń",
"plexHomeAccount": "Konto Plex Home", "plexHomeAccount": "Konto Plex Home",
"plexAccountChip": "Konto Plex: ${account}",
"plexAccountUserChip": "${user} przez ${account}",
"connectionDefault": "Domyślne", "connectionDefault": "Domyślne",
"connectionAs": "jako ${displayName}", "connectionAs": "jako ${displayName}",
"makeDefault": "Ustaw jako domyślne", "makeDefault": "Ustaw jako domyślne",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Excluir este perfil?", "deleteThisProfileTitle": "Excluir este perfil?",
"deleteThisProfileMessage": "Remover ${displayName}. As conexões não serão afetadas.", "deleteThisProfileMessage": "Remover ${displayName}. As conexões não serão afetadas.",
"active": "Ativo", "active": "Ativo",
"viaPlexAccount": "",
"manage": "Gerenciar", "manage": "Gerenciar",
"delete": "Excluir", "delete": "Excluir",
"signOut": "Sair", "signOut": "Sair",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Sem conexões — adicione uma para usar este perfil.", "noConnectionsHint": "Sem conexões — adicione uma para usar este perfil.",
"noConnections": "Sem conexões", "noConnections": "Sem conexões",
"plexHomeAccount": "Conta Plex Home", "plexHomeAccount": "Conta Plex Home",
"plexAccountChip": "Conta Plex: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Padrão", "connectionDefault": "Padrão",
"connectionAs": "como ${displayName}", "connectionAs": "como ${displayName}",
"makeDefault": "Definir como padrão", "makeDefault": "Definir como padrão",
+2 -1
View File
@@ -765,7 +765,6 @@
"deleteThisProfileTitle": "Удалить этот профиль?", "deleteThisProfileTitle": "Удалить этот профиль?",
"deleteThisProfileMessage": "Удалить ${displayName}. Подключения не изменятся.", "deleteThisProfileMessage": "Удалить ${displayName}. Подключения не изменятся.",
"active": "Активный", "active": "Активный",
"viaPlexAccount": "",
"manage": "Управление", "manage": "Управление",
"delete": "Удалить", "delete": "Удалить",
"signOut": "Выйти", "signOut": "Выйти",
@@ -797,6 +796,8 @@
"noConnectionsHint": "Нет соединений — добавьте одно, чтобы использовать этот профиль.", "noConnectionsHint": "Нет соединений — добавьте одно, чтобы использовать этот профиль.",
"noConnections": "Нет соединений", "noConnections": "Нет соединений",
"plexHomeAccount": "Аккаунт Plex Home", "plexHomeAccount": "Аккаунт Plex Home",
"plexAccountChip": "Аккаунт Plex: ${account}",
"plexAccountUserChip": "${user} через ${account}",
"connectionDefault": "По умолчанию", "connectionDefault": "По умолчанию",
"connectionAs": "как ${displayName}", "connectionAs": "как ${displayName}",
"makeDefault": "Сделать по умолчанию", "makeDefault": "Сделать по умолчанию",
+1 -1
View File
@@ -4,7 +4,7 @@
/// To regenerate, run: `dart run slang` /// To regenerate, run: `dart run slang`
/// ///
/// Locales: 22 /// Locales: 22
/// Strings: 32738 (1488 per locale) /// Strings: 32781 (1490 per locale)
// coverage:ignore-file // coverage:ignore-file
// ignore_for_file: type=lint, unused_import // ignore_for_file: type=lint, unused_import
+6 -2
View File
@@ -881,6 +881,8 @@ class _Translations$profiles$az extends Translations$profiles$en {
@override String get noConnectionsHint => 'Qoşulma yoxdur — bu profili istifadə etmək üçün birini əlavə edin.'; @override String get noConnectionsHint => 'Qoşulma yoxdur — bu profili istifadə etmək üçün birini əlavə edin.';
@override String get noConnections => 'Qoşulma yoxdur'; @override String get noConnections => 'Qoşulma yoxdur';
@override String get plexHomeAccount => 'Plex Ev hesabı'; @override String get plexHomeAccount => 'Plex Ev hesabı';
@override String plexAccountChip({required Object account}) => 'Plex hesabı: ${account}';
@override String plexAccountUserChip({required Object account, required Object user}) => '${account} hesabı vasitəsilə ${user}';
@override String get connectionDefault => 'Defolt'; @override String get connectionDefault => 'Defolt';
@override String connectionAs({required Object displayName}) => '${displayName} olaraq'; @override String connectionAs({required Object displayName}) => '${displayName} olaraq';
@override String get makeDefault => 'Defolt et'; @override String get makeDefault => 'Defolt et';
@@ -2842,6 +2844,8 @@ extension on TranslationsAz {
'profiles.noConnectionsHint' => 'Qoşulma yoxdur — bu profili istifadə etmək üçün birini əlavə edin.', 'profiles.noConnectionsHint' => 'Qoşulma yoxdur — bu profili istifadə etmək üçün birini əlavə edin.',
'profiles.noConnections' => 'Qoşulma yoxdur', 'profiles.noConnections' => 'Qoşulma yoxdur',
'profiles.plexHomeAccount' => 'Plex Ev hesabı', 'profiles.plexHomeAccount' => 'Plex Ev hesabı',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex hesabı: ${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} hesabı vasitəsilə ${user}',
'profiles.connectionDefault' => 'Defolt', 'profiles.connectionDefault' => 'Defolt',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName} olaraq', 'profiles.connectionAs' => ({required Object displayName}) => '${displayName} olaraq',
'profiles.makeDefault' => 'Defolt et', 'profiles.makeDefault' => 'Defolt et',
@@ -3224,10 +3228,10 @@ extension on TranslationsAz {
'watchTogether.pasteFromClipboard' => 'Buferdən yapışdır', 'watchTogether.pasteFromClipboard' => 'Buferdən yapışdır',
'watchTogether.pleaseEnterCode' => 'Lütfən seans kodunu daxil edin', 'watchTogether.pleaseEnterCode' => 'Lütfən seans kodunu daxil edin',
'watchTogether.codeMustBe5Chars' => 'Seans kodu 5 simvol olmalıdır', 'watchTogether.codeMustBe5Chars' => 'Seans kodu 5 simvol olmalıdır',
'watchTogether.joinInstructions' => 'Qoşulmaq üçün təşkilatçının seans kodunu daxil edin.',
'watchTogether.failedToCreate' => 'Seans yaradıla bilmədi',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.joinInstructions' => 'Qoşulmaq üçün təşkilatçının seans kodunu daxil edin.',
'watchTogether.failedToCreate' => 'Seans yaradıla bilmədi',
'watchTogether.failedToJoin' => 'Seansa qoşuluna bilmədi', 'watchTogether.failedToJoin' => 'Seansa qoşuluna bilmədi',
'watchTogether.sessionCodeCopied' => 'Seans kodu buferə kopyalandı', 'watchTogether.sessionCodeCopied' => 'Seans kodu buferə kopyalandı',
'watchTogether.relayUnreachable' => 'Rele serverinə çatmaq olmur. İnternet provayderinin bloklaması Birlikdə İzləməyə mane ola bilər.', 'watchTogether.relayUnreachable' => 'Rele serverinə çatmaq olmur. İnternet provayderinin bloklaması Birlikdə İzləməyə mane ola bilər.',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$bg extends Translations$profiles$en {
@override String get noConnectionsHint => 'Няма връзки — добавете такава, за да използвате този профил.'; @override String get noConnectionsHint => 'Няма връзки — добавете такава, за да използвате този профил.';
@override String get noConnections => 'Няма връзки'; @override String get noConnections => 'Няма връзки';
@override String get plexHomeAccount => 'Plex Home акаунт'; @override String get plexHomeAccount => 'Plex Home акаунт';
@override String plexAccountChip({required Object account}) => 'Plex акаунт: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} през ${account}';
@override String get connectionDefault => 'По подразбиране'; @override String get connectionDefault => 'По подразбиране';
@override String connectionAs({required Object displayName}) => 'като ${displayName}'; @override String connectionAs({required Object displayName}) => 'като ${displayName}';
@override String get makeDefault => 'Направи по подразбиране'; @override String get makeDefault => 'Направи по подразбиране';
@@ -2827,6 +2829,8 @@ extension on TranslationsBg {
'profiles.noConnectionsHint' => 'Няма връзки — добавете такава, за да използвате този профил.', 'profiles.noConnectionsHint' => 'Няма връзки — добавете такава, за да използвате този профил.',
'profiles.noConnections' => 'Няма връзки', 'profiles.noConnections' => 'Няма връзки',
'profiles.plexHomeAccount' => 'Plex Home акаунт', 'profiles.plexHomeAccount' => 'Plex Home акаунт',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex акаунт: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} през ${account}',
'profiles.connectionDefault' => 'По подразбиране', 'profiles.connectionDefault' => 'По подразбиране',
'profiles.connectionAs' => ({required Object displayName}) => 'като ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'като ${displayName}',
'profiles.makeDefault' => 'Направи по подразбиране', 'profiles.makeDefault' => 'Направи по подразбиране',
@@ -3213,10 +3217,10 @@ extension on TranslationsBg {
'watchTogether.failedToJoin' => 'Неуспешно присъединяване към сесия', 'watchTogether.failedToJoin' => 'Неуспешно присъединяване към сесия',
'watchTogether.sessionCodeCopied' => 'Кодът на сесията е копиран в клипборда', 'watchTogether.sessionCodeCopied' => 'Кодът на сесията е копиран в клипборда',
'watchTogether.relayUnreachable' => 'Релейният сървър е недостъпен. Възможно е интернет доставчикът да блокира гледането заедно.', 'watchTogether.relayUnreachable' => 'Релейният сървър е недостъпен. Възможно е интернет доставчикът да блокира гледането заедно.',
'watchTogether.reconnectingToHost' => 'Повторно свързване с организатора...',
'watchTogether.currentPlayback' => 'Текущо възпроизвеждане',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Повторно свързване с организатора...',
'watchTogether.currentPlayback' => 'Текущо възпроизвеждане',
'watchTogether.joinCurrentPlayback' => 'Присъедини се към текущото възпроизвеждане', 'watchTogether.joinCurrentPlayback' => 'Присъедини се към текущото възпроизвеждане',
'watchTogether.joinCurrentPlaybackDescription' => 'Върнете се към това, което организаторът гледа в момента', 'watchTogether.joinCurrentPlaybackDescription' => 'Върнете се към това, което организаторът гледа в момента',
'watchTogether.failedToOpenCurrentPlayback' => 'Неуспешно отваряне на текущото възпроизвеждане', 'watchTogether.failedToOpenCurrentPlayback' => 'Неуспешно отваряне на текущото възпроизвеждане',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$da extends Translations$profiles$en {
@override String get noConnectionsHint => 'Ingen forbindelser — tilføj en for at bruge denne profil.'; @override String get noConnectionsHint => 'Ingen forbindelser — tilføj en for at bruge denne profil.';
@override String get noConnections => 'Ingen forbindelser'; @override String get noConnections => 'Ingen forbindelser';
@override String get plexHomeAccount => 'Plex Home-konto'; @override String get plexHomeAccount => 'Plex Home-konto';
@override String plexAccountChip({required Object account}) => 'Plex-konto: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} via ${account}';
@override String get connectionDefault => 'Standard'; @override String get connectionDefault => 'Standard';
@override String connectionAs({required Object displayName}) => 'som ${displayName}'; @override String connectionAs({required Object displayName}) => 'som ${displayName}';
@override String get makeDefault => 'Gør til standard'; @override String get makeDefault => 'Gør til standard';
@@ -2827,6 +2829,8 @@ extension on TranslationsDa {
'profiles.noConnectionsHint' => 'Ingen forbindelser — tilføj en for at bruge denne profil.', 'profiles.noConnectionsHint' => 'Ingen forbindelser — tilføj en for at bruge denne profil.',
'profiles.noConnections' => 'Ingen forbindelser', 'profiles.noConnections' => 'Ingen forbindelser',
'profiles.plexHomeAccount' => 'Plex Home-konto', 'profiles.plexHomeAccount' => 'Plex Home-konto',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex-konto: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} via ${account}',
'profiles.connectionDefault' => 'Standard', 'profiles.connectionDefault' => 'Standard',
'profiles.connectionAs' => ({required Object displayName}) => 'som ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'som ${displayName}',
'profiles.makeDefault' => 'Gør til standard', 'profiles.makeDefault' => 'Gør til standard',
@@ -3213,10 +3217,10 @@ extension on TranslationsDa {
'watchTogether.failedToJoin' => 'Kunne ikke deltage i session', 'watchTogether.failedToJoin' => 'Kunne ikke deltage i session',
'watchTogether.sessionCodeCopied' => 'Sessionskode kopieret til udklipsholder', 'watchTogether.sessionCodeCopied' => 'Sessionskode kopieret til udklipsholder',
'watchTogether.relayUnreachable' => 'Relayserveren kan ikke nås. Blokering hos internetudbyderen kan forhindre Se sammen.', 'watchTogether.relayUnreachable' => 'Relayserveren kan ikke nås. Blokering hos internetudbyderen kan forhindre Se sammen.',
'watchTogether.reconnectingToHost' => 'Genopretter forbindelse til vært...',
'watchTogether.currentPlayback' => 'Nuværende afspilning',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Genopretter forbindelse til vært...',
'watchTogether.currentPlayback' => 'Nuværende afspilning',
'watchTogether.joinCurrentPlayback' => 'Deltag i nuværende afspilning', 'watchTogether.joinCurrentPlayback' => 'Deltag i nuværende afspilning',
'watchTogether.joinCurrentPlaybackDescription' => 'Hop tilbage til det værten ser nu', 'watchTogether.joinCurrentPlaybackDescription' => 'Hop tilbage til det værten ser nu',
'watchTogether.failedToOpenCurrentPlayback' => 'Kunne ikke åbne nuværende afspilning', 'watchTogether.failedToOpenCurrentPlayback' => 'Kunne ikke åbne nuværende afspilning',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$de extends Translations$profiles$en {
@override String get noConnectionsHint => 'Keine Verbindungen — füge eine hinzu, um dieses Profil zu nutzen.'; @override String get noConnectionsHint => 'Keine Verbindungen — füge eine hinzu, um dieses Profil zu nutzen.';
@override String get noConnections => 'Keine Verbindungen'; @override String get noConnections => 'Keine Verbindungen';
@override String get plexHomeAccount => 'Plex Home-Konto'; @override String get plexHomeAccount => 'Plex Home-Konto';
@override String plexAccountChip({required Object account}) => 'Plex-Konto: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} über ${account}';
@override String get connectionDefault => 'Standard'; @override String get connectionDefault => 'Standard';
@override String connectionAs({required Object displayName}) => 'als ${displayName}'; @override String connectionAs({required Object displayName}) => 'als ${displayName}';
@override String get makeDefault => 'Als Standard festlegen'; @override String get makeDefault => 'Als Standard festlegen';
@@ -2827,6 +2829,8 @@ extension on TranslationsDe {
'profiles.noConnectionsHint' => 'Keine Verbindungen — füge eine hinzu, um dieses Profil zu nutzen.', 'profiles.noConnectionsHint' => 'Keine Verbindungen — füge eine hinzu, um dieses Profil zu nutzen.',
'profiles.noConnections' => 'Keine Verbindungen', 'profiles.noConnections' => 'Keine Verbindungen',
'profiles.plexHomeAccount' => 'Plex Home-Konto', 'profiles.plexHomeAccount' => 'Plex Home-Konto',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex-Konto: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} über ${account}',
'profiles.connectionDefault' => 'Standard', 'profiles.connectionDefault' => 'Standard',
'profiles.connectionAs' => ({required Object displayName}) => 'als ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'als ${displayName}',
'profiles.makeDefault' => 'Als Standard festlegen', 'profiles.makeDefault' => 'Als Standard festlegen',
@@ -3213,10 +3217,10 @@ extension on TranslationsDe {
'watchTogether.failedToJoin' => 'Beitritt zur Sitzung fehlgeschlagen', 'watchTogether.failedToJoin' => 'Beitritt zur Sitzung fehlgeschlagen',
'watchTogether.sessionCodeCopied' => 'Sitzungscode in Zwischenablage kopiert', 'watchTogether.sessionCodeCopied' => 'Sitzungscode in Zwischenablage kopiert',
'watchTogether.relayUnreachable' => 'Relay-Server nicht erreichbar. Eine Sperre durch den Internetanbieter kann gemeinsames Schauen verhindern.', 'watchTogether.relayUnreachable' => 'Relay-Server nicht erreichbar. Eine Sperre durch den Internetanbieter kann gemeinsames Schauen verhindern.',
'watchTogether.reconnectingToHost' => 'Verbindung zum Host wird wiederhergestellt …',
'watchTogether.currentPlayback' => 'Aktuelle Wiedergabe',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Verbindung zum Host wird wiederhergestellt …',
'watchTogether.currentPlayback' => 'Aktuelle Wiedergabe',
'watchTogether.joinCurrentPlayback' => 'Aktueller Wiedergabe beitreten', 'watchTogether.joinCurrentPlayback' => 'Aktueller Wiedergabe beitreten',
'watchTogether.joinCurrentPlaybackDescription' => 'Zu dem Inhalt wechseln, den der Host gerade ansieht', 'watchTogether.joinCurrentPlaybackDescription' => 'Zu dem Inhalt wechseln, den der Host gerade ansieht',
'watchTogether.failedToOpenCurrentPlayback' => 'Aktuelle Wiedergabe konnte nicht geöffnet werden', 'watchTogether.failedToOpenCurrentPlayback' => 'Aktuelle Wiedergabe konnte nicht geöffnet werden',
+10 -6
View File
@@ -2296,9 +2296,6 @@ class Translations$profiles$en {
/// en: 'Active' /// en: 'Active'
String get active => 'Active'; String get active => 'Active';
/// en: 'via ${name}'
String viaPlexAccount({required Object name}) => 'via ${name}';
/// en: 'Manage' /// en: 'Manage'
String get manage => 'Manage'; String get manage => 'Manage';
@@ -2392,6 +2389,12 @@ class Translations$profiles$en {
/// en: 'Plex Home account' /// en: 'Plex Home account'
String get plexHomeAccount => 'Plex Home account'; String get plexHomeAccount => 'Plex Home account';
/// en: 'Plex account: ${account}'
String plexAccountChip({required Object account}) => 'Plex account: ${account}';
/// en: '${user} via ${account}'
String plexAccountUserChip({required Object user, required Object account}) => '${user} via ${account}';
/// en: 'Default' /// en: 'Default'
String get connectionDefault => 'Default'; String get connectionDefault => 'Default';
@@ -6757,7 +6760,6 @@ extension on Translations {
'profiles.deleteThisProfileTitle' => 'Delete this profile?', 'profiles.deleteThisProfileTitle' => 'Delete this profile?',
'profiles.deleteThisProfileMessage' => ({required Object displayName}) => 'Remove ${displayName}. Connections aren\'t affected.', 'profiles.deleteThisProfileMessage' => ({required Object displayName}) => 'Remove ${displayName}. Connections aren\'t affected.',
'profiles.active' => 'Active', 'profiles.active' => 'Active',
'profiles.viaPlexAccount' => ({required Object name}) => 'via ${name}',
'profiles.manage' => 'Manage', 'profiles.manage' => 'Manage',
'profiles.delete' => 'Delete', 'profiles.delete' => 'Delete',
'profiles.signOut' => 'Sign out', 'profiles.signOut' => 'Sign out',
@@ -6789,6 +6791,8 @@ extension on Translations {
'profiles.noConnectionsHint' => 'No connections — add one to use this profile.', 'profiles.noConnectionsHint' => 'No connections — add one to use this profile.',
'profiles.noConnections' => 'No connections', 'profiles.noConnections' => 'No connections',
'profiles.plexHomeAccount' => 'Plex Home account', 'profiles.plexHomeAccount' => 'Plex Home account',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex account: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} via ${account}',
'profiles.connectionDefault' => 'Default', 'profiles.connectionDefault' => 'Default',
'profiles.connectionAs' => ({required Object displayName}) => 'as ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'as ${displayName}',
'profiles.makeDefault' => 'Make default', 'profiles.makeDefault' => 'Make default',
@@ -7065,9 +7069,9 @@ extension on Translations {
'explore.stats.completed' => ({required Object n}) => '${n} completed', 'explore.stats.completed' => ({required Object n}) => '${n} completed',
'explore.stats.onHold' => ({required Object n}) => '${n} on hold', 'explore.stats.onHold' => ({required Object n}) => '${n} on hold',
'explore.stats.dropped' => ({required Object n}) => '${n} dropped', 'explore.stats.dropped' => ({required Object n}) => '${n} dropped',
'explore.season.winter' => 'Winter',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'explore.season.winter' => 'Winter',
'explore.season.spring' => 'Spring', 'explore.season.spring' => 'Spring',
'explore.season.summer' => 'Summer', 'explore.season.summer' => 'Summer',
'explore.season.fall' => 'Fall', 'explore.season.fall' => 'Fall',
@@ -7579,9 +7583,9 @@ extension on Translations {
'externalPlayer.playerCommand' => 'Command', 'externalPlayer.playerCommand' => 'Command',
'externalPlayer.playerPackage' => 'Package Name', 'externalPlayer.playerPackage' => 'Package Name',
'externalPlayer.playerUrlScheme' => 'URL Scheme', 'externalPlayer.playerUrlScheme' => 'URL Scheme',
'externalPlayer.off' => 'Off',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'externalPlayer.off' => 'Off',
'externalPlayer.launchFailed' => 'Failed to open external player', 'externalPlayer.launchFailed' => 'Failed to open external player',
'externalPlayer.appNotInstalled' => ({required Object name}) => '${name} is not installed', 'externalPlayer.appNotInstalled' => ({required Object name}) => '${name} is not installed',
'externalPlayer.playInExternalPlayer' => 'Play in External Player', 'externalPlayer.playInExternalPlayer' => 'Play in External Player',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$es extends Translations$profiles$en {
@override String get noConnectionsHint => 'Sin conexiones — añade una para usar este perfil.'; @override String get noConnectionsHint => 'Sin conexiones — añade una para usar este perfil.';
@override String get noConnections => 'Sin conexiones'; @override String get noConnections => 'Sin conexiones';
@override String get plexHomeAccount => 'Cuenta Plex Home'; @override String get plexHomeAccount => 'Cuenta Plex Home';
@override String plexAccountChip({required Object account}) => 'Cuenta Plex: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} a través de ${account}';
@override String get connectionDefault => 'Predeterminada'; @override String get connectionDefault => 'Predeterminada';
@override String connectionAs({required Object displayName}) => 'como ${displayName}'; @override String connectionAs({required Object displayName}) => 'como ${displayName}';
@override String get makeDefault => 'Establecer como predeterminada'; @override String get makeDefault => 'Establecer como predeterminada';
@@ -2827,6 +2829,8 @@ extension on TranslationsEs {
'profiles.noConnectionsHint' => 'Sin conexiones — añade una para usar este perfil.', 'profiles.noConnectionsHint' => 'Sin conexiones — añade una para usar este perfil.',
'profiles.noConnections' => 'Sin conexiones', 'profiles.noConnections' => 'Sin conexiones',
'profiles.plexHomeAccount' => 'Cuenta Plex Home', 'profiles.plexHomeAccount' => 'Cuenta Plex Home',
'profiles.plexAccountChip' => ({required Object account}) => 'Cuenta Plex: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} a través de ${account}',
'profiles.connectionDefault' => 'Predeterminada', 'profiles.connectionDefault' => 'Predeterminada',
'profiles.connectionAs' => ({required Object displayName}) => 'como ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'como ${displayName}',
'profiles.makeDefault' => 'Establecer como predeterminada', 'profiles.makeDefault' => 'Establecer como predeterminada',
@@ -3213,10 +3217,10 @@ extension on TranslationsEs {
'watchTogether.failedToJoin' => 'Error al unirse a la sesión', 'watchTogether.failedToJoin' => 'Error al unirse a la sesión',
'watchTogether.sessionCodeCopied' => 'Código de sesión copiado al portapapeles', 'watchTogether.sessionCodeCopied' => 'Código de sesión copiado al portapapeles',
'watchTogether.relayUnreachable' => 'No se puede acceder al servidor de retransmisión. Es posible que tu proveedor de internet esté bloqueando Ver juntos.', 'watchTogether.relayUnreachable' => 'No se puede acceder al servidor de retransmisión. Es posible que tu proveedor de internet esté bloqueando Ver juntos.',
'watchTogether.reconnectingToHost' => 'Reconectando con el anfitrión...',
'watchTogether.currentPlayback' => 'Reproducción actual',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Reconectando con el anfitrión...',
'watchTogether.currentPlayback' => 'Reproducción actual',
'watchTogether.joinCurrentPlayback' => 'Unirse a la reproducción actual', 'watchTogether.joinCurrentPlayback' => 'Unirse a la reproducción actual',
'watchTogether.joinCurrentPlaybackDescription' => 'Vuelve a lo que el anfitrión está viendo ahora mismo', 'watchTogether.joinCurrentPlaybackDescription' => 'Vuelve a lo que el anfitrión está viendo ahora mismo',
'watchTogether.failedToOpenCurrentPlayback' => 'No se pudo abrir la reproducción actual', 'watchTogether.failedToOpenCurrentPlayback' => 'No se pudo abrir la reproducción actual',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$fr extends Translations$profiles$en {
@override String get noConnectionsHint => 'Aucune connexion — ajoutez-en une pour utiliser ce profil.'; @override String get noConnectionsHint => 'Aucune connexion — ajoutez-en une pour utiliser ce profil.';
@override String get noConnections => 'Aucune connexion'; @override String get noConnections => 'Aucune connexion';
@override String get plexHomeAccount => 'Compte Plex Home'; @override String get plexHomeAccount => 'Compte Plex Home';
@override String plexAccountChip({required Object account}) => 'Compte Plex : ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} via ${account}';
@override String get connectionDefault => 'Par défaut'; @override String get connectionDefault => 'Par défaut';
@override String connectionAs({required Object displayName}) => 'en tant que ${displayName}'; @override String connectionAs({required Object displayName}) => 'en tant que ${displayName}';
@override String get makeDefault => 'Définir par défaut'; @override String get makeDefault => 'Définir par défaut';
@@ -2827,6 +2829,8 @@ extension on TranslationsFr {
'profiles.noConnectionsHint' => 'Aucune connexion — ajoutez-en une pour utiliser ce profil.', 'profiles.noConnectionsHint' => 'Aucune connexion — ajoutez-en une pour utiliser ce profil.',
'profiles.noConnections' => 'Aucune connexion', 'profiles.noConnections' => 'Aucune connexion',
'profiles.plexHomeAccount' => 'Compte Plex Home', 'profiles.plexHomeAccount' => 'Compte Plex Home',
'profiles.plexAccountChip' => ({required Object account}) => 'Compte Plex : ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} via ${account}',
'profiles.connectionDefault' => 'Par défaut', 'profiles.connectionDefault' => 'Par défaut',
'profiles.connectionAs' => ({required Object displayName}) => 'en tant que ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'en tant que ${displayName}',
'profiles.makeDefault' => 'Définir par défaut', 'profiles.makeDefault' => 'Définir par défaut',
@@ -3213,10 +3217,10 @@ extension on TranslationsFr {
'watchTogether.failedToJoin' => 'Échec de la connexion à la session', 'watchTogether.failedToJoin' => 'Échec de la connexion à la session',
'watchTogether.sessionCodeCopied' => 'Code de session copié dans le presse-papiers', 'watchTogether.sessionCodeCopied' => 'Code de session copié dans le presse-papiers',
'watchTogether.relayUnreachable' => 'Serveur relais inaccessible. Un blocage par le fournisseur daccès peut empêcher le fonctionnement de Regarder ensemble.', 'watchTogether.relayUnreachable' => 'Serveur relais inaccessible. Un blocage par le fournisseur daccès peut empêcher le fonctionnement de Regarder ensemble.',
'watchTogether.reconnectingToHost' => 'Reconnexion à l\'hôte...',
'watchTogether.currentPlayback' => 'Lecture en cours',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Reconnexion à l\'hôte...',
'watchTogether.currentPlayback' => 'Lecture en cours',
'watchTogether.joinCurrentPlayback' => 'Rejoindre la lecture en cours', 'watchTogether.joinCurrentPlayback' => 'Rejoindre la lecture en cours',
'watchTogether.joinCurrentPlaybackDescription' => 'Reprendre le contenu que lhôte regarde actuellement', 'watchTogether.joinCurrentPlaybackDescription' => 'Reprendre le contenu que lhôte regarde actuellement',
'watchTogether.failedToOpenCurrentPlayback' => 'Impossible d\'ouvrir la lecture en cours', 'watchTogether.failedToOpenCurrentPlayback' => 'Impossible d\'ouvrir la lecture en cours',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$hu extends Translations$profiles$en {
@override String get noConnectionsHint => 'Nincsenek kapcsolatok — adj hozzá egyet a profil használatához.'; @override String get noConnectionsHint => 'Nincsenek kapcsolatok — adj hozzá egyet a profil használatához.';
@override String get noConnections => 'Nincsenek kapcsolatok'; @override String get noConnections => 'Nincsenek kapcsolatok';
@override String get plexHomeAccount => 'Plex Home-fiók'; @override String get plexHomeAccount => 'Plex Home-fiók';
@override String plexAccountChip({required Object account}) => 'Plex-fiók: ${account}';
@override String plexAccountUserChip({required Object account, required Object user}) => '${account} fiókján keresztül: ${user}';
@override String get connectionDefault => 'Alapértelmezett'; @override String get connectionDefault => 'Alapértelmezett';
@override String connectionAs({required Object displayName}) => 'mint ${displayName}'; @override String connectionAs({required Object displayName}) => 'mint ${displayName}';
@override String get makeDefault => 'Beállítás alapértelmezettként'; @override String get makeDefault => 'Beállítás alapértelmezettként';
@@ -2827,6 +2829,8 @@ extension on TranslationsHu {
'profiles.noConnectionsHint' => 'Nincsenek kapcsolatok — adj hozzá egyet a profil használatához.', 'profiles.noConnectionsHint' => 'Nincsenek kapcsolatok — adj hozzá egyet a profil használatához.',
'profiles.noConnections' => 'Nincsenek kapcsolatok', 'profiles.noConnections' => 'Nincsenek kapcsolatok',
'profiles.plexHomeAccount' => 'Plex Home-fiók', 'profiles.plexHomeAccount' => 'Plex Home-fiók',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex-fiók: ${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} fiókján keresztül: ${user}',
'profiles.connectionDefault' => 'Alapértelmezett', 'profiles.connectionDefault' => 'Alapértelmezett',
'profiles.connectionAs' => ({required Object displayName}) => 'mint ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'mint ${displayName}',
'profiles.makeDefault' => 'Beállítás alapértelmezettként', 'profiles.makeDefault' => 'Beállítás alapértelmezettként',
@@ -3213,10 +3217,10 @@ extension on TranslationsHu {
'watchTogether.failedToJoin' => 'Nem sikerült csatlakozni a munkamenethez', 'watchTogether.failedToJoin' => 'Nem sikerült csatlakozni a munkamenethez',
'watchTogether.sessionCodeCopied' => 'A munkamenetkód a vágólapra másolva', 'watchTogether.sessionCodeCopied' => 'A munkamenetkód a vágólapra másolva',
'watchTogether.relayUnreachable' => 'A relészerver nem érhető el. Az internetszolgáltató blokkolása megakadályozhatja a közös nézést.', 'watchTogether.relayUnreachable' => 'A relészerver nem érhető el. Az internetszolgáltató blokkolása megakadályozhatja a közös nézést.',
'watchTogether.reconnectingToHost' => 'Újracsatlakozás a házigazdához...',
'watchTogether.currentPlayback' => 'Jelenlegi lejátszás',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Újracsatlakozás a házigazdához...',
'watchTogether.currentPlayback' => 'Jelenlegi lejátszás',
'watchTogether.joinCurrentPlayback' => 'Csatlakozás a jelenlegi lejátszáshoz', 'watchTogether.joinCurrentPlayback' => 'Csatlakozás a jelenlegi lejátszáshoz',
'watchTogether.joinCurrentPlaybackDescription' => 'Visszatérés ahhoz, amit a házigazda éppen néz', 'watchTogether.joinCurrentPlaybackDescription' => 'Visszatérés ahhoz, amit a házigazda éppen néz',
'watchTogether.failedToOpenCurrentPlayback' => 'Nem sikerült megnyitni a jelenlegi lejátszást', 'watchTogether.failedToOpenCurrentPlayback' => 'Nem sikerült megnyitni a jelenlegi lejátszást',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$it extends Translations$profiles$en {
@override String get noConnectionsHint => 'Nessuna connessione — aggiungine una per usare questo profilo.'; @override String get noConnectionsHint => 'Nessuna connessione — aggiungine una per usare questo profilo.';
@override String get noConnections => 'Nessuna connessione'; @override String get noConnections => 'Nessuna connessione';
@override String get plexHomeAccount => 'Account Plex Home'; @override String get plexHomeAccount => 'Account Plex Home';
@override String plexAccountChip({required Object account}) => 'Account Plex: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} tramite ${account}';
@override String get connectionDefault => 'Predefinita'; @override String get connectionDefault => 'Predefinita';
@override String connectionAs({required Object displayName}) => 'come ${displayName}'; @override String connectionAs({required Object displayName}) => 'come ${displayName}';
@override String get makeDefault => 'Imposta come predefinita'; @override String get makeDefault => 'Imposta come predefinita';
@@ -2827,6 +2829,8 @@ extension on TranslationsIt {
'profiles.noConnectionsHint' => 'Nessuna connessione — aggiungine una per usare questo profilo.', 'profiles.noConnectionsHint' => 'Nessuna connessione — aggiungine una per usare questo profilo.',
'profiles.noConnections' => 'Nessuna connessione', 'profiles.noConnections' => 'Nessuna connessione',
'profiles.plexHomeAccount' => 'Account Plex Home', 'profiles.plexHomeAccount' => 'Account Plex Home',
'profiles.plexAccountChip' => ({required Object account}) => 'Account Plex: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} tramite ${account}',
'profiles.connectionDefault' => 'Predefinita', 'profiles.connectionDefault' => 'Predefinita',
'profiles.connectionAs' => ({required Object displayName}) => 'come ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'come ${displayName}',
'profiles.makeDefault' => 'Imposta come predefinita', 'profiles.makeDefault' => 'Imposta come predefinita',
@@ -3213,10 +3217,10 @@ extension on TranslationsIt {
'watchTogether.failedToJoin' => 'Impossibile unirsi alla sessione', 'watchTogether.failedToJoin' => 'Impossibile unirsi alla sessione',
'watchTogether.sessionCodeCopied' => 'Codice della sessione copiato negli appunti', 'watchTogether.sessionCodeCopied' => 'Codice della sessione copiato negli appunti',
'watchTogether.relayUnreachable' => 'Il server relay non è raggiungibile. Eventuali blocchi dell\'ISP potrebbero impedire l\'uso di Guarda insieme.', 'watchTogether.relayUnreachable' => 'Il server relay non è raggiungibile. Eventuali blocchi dell\'ISP potrebbero impedire l\'uso di Guarda insieme.',
'watchTogether.reconnectingToHost' => 'Riconnessione all\'host...',
'watchTogether.currentPlayback' => 'Riproduzione corrente',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Riconnessione all\'host...',
'watchTogether.currentPlayback' => 'Riproduzione corrente',
'watchTogether.joinCurrentPlayback' => 'Unisciti alla riproduzione corrente', 'watchTogether.joinCurrentPlayback' => 'Unisciti alla riproduzione corrente',
'watchTogether.joinCurrentPlaybackDescription' => 'Torna a ciò che l\'host sta guardando in questo momento', 'watchTogether.joinCurrentPlaybackDescription' => 'Torna a ciò che l\'host sta guardando in questo momento',
'watchTogether.failedToOpenCurrentPlayback' => 'Impossibile aprire la riproduzione corrente', 'watchTogether.failedToOpenCurrentPlayback' => 'Impossibile aprire la riproduzione corrente',
+6 -2
View File
@@ -876,6 +876,8 @@ class _Translations$profiles$ja extends Translations$profiles$en {
@override String get noConnectionsHint => '接続がありません — このプロフィールを使うには接続を追加してください。'; @override String get noConnectionsHint => '接続がありません — このプロフィールを使うには接続を追加してください。';
@override String get noConnections => '接続がありません'; @override String get noConnections => '接続がありません';
@override String get plexHomeAccount => 'Plex Homeアカウント'; @override String get plexHomeAccount => 'Plex Homeアカウント';
@override String plexAccountChip({required Object account}) => 'Plexアカウント: ${account}';
@override String plexAccountUserChip({required Object account, required Object user}) => '${account}経由の${user}';
@override String get connectionDefault => 'デフォルト'; @override String get connectionDefault => 'デフォルト';
@override String connectionAs({required Object displayName}) => '${displayName}として'; @override String connectionAs({required Object displayName}) => '${displayName}として';
@override String get makeDefault => 'デフォルトに設定'; @override String get makeDefault => 'デフォルトに設定';
@@ -2824,6 +2826,8 @@ extension on TranslationsJa {
'profiles.noConnectionsHint' => '接続がありません — このプロフィールを使うには接続を追加してください。', 'profiles.noConnectionsHint' => '接続がありません — このプロフィールを使うには接続を追加してください。',
'profiles.noConnections' => '接続がありません', 'profiles.noConnections' => '接続がありません',
'profiles.plexHomeAccount' => 'Plex Homeアカウント', 'profiles.plexHomeAccount' => 'Plex Homeアカウント',
'profiles.plexAccountChip' => ({required Object account}) => 'Plexアカウント: ${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account}経由の${user}',
'profiles.connectionDefault' => 'デフォルト', 'profiles.connectionDefault' => 'デフォルト',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName}として', 'profiles.connectionAs' => ({required Object displayName}) => '${displayName}として',
'profiles.makeDefault' => 'デフォルトに設定', 'profiles.makeDefault' => 'デフォルトに設定',
@@ -3210,10 +3214,10 @@ extension on TranslationsJa {
'watchTogether.failedToJoin' => 'セッションへの参加に失敗しました', 'watchTogether.failedToJoin' => 'セッションへの参加に失敗しました',
'watchTogether.sessionCodeCopied' => 'セッションコードをクリップボードにコピーしました', 'watchTogether.sessionCodeCopied' => 'セッションコードをクリップボードにコピーしました',
'watchTogether.relayUnreachable' => 'リレーサーバーに接続できません。ISPによるブロックのため「一緒に見る」を利用できない可能性があります。', 'watchTogether.relayUnreachable' => 'リレーサーバーに接続できません。ISPによるブロックのため「一緒に見る」を利用できない可能性があります。',
'watchTogether.reconnectingToHost' => 'ホストに再接続中…',
'watchTogether.currentPlayback' => '現在の再生',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'ホストに再接続中…',
'watchTogether.currentPlayback' => '現在の再生',
'watchTogether.joinCurrentPlayback' => '現在の再生に参加', 'watchTogether.joinCurrentPlayback' => '現在の再生に参加',
'watchTogether.joinCurrentPlaybackDescription' => 'ホストが現在視聴中のコンテンツに戻る', 'watchTogether.joinCurrentPlaybackDescription' => 'ホストが現在視聴中のコンテンツに戻る',
'watchTogether.failedToOpenCurrentPlayback' => '現在の再生を開けませんでした', 'watchTogether.failedToOpenCurrentPlayback' => '現在の再生を開けませんでした',
+6 -2
View File
@@ -881,6 +881,8 @@ class _Translations$profiles$kk extends Translations$profiles$en {
@override String get noConnectionsHint => 'Қосылымдар жоқ — бұл профильді пайдалану үшін қосылым қосыңыз.'; @override String get noConnectionsHint => 'Қосылымдар жоқ — бұл профильді пайдалану үшін қосылым қосыңыз.';
@override String get noConnections => 'Қосылымдар жоқ'; @override String get noConnections => 'Қосылымдар жоқ';
@override String get plexHomeAccount => 'Plex Home тіркелгісі'; @override String get plexHomeAccount => 'Plex Home тіркелгісі';
@override String plexAccountChip({required Object account}) => 'Plex тіркелгісі: ${account}';
@override String plexAccountUserChip({required Object account, required Object user}) => '${account} арқылы ${user}';
@override String get connectionDefault => 'Әдепкі'; @override String get connectionDefault => 'Әдепкі';
@override String connectionAs({required Object displayName}) => '${displayName} ретінде'; @override String connectionAs({required Object displayName}) => '${displayName} ретінде';
@override String get makeDefault => 'Әдепкі ету'; @override String get makeDefault => 'Әдепкі ету';
@@ -2842,6 +2844,8 @@ extension on TranslationsKk {
'profiles.noConnectionsHint' => 'Қосылымдар жоқ — бұл профильді пайдалану үшін қосылым қосыңыз.', 'profiles.noConnectionsHint' => 'Қосылымдар жоқ — бұл профильді пайдалану үшін қосылым қосыңыз.',
'profiles.noConnections' => 'Қосылымдар жоқ', 'profiles.noConnections' => 'Қосылымдар жоқ',
'profiles.plexHomeAccount' => 'Plex Home тіркелгісі', 'profiles.plexHomeAccount' => 'Plex Home тіркелгісі',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex тіркелгісі: ${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} арқылы ${user}',
'profiles.connectionDefault' => 'Әдепкі', 'profiles.connectionDefault' => 'Әдепкі',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName} ретінде', 'profiles.connectionAs' => ({required Object displayName}) => '${displayName} ретінде',
'profiles.makeDefault' => 'Әдепкі ету', 'profiles.makeDefault' => 'Әдепкі ету',
@@ -3224,10 +3228,10 @@ extension on TranslationsKk {
'watchTogether.pasteFromClipboard' => 'Алмасу буферінен қою', 'watchTogether.pasteFromClipboard' => 'Алмасу буферінен қою',
'watchTogether.pleaseEnterCode' => 'Сеанс кодын енгізіңіз', 'watchTogether.pleaseEnterCode' => 'Сеанс кодын енгізіңіз',
'watchTogether.codeMustBe5Chars' => 'Сеанс коды 5 таңбадан тұруы керек', 'watchTogether.codeMustBe5Chars' => 'Сеанс коды 5 таңбадан тұруы керек',
'watchTogether.joinInstructions' => 'Ұйымдастырушының сеанс кодын енгізіңіз.',
'watchTogether.failedToCreate' => 'Сеансты жасау мүмкін болмады',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.joinInstructions' => 'Ұйымдастырушының сеанс кодын енгізіңіз.',
'watchTogether.failedToCreate' => 'Сеансты жасау мүмкін болмады',
'watchTogether.failedToJoin' => 'Сеансқа қосылу мүмкін болмады', 'watchTogether.failedToJoin' => 'Сеансқа қосылу мүмкін болмады',
'watchTogether.sessionCodeCopied' => 'Сеанс коды көшірілді', 'watchTogether.sessionCodeCopied' => 'Сеанс коды көшірілді',
'watchTogether.relayUnreachable' => 'Реле сервері қолжетімсіз.', 'watchTogether.relayUnreachable' => 'Реле сервері қолжетімсіз.',
+6 -2
View File
@@ -876,6 +876,8 @@ class _Translations$profiles$ko extends Translations$profiles$en {
@override String get noConnectionsHint => '연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.'; @override String get noConnectionsHint => '연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.';
@override String get noConnections => '연결 없음'; @override String get noConnections => '연결 없음';
@override String get plexHomeAccount => 'Plex Home 계정'; @override String get plexHomeAccount => 'Plex Home 계정';
@override String plexAccountChip({required Object account}) => 'Plex 계정: ${account}';
@override String plexAccountUserChip({required Object account, required Object user}) => '${account} 계정의 ${user}';
@override String get connectionDefault => '기본값'; @override String get connectionDefault => '기본값';
@override String connectionAs({required Object displayName}) => '${displayName}(으)로'; @override String connectionAs({required Object displayName}) => '${displayName}(으)로';
@override String get makeDefault => '기본값으로 설정'; @override String get makeDefault => '기본값으로 설정';
@@ -2824,6 +2826,8 @@ extension on TranslationsKo {
'profiles.noConnectionsHint' => '연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.', 'profiles.noConnectionsHint' => '연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.',
'profiles.noConnections' => '연결 없음', 'profiles.noConnections' => '연결 없음',
'profiles.plexHomeAccount' => 'Plex Home 계정', 'profiles.plexHomeAccount' => 'Plex Home 계정',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex 계정: ${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} 계정의 ${user}',
'profiles.connectionDefault' => '기본값', 'profiles.connectionDefault' => '기본값',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName}(으)로', 'profiles.connectionAs' => ({required Object displayName}) => '${displayName}(으)로',
'profiles.makeDefault' => '기본값으로 설정', 'profiles.makeDefault' => '기본값으로 설정',
@@ -3210,10 +3214,10 @@ extension on TranslationsKo {
'watchTogether.failedToJoin' => '세션 참여 실패', 'watchTogether.failedToJoin' => '세션 참여 실패',
'watchTogether.sessionCodeCopied' => '세션 코드가 클립보드에 복사되었습니다', 'watchTogether.sessionCodeCopied' => '세션 코드가 클립보드에 복사되었습니다',
'watchTogether.relayUnreachable' => '릴레이 서버에 연결할 수 없습니다. ISP 차단으로 함께 보기를 사용하지 못할 수 있습니다.', 'watchTogether.relayUnreachable' => '릴레이 서버에 연결할 수 없습니다. ISP 차단으로 함께 보기를 사용하지 못할 수 있습니다.',
'watchTogether.reconnectingToHost' => '호스트에 재연결 중...',
'watchTogether.currentPlayback' => '현재 재생',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => '호스트에 재연결 중...',
'watchTogether.currentPlayback' => '현재 재생',
'watchTogether.joinCurrentPlayback' => '현재 재생 참여', 'watchTogether.joinCurrentPlayback' => '현재 재생 참여',
'watchTogether.joinCurrentPlaybackDescription' => '호스트가 현재 시청 중인 콘텐츠로 이동합니다', 'watchTogether.joinCurrentPlaybackDescription' => '호스트가 현재 시청 중인 콘텐츠로 이동합니다',
'watchTogether.failedToOpenCurrentPlayback' => '현재 재생을 열 수 없습니다', 'watchTogether.failedToOpenCurrentPlayback' => '현재 재생을 열 수 없습니다',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$nb extends Translations$profiles$en {
@override String get noConnectionsHint => 'Ingen tilkoblinger — legg til én for å bruke denne profilen.'; @override String get noConnectionsHint => 'Ingen tilkoblinger — legg til én for å bruke denne profilen.';
@override String get noConnections => 'Ingen tilkoblinger'; @override String get noConnections => 'Ingen tilkoblinger';
@override String get plexHomeAccount => 'Plex Home-konto'; @override String get plexHomeAccount => 'Plex Home-konto';
@override String plexAccountChip({required Object account}) => 'Plex-konto: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} via ${account}';
@override String get connectionDefault => 'Standard'; @override String get connectionDefault => 'Standard';
@override String connectionAs({required Object displayName}) => 'som ${displayName}'; @override String connectionAs({required Object displayName}) => 'som ${displayName}';
@override String get makeDefault => 'Gjør til standard'; @override String get makeDefault => 'Gjør til standard';
@@ -2827,6 +2829,8 @@ extension on TranslationsNb {
'profiles.noConnectionsHint' => 'Ingen tilkoblinger — legg til én for å bruke denne profilen.', 'profiles.noConnectionsHint' => 'Ingen tilkoblinger — legg til én for å bruke denne profilen.',
'profiles.noConnections' => 'Ingen tilkoblinger', 'profiles.noConnections' => 'Ingen tilkoblinger',
'profiles.plexHomeAccount' => 'Plex Home-konto', 'profiles.plexHomeAccount' => 'Plex Home-konto',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex-konto: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} via ${account}',
'profiles.connectionDefault' => 'Standard', 'profiles.connectionDefault' => 'Standard',
'profiles.connectionAs' => ({required Object displayName}) => 'som ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'som ${displayName}',
'profiles.makeDefault' => 'Gjør til standard', 'profiles.makeDefault' => 'Gjør til standard',
@@ -3213,10 +3217,10 @@ extension on TranslationsNb {
'watchTogether.failedToJoin' => 'Kunne ikke bli med i økt', 'watchTogether.failedToJoin' => 'Kunne ikke bli med i økt',
'watchTogether.sessionCodeCopied' => 'Øktkode kopiert til utklippstavle', 'watchTogether.sessionCodeCopied' => 'Øktkode kopiert til utklippstavle',
'watchTogether.relayUnreachable' => 'Reléserveren kan ikke nås. Blokkering hos internettleverandøren kan hindre Se sammen.', 'watchTogether.relayUnreachable' => 'Reléserveren kan ikke nås. Blokkering hos internettleverandøren kan hindre Se sammen.',
'watchTogether.reconnectingToHost' => 'Kobler til verten på nytt...',
'watchTogether.currentPlayback' => 'Gjeldende avspilling',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Kobler til verten på nytt...',
'watchTogether.currentPlayback' => 'Gjeldende avspilling',
'watchTogether.joinCurrentPlayback' => 'Bli med i gjeldende avspilling', 'watchTogether.joinCurrentPlayback' => 'Bli med i gjeldende avspilling',
'watchTogether.joinCurrentPlaybackDescription' => 'Hopp tilbake til det verten ser på nå', 'watchTogether.joinCurrentPlaybackDescription' => 'Hopp tilbake til det verten ser på nå',
'watchTogether.failedToOpenCurrentPlayback' => 'Kunne ikke åpne gjeldende avspilling', 'watchTogether.failedToOpenCurrentPlayback' => 'Kunne ikke åpne gjeldende avspilling',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$nl extends Translations$profiles$en {
@override String get noConnectionsHint => 'Geen verbindingen — voeg er één toe om dit profiel te gebruiken.'; @override String get noConnectionsHint => 'Geen verbindingen — voeg er één toe om dit profiel te gebruiken.';
@override String get noConnections => 'Geen verbindingen'; @override String get noConnections => 'Geen verbindingen';
@override String get plexHomeAccount => 'Plex Home-account'; @override String get plexHomeAccount => 'Plex Home-account';
@override String plexAccountChip({required Object account}) => 'Plex-account: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} via ${account}';
@override String get connectionDefault => 'Standaard'; @override String get connectionDefault => 'Standaard';
@override String connectionAs({required Object displayName}) => 'als ${displayName}'; @override String connectionAs({required Object displayName}) => 'als ${displayName}';
@override String get makeDefault => 'Als standaard instellen'; @override String get makeDefault => 'Als standaard instellen';
@@ -2827,6 +2829,8 @@ extension on TranslationsNl {
'profiles.noConnectionsHint' => 'Geen verbindingen — voeg er één toe om dit profiel te gebruiken.', 'profiles.noConnectionsHint' => 'Geen verbindingen — voeg er één toe om dit profiel te gebruiken.',
'profiles.noConnections' => 'Geen verbindingen', 'profiles.noConnections' => 'Geen verbindingen',
'profiles.plexHomeAccount' => 'Plex Home-account', 'profiles.plexHomeAccount' => 'Plex Home-account',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex-account: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} via ${account}',
'profiles.connectionDefault' => 'Standaard', 'profiles.connectionDefault' => 'Standaard',
'profiles.connectionAs' => ({required Object displayName}) => 'als ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'als ${displayName}',
'profiles.makeDefault' => 'Als standaard instellen', 'profiles.makeDefault' => 'Als standaard instellen',
@@ -3213,10 +3217,10 @@ extension on TranslationsNl {
'watchTogether.failedToJoin' => 'Deelnemen aan sessie mislukt', 'watchTogether.failedToJoin' => 'Deelnemen aan sessie mislukt',
'watchTogether.sessionCodeCopied' => 'Sessiecode naar het klembord gekopieerd', 'watchTogether.sessionCodeCopied' => 'Sessiecode naar het klembord gekopieerd',
'watchTogether.relayUnreachable' => 'De relayserver is onbereikbaar. Een blokkering door je internetprovider kan Samen kijken verhinderen.', 'watchTogether.relayUnreachable' => 'De relayserver is onbereikbaar. Een blokkering door je internetprovider kan Samen kijken verhinderen.',
'watchTogether.reconnectingToHost' => 'Opnieuw verbinden met host...',
'watchTogether.currentPlayback' => 'Wat nu wordt afgespeeld',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Opnieuw verbinden met host...',
'watchTogether.currentPlayback' => 'Wat nu wordt afgespeeld',
'watchTogether.joinCurrentPlayback' => 'Deelnemen aan huidige weergave', 'watchTogether.joinCurrentPlayback' => 'Deelnemen aan huidige weergave',
'watchTogether.joinCurrentPlaybackDescription' => 'Ga terug naar wat de host nu kijkt', 'watchTogether.joinCurrentPlaybackDescription' => 'Ga terug naar wat de host nu kijkt',
'watchTogether.failedToOpenCurrentPlayback' => 'Wat nu wordt afgespeeld kon niet worden geopend', 'watchTogether.failedToOpenCurrentPlayback' => 'Wat nu wordt afgespeeld kon niet worden geopend',
+6 -2
View File
@@ -879,6 +879,8 @@ class _Translations$profiles$pl extends Translations$profiles$en {
@override String get noConnectionsHint => 'Brak połączeń — dodaj jedno, aby używać tego profilu.'; @override String get noConnectionsHint => 'Brak połączeń — dodaj jedno, aby używać tego profilu.';
@override String get noConnections => 'Brak połączeń'; @override String get noConnections => 'Brak połączeń';
@override String get plexHomeAccount => 'Konto Plex Home'; @override String get plexHomeAccount => 'Konto Plex Home';
@override String plexAccountChip({required Object account}) => 'Konto Plex: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} przez ${account}';
@override String get connectionDefault => 'Domyślne'; @override String get connectionDefault => 'Domyślne';
@override String connectionAs({required Object displayName}) => 'jako ${displayName}'; @override String connectionAs({required Object displayName}) => 'jako ${displayName}';
@override String get makeDefault => 'Ustaw jako domyślne'; @override String get makeDefault => 'Ustaw jako domyślne';
@@ -2833,6 +2835,8 @@ extension on TranslationsPl {
'profiles.noConnectionsHint' => 'Brak połączeń — dodaj jedno, aby używać tego profilu.', 'profiles.noConnectionsHint' => 'Brak połączeń — dodaj jedno, aby używać tego profilu.',
'profiles.noConnections' => 'Brak połączeń', 'profiles.noConnections' => 'Brak połączeń',
'profiles.plexHomeAccount' => 'Konto Plex Home', 'profiles.plexHomeAccount' => 'Konto Plex Home',
'profiles.plexAccountChip' => ({required Object account}) => 'Konto Plex: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} przez ${account}',
'profiles.connectionDefault' => 'Domyślne', 'profiles.connectionDefault' => 'Domyślne',
'profiles.connectionAs' => ({required Object displayName}) => 'jako ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'jako ${displayName}',
'profiles.makeDefault' => 'Ustaw jako domyślne', 'profiles.makeDefault' => 'Ustaw jako domyślne',
@@ -3219,10 +3223,10 @@ extension on TranslationsPl {
'watchTogether.failedToJoin' => 'Nie udało się dołączyć do sesji', 'watchTogether.failedToJoin' => 'Nie udało się dołączyć do sesji',
'watchTogether.sessionCodeCopied' => 'Kod sesji skopiowany do schowka', 'watchTogether.sessionCodeCopied' => 'Kod sesji skopiowany do schowka',
'watchTogether.relayUnreachable' => 'Serwer pośredniczący jest nieosiągalny. Blokada operatora internetowego może uniemożliwiać korzystanie z funkcji „Oglądaj razem”.', 'watchTogether.relayUnreachable' => 'Serwer pośredniczący jest nieosiągalny. Blokada operatora internetowego może uniemożliwiać korzystanie z funkcji „Oglądaj razem”.',
'watchTogether.reconnectingToHost' => 'Ponowne łączenie z gospodarzem...',
'watchTogether.currentPlayback' => 'Bieżące odtwarzanie',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Ponowne łączenie z gospodarzem...',
'watchTogether.currentPlayback' => 'Bieżące odtwarzanie',
'watchTogether.joinCurrentPlayback' => 'Dołącz do bieżącego odtwarzania', 'watchTogether.joinCurrentPlayback' => 'Dołącz do bieżącego odtwarzania',
'watchTogether.joinCurrentPlaybackDescription' => 'Wróć do treści oglądanej obecnie przez gospodarza', 'watchTogether.joinCurrentPlaybackDescription' => 'Wróć do treści oglądanej obecnie przez gospodarza',
'watchTogether.failedToOpenCurrentPlayback' => 'Nie udało się otworzyć bieżącego odtwarzania', 'watchTogether.failedToOpenCurrentPlayback' => 'Nie udało się otworzyć bieżącego odtwarzania',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$pt extends Translations$profiles$en {
@override String get noConnectionsHint => 'Sem conexões — adicione uma para usar este perfil.'; @override String get noConnectionsHint => 'Sem conexões — adicione uma para usar este perfil.';
@override String get noConnections => 'Sem conexões'; @override String get noConnections => 'Sem conexões';
@override String get plexHomeAccount => 'Conta Plex Home'; @override String get plexHomeAccount => 'Conta Plex Home';
@override String plexAccountChip({required Object account}) => 'Conta Plex: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} via ${account}';
@override String get connectionDefault => 'Padrão'; @override String get connectionDefault => 'Padrão';
@override String connectionAs({required Object displayName}) => 'como ${displayName}'; @override String connectionAs({required Object displayName}) => 'como ${displayName}';
@override String get makeDefault => 'Definir como padrão'; @override String get makeDefault => 'Definir como padrão';
@@ -2827,6 +2829,8 @@ extension on TranslationsPt {
'profiles.noConnectionsHint' => 'Sem conexões — adicione uma para usar este perfil.', 'profiles.noConnectionsHint' => 'Sem conexões — adicione uma para usar este perfil.',
'profiles.noConnections' => 'Sem conexões', 'profiles.noConnections' => 'Sem conexões',
'profiles.plexHomeAccount' => 'Conta Plex Home', 'profiles.plexHomeAccount' => 'Conta Plex Home',
'profiles.plexAccountChip' => ({required Object account}) => 'Conta Plex: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} via ${account}',
'profiles.connectionDefault' => 'Padrão', 'profiles.connectionDefault' => 'Padrão',
'profiles.connectionAs' => ({required Object displayName}) => 'como ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'como ${displayName}',
'profiles.makeDefault' => 'Definir como padrão', 'profiles.makeDefault' => 'Definir como padrão',
@@ -3213,10 +3217,10 @@ extension on TranslationsPt {
'watchTogether.failedToJoin' => 'Falha ao entrar na sessão', 'watchTogether.failedToJoin' => 'Falha ao entrar na sessão',
'watchTogether.sessionCodeCopied' => 'Código da sessão copiado para a área de transferência', 'watchTogether.sessionCodeCopied' => 'Código da sessão copiado para a área de transferência',
'watchTogether.relayUnreachable' => 'Servidor de retransmissão inacessível. O bloqueio pelo provedor de internet pode impedir o uso do Assistir Juntos.', 'watchTogether.relayUnreachable' => 'Servidor de retransmissão inacessível. O bloqueio pelo provedor de internet pode impedir o uso do Assistir Juntos.',
'watchTogether.reconnectingToHost' => 'Reconectando ao anfitrião...',
'watchTogether.currentPlayback' => 'Reprodução atual',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Reconectando ao anfitrião...',
'watchTogether.currentPlayback' => 'Reprodução atual',
'watchTogether.joinCurrentPlayback' => 'Entrar na reprodução atual', 'watchTogether.joinCurrentPlayback' => 'Entrar na reprodução atual',
'watchTogether.joinCurrentPlaybackDescription' => 'Voltar ao conteúdo que o anfitrião está assistindo agora', 'watchTogether.joinCurrentPlaybackDescription' => 'Voltar ao conteúdo que o anfitrião está assistindo agora',
'watchTogether.failedToOpenCurrentPlayback' => 'Falha ao abrir a reprodução atual', 'watchTogether.failedToOpenCurrentPlayback' => 'Falha ao abrir a reprodução atual',
+6 -2
View File
@@ -879,6 +879,8 @@ class _Translations$profiles$ru extends Translations$profiles$en {
@override String get noConnectionsHint => 'Нет соединений — добавьте одно, чтобы использовать этот профиль.'; @override String get noConnectionsHint => 'Нет соединений — добавьте одно, чтобы использовать этот профиль.';
@override String get noConnections => 'Нет соединений'; @override String get noConnections => 'Нет соединений';
@override String get plexHomeAccount => 'Аккаунт Plex Home'; @override String get plexHomeAccount => 'Аккаунт Plex Home';
@override String plexAccountChip({required Object account}) => 'Аккаунт Plex: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} через ${account}';
@override String get connectionDefault => 'По умолчанию'; @override String get connectionDefault => 'По умолчанию';
@override String connectionAs({required Object displayName}) => 'как ${displayName}'; @override String connectionAs({required Object displayName}) => 'как ${displayName}';
@override String get makeDefault => 'Сделать по умолчанию'; @override String get makeDefault => 'Сделать по умолчанию';
@@ -2833,6 +2835,8 @@ extension on TranslationsRu {
'profiles.noConnectionsHint' => 'Нет соединений — добавьте одно, чтобы использовать этот профиль.', 'profiles.noConnectionsHint' => 'Нет соединений — добавьте одно, чтобы использовать этот профиль.',
'profiles.noConnections' => 'Нет соединений', 'profiles.noConnections' => 'Нет соединений',
'profiles.plexHomeAccount' => 'Аккаунт Plex Home', 'profiles.plexHomeAccount' => 'Аккаунт Plex Home',
'profiles.plexAccountChip' => ({required Object account}) => 'Аккаунт Plex: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} через ${account}',
'profiles.connectionDefault' => 'По умолчанию', 'profiles.connectionDefault' => 'По умолчанию',
'profiles.connectionAs' => ({required Object displayName}) => 'как ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'как ${displayName}',
'profiles.makeDefault' => 'Сделать по умолчанию', 'profiles.makeDefault' => 'Сделать по умолчанию',
@@ -3219,10 +3223,10 @@ extension on TranslationsRu {
'watchTogether.failedToJoin' => 'Не удалось присоединиться к сессии', 'watchTogether.failedToJoin' => 'Не удалось присоединиться к сессии',
'watchTogether.sessionCodeCopied' => 'Код сессии скопирован в буфер обмена', 'watchTogether.sessionCodeCopied' => 'Код сессии скопирован в буфер обмена',
'watchTogether.relayUnreachable' => 'Сервер ретрансляции недоступен. Блокировка интернет-провайдером может помешать совместному просмотру.', 'watchTogether.relayUnreachable' => 'Сервер ретрансляции недоступен. Блокировка интернет-провайдером может помешать совместному просмотру.',
'watchTogether.reconnectingToHost' => 'Повторное подключение к организатору...',
'watchTogether.currentPlayback' => 'Текущее воспроизведение',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Повторное подключение к организатору...',
'watchTogether.currentPlayback' => 'Текущее воспроизведение',
'watchTogether.joinCurrentPlayback' => 'Присоединиться к текущему воспроизведению', 'watchTogether.joinCurrentPlayback' => 'Присоединиться к текущему воспроизведению',
'watchTogether.joinCurrentPlaybackDescription' => 'Вернуться к материалу, который сейчас смотрит организатор', 'watchTogether.joinCurrentPlaybackDescription' => 'Вернуться к материалу, который сейчас смотрит организатор',
'watchTogether.failedToOpenCurrentPlayback' => 'Не удалось открыть текущее воспроизведение', 'watchTogether.failedToOpenCurrentPlayback' => 'Не удалось открыть текущее воспроизведение',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$sv extends Translations$profiles$en {
@override String get noConnectionsHint => 'Inga anslutningar — lägg till en för att använda den här profilen.'; @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 noConnections => 'Inga anslutningar';
@override String get plexHomeAccount => 'Plex Home-konto'; @override String get plexHomeAccount => 'Plex Home-konto';
@override String plexAccountChip({required Object account}) => 'Plex-konto: ${account}';
@override String plexAccountUserChip({required Object user, required Object account}) => '${user} via ${account}';
@override String get connectionDefault => 'Standard'; @override String get connectionDefault => 'Standard';
@override String connectionAs({required Object displayName}) => 'som ${displayName}'; @override String connectionAs({required Object displayName}) => 'som ${displayName}';
@override String get makeDefault => 'Gör till standard'; @override String get makeDefault => 'Gör till standard';
@@ -2827,6 +2829,8 @@ extension on TranslationsSv {
'profiles.noConnectionsHint' => 'Inga anslutningar — lägg till en för att använda den här profilen.', 'profiles.noConnectionsHint' => 'Inga anslutningar — lägg till en för att använda den här profilen.',
'profiles.noConnections' => 'Inga anslutningar', 'profiles.noConnections' => 'Inga anslutningar',
'profiles.plexHomeAccount' => 'Plex Home-konto', 'profiles.plexHomeAccount' => 'Plex Home-konto',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex-konto: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} via ${account}',
'profiles.connectionDefault' => 'Standard', 'profiles.connectionDefault' => 'Standard',
'profiles.connectionAs' => ({required Object displayName}) => 'som ${displayName}', 'profiles.connectionAs' => ({required Object displayName}) => 'som ${displayName}',
'profiles.makeDefault' => 'Gör till standard', 'profiles.makeDefault' => 'Gör till standard',
@@ -3213,10 +3217,10 @@ extension on TranslationsSv {
'watchTogether.failedToJoin' => 'Det gick inte att gå med i sessionen', 'watchTogether.failedToJoin' => 'Det gick inte att gå med i sessionen',
'watchTogether.sessionCodeCopied' => 'Sessionskoden har kopierats till urklipp', 'watchTogether.sessionCodeCopied' => 'Sessionskoden har kopierats till urklipp',
'watchTogether.relayUnreachable' => 'Reläservern kan inte nås. Din internetleverantör kan blockera Titta tillsammans.', 'watchTogether.relayUnreachable' => 'Reläservern kan inte nås. Din internetleverantör kan blockera Titta tillsammans.',
'watchTogether.reconnectingToHost' => 'Återansluter till värden...',
'watchTogether.currentPlayback' => 'Aktuell uppspelning',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Återansluter till värden...',
'watchTogether.currentPlayback' => 'Aktuell uppspelning',
'watchTogether.joinCurrentPlayback' => 'Gå med i aktuell uppspelning', 'watchTogether.joinCurrentPlayback' => 'Gå med i aktuell uppspelning',
'watchTogether.joinCurrentPlaybackDescription' => 'Hoppa tillbaka till det värden tittar på just nu', 'watchTogether.joinCurrentPlaybackDescription' => 'Hoppa tillbaka till det värden tittar på just nu',
'watchTogether.failedToOpenCurrentPlayback' => 'Kunde inte öppna aktuell uppspelning', 'watchTogether.failedToOpenCurrentPlayback' => 'Kunde inte öppna aktuell uppspelning',
+6 -2
View File
@@ -881,6 +881,8 @@ class _Translations$profiles$tr extends Translations$profiles$en {
@override String get noConnectionsHint => 'Bağlantı yok — bu profili kullanmak için bir tane ekleyin.'; @override String get noConnectionsHint => 'Bağlantı yok — bu profili kullanmak için bir tane ekleyin.';
@override String get noConnections => 'Bağlantı yok'; @override String get noConnections => 'Bağlantı yok';
@override String get plexHomeAccount => 'Plex Ev hesabı'; @override String get plexHomeAccount => 'Plex Ev hesabı';
@override String plexAccountChip({required Object account}) => 'Plex hesabı: ${account}';
@override String plexAccountUserChip({required Object account, required Object user}) => '${account} hesabı üzerinden ${user}';
@override String get connectionDefault => 'Varsayılan'; @override String get connectionDefault => 'Varsayılan';
@override String connectionAs({required Object displayName}) => '${displayName} olarak'; @override String connectionAs({required Object displayName}) => '${displayName} olarak';
@override String get makeDefault => 'Varsayılan yap'; @override String get makeDefault => 'Varsayılan yap';
@@ -2842,6 +2844,8 @@ extension on TranslationsTr {
'profiles.noConnectionsHint' => 'Bağlantı yok — bu profili kullanmak için bir tane ekleyin.', 'profiles.noConnectionsHint' => 'Bağlantı yok — bu profili kullanmak için bir tane ekleyin.',
'profiles.noConnections' => 'Bağlantı yok', 'profiles.noConnections' => 'Bağlantı yok',
'profiles.plexHomeAccount' => 'Plex Ev hesabı', 'profiles.plexHomeAccount' => 'Plex Ev hesabı',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex hesabı: ${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} hesabı üzerinden ${user}',
'profiles.connectionDefault' => 'Varsayılan', 'profiles.connectionDefault' => 'Varsayılan',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName} olarak', 'profiles.connectionAs' => ({required Object displayName}) => '${displayName} olarak',
'profiles.makeDefault' => 'Varsayılan yap', 'profiles.makeDefault' => 'Varsayılan yap',
@@ -3224,10 +3228,10 @@ extension on TranslationsTr {
'watchTogether.pasteFromClipboard' => 'Panodan yapıştır', 'watchTogether.pasteFromClipboard' => 'Panodan yapıştır',
'watchTogether.pleaseEnterCode' => 'Lütfen bir oturum kodu girin', 'watchTogether.pleaseEnterCode' => 'Lütfen bir oturum kodu girin',
'watchTogether.codeMustBe5Chars' => 'Oturum kodu 5 karakter olmalıdır', 'watchTogether.codeMustBe5Chars' => 'Oturum kodu 5 karakter olmalıdır',
'watchTogether.joinInstructions' => 'Katılmak için kurucunun oturum kodunu girin.',
'watchTogether.failedToCreate' => 'Oturum oluşturulamadı',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.joinInstructions' => 'Katılmak için kurucunun oturum kodunu girin.',
'watchTogether.failedToCreate' => 'Oturum oluşturulamadı',
'watchTogether.failedToJoin' => 'Oturuma katılınamadı', 'watchTogether.failedToJoin' => 'Oturuma katılınamadı',
'watchTogether.sessionCodeCopied' => 'Oturum kodu panoya kopyalandı', 'watchTogether.sessionCodeCopied' => 'Oturum kodu panoya kopyalandı',
'watchTogether.relayUnreachable' => 'Aktarıcı sunucusuna ulaşılamıyor. İSS engellemesi Birlikte İzle\'yi önleyebilir.', 'watchTogether.relayUnreachable' => 'Aktarıcı sunucusuna ulaşılamıyor. İSS engellemesi Birlikte İzle\'yi önleyebilir.',
+6 -2
View File
@@ -881,6 +881,8 @@ class _Translations$profiles$uz extends Translations$profiles$en {
@override String get noConnectionsHint => 'Ulanishlar yoʻq — ushbu profildan foydalanish uchun ulanish qoʻshing.'; @override String get noConnectionsHint => 'Ulanishlar yoʻq — ushbu profildan foydalanish uchun ulanish qoʻshing.';
@override String get noConnections => 'Ulanishlar yoʻq'; @override String get noConnections => 'Ulanishlar yoʻq';
@override String get plexHomeAccount => 'Plex Home hisobi'; @override String get plexHomeAccount => 'Plex Home hisobi';
@override String plexAccountChip({required Object account}) => 'Plex hisobi: ${account}';
@override String plexAccountUserChip({required Object account, required Object user}) => '${account} hisobi orqali ${user}';
@override String get connectionDefault => 'Standart'; @override String get connectionDefault => 'Standart';
@override String connectionAs({required Object displayName}) => '${displayName} sifatida'; @override String connectionAs({required Object displayName}) => '${displayName} sifatida';
@override String get makeDefault => 'Standart qilish'; @override String get makeDefault => 'Standart qilish';
@@ -2842,6 +2844,8 @@ extension on TranslationsUz {
'profiles.noConnectionsHint' => 'Ulanishlar yoʻq — ushbu profildan foydalanish uchun ulanish qoʻshing.', 'profiles.noConnectionsHint' => 'Ulanishlar yoʻq — ushbu profildan foydalanish uchun ulanish qoʻshing.',
'profiles.noConnections' => 'Ulanishlar yoʻq', 'profiles.noConnections' => 'Ulanishlar yoʻq',
'profiles.plexHomeAccount' => 'Plex Home hisobi', 'profiles.plexHomeAccount' => 'Plex Home hisobi',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex hisobi: ${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} hisobi orqali ${user}',
'profiles.connectionDefault' => 'Standart', 'profiles.connectionDefault' => 'Standart',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName} sifatida', 'profiles.connectionAs' => ({required Object displayName}) => '${displayName} sifatida',
'profiles.makeDefault' => 'Standart qilish', 'profiles.makeDefault' => 'Standart qilish',
@@ -3224,10 +3228,10 @@ extension on TranslationsUz {
'watchTogether.pasteFromClipboard' => 'Xotiradan joylash', 'watchTogether.pasteFromClipboard' => 'Xotiradan joylash',
'watchTogether.pleaseEnterCode' => 'Seans kodini kiriting', 'watchTogether.pleaseEnterCode' => 'Seans kodini kiriting',
'watchTogether.codeMustBe5Chars' => 'Seans kodi 5 ta belgidan iborat boʻlishi kerak', 'watchTogether.codeMustBe5Chars' => 'Seans kodi 5 ta belgidan iborat boʻlishi kerak',
'watchTogether.joinInstructions' => 'Tashkilotchining seans kodini kiriting.',
'watchTogether.failedToCreate' => 'Seansni yaratib boʻlmadi',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.joinInstructions' => 'Tashkilotchining seans kodini kiriting.',
'watchTogether.failedToCreate' => 'Seansni yaratib boʻlmadi',
'watchTogether.failedToJoin' => 'Seansga qoʻshilib boʻlmadi', 'watchTogether.failedToJoin' => 'Seansga qoʻshilib boʻlmadi',
'watchTogether.sessionCodeCopied' => 'Seans kodi nusxalandi', 'watchTogether.sessionCodeCopied' => 'Seans kodi nusxalandi',
'watchTogether.relayUnreachable' => 'Rele serveriga ulanib boʻlmadi.', 'watchTogether.relayUnreachable' => 'Rele serveriga ulanib boʻlmadi.',
+6 -2
View File
@@ -876,6 +876,8 @@ class Translations$profiles$zh extends Translations$profiles$en {
@override String get noConnectionsHint => '没有连接 — 请添加连接以使用此用户资料。'; @override String get noConnectionsHint => '没有连接 — 请添加连接以使用此用户资料。';
@override String get noConnections => '没有连接'; @override String get noConnections => '没有连接';
@override String get plexHomeAccount => 'Plex Home 账户'; @override String get plexHomeAccount => 'Plex Home 账户';
@override String plexAccountChip({required Object account}) => 'Plex 账户:${account}';
@override String plexAccountUserChip({required Object account, required Object user}) => '${account} 账户下的 ${user}';
@override String get connectionDefault => '默认'; @override String get connectionDefault => '默认';
@override String connectionAs({required Object displayName}) => '${displayName} 身份'; @override String connectionAs({required Object displayName}) => '${displayName} 身份';
@override String get makeDefault => '设为默认'; @override String get makeDefault => '设为默认';
@@ -2824,6 +2826,8 @@ extension on TranslationsZh {
'profiles.noConnectionsHint' => '没有连接 — 请添加连接以使用此用户资料。', 'profiles.noConnectionsHint' => '没有连接 — 请添加连接以使用此用户资料。',
'profiles.noConnections' => '没有连接', 'profiles.noConnections' => '没有连接',
'profiles.plexHomeAccount' => 'Plex Home 账户', 'profiles.plexHomeAccount' => 'Plex Home 账户',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex 账户:${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} 账户下的 ${user}',
'profiles.connectionDefault' => '默认', 'profiles.connectionDefault' => '默认',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName} 身份', 'profiles.connectionAs' => ({required Object displayName}) => '${displayName} 身份',
'profiles.makeDefault' => '设为默认', 'profiles.makeDefault' => '设为默认',
@@ -3210,10 +3214,10 @@ extension on TranslationsZh {
'watchTogether.failedToJoin' => '加入会话失败', 'watchTogether.failedToJoin' => '加入会话失败',
'watchTogether.sessionCodeCopied' => '会话代码已复制到剪贴板', 'watchTogether.sessionCodeCopied' => '会话代码已复制到剪贴板',
'watchTogether.relayUnreachable' => '无法访问中继服务器。网络运营商的屏蔽可能导致“一起看”不可用。', 'watchTogether.relayUnreachable' => '无法访问中继服务器。网络运营商的屏蔽可能导致“一起看”不可用。',
'watchTogether.reconnectingToHost' => '正在重新连接到主持人…',
'watchTogether.currentPlayback' => '当前播放',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => '正在重新连接到主持人…',
'watchTogether.currentPlayback' => '当前播放',
'watchTogether.joinCurrentPlayback' => '加入当前播放', 'watchTogether.joinCurrentPlayback' => '加入当前播放',
'watchTogether.joinCurrentPlaybackDescription' => '加入主持人当前正在观看的内容', 'watchTogether.joinCurrentPlaybackDescription' => '加入主持人当前正在观看的内容',
'watchTogether.failedToOpenCurrentPlayback' => '无法打开当前播放', 'watchTogether.failedToOpenCurrentPlayback' => '无法打开当前播放',
+6 -2
View File
@@ -877,6 +877,8 @@ class _Translations$profiles$zh_Hant extends Translations$profiles$zh {
@override String get noConnectionsHint => '無連線 — 請新增一個連線以啟用此設定檔。'; @override String get noConnectionsHint => '無連線 — 請新增一個連線以啟用此設定檔。';
@override String get noConnections => '無連線資訊'; @override String get noConnections => '無連線資訊';
@override String get plexHomeAccount => 'Plex Home 帳戶'; @override String get plexHomeAccount => 'Plex Home 帳戶';
@override String plexAccountChip({required Object account}) => 'Plex 帳戶:${account}';
@override String plexAccountUserChip({required Object account, required Object user}) => '${account} 帳戶下的 ${user}';
@override String get connectionDefault => '預設'; @override String get connectionDefault => '預設';
@override String connectionAs({required Object displayName}) => '${displayName} 身分'; @override String connectionAs({required Object displayName}) => '${displayName} 身分';
@override String get makeDefault => '設為預設值'; @override String get makeDefault => '設為預設值';
@@ -2825,6 +2827,8 @@ extension on TranslationsZhHant {
'profiles.noConnectionsHint' => '無連線 — 請新增一個連線以啟用此設定檔。', 'profiles.noConnectionsHint' => '無連線 — 請新增一個連線以啟用此設定檔。',
'profiles.noConnections' => '無連線資訊', 'profiles.noConnections' => '無連線資訊',
'profiles.plexHomeAccount' => 'Plex Home 帳戶', 'profiles.plexHomeAccount' => 'Plex Home 帳戶',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex 帳戶:${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} 帳戶下的 ${user}',
'profiles.connectionDefault' => '預設', 'profiles.connectionDefault' => '預設',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName} 身分', 'profiles.connectionAs' => ({required Object displayName}) => '${displayName} 身分',
'profiles.makeDefault' => '設為預設值', 'profiles.makeDefault' => '設為預設值',
@@ -3211,10 +3215,10 @@ extension on TranslationsZhHant {
'watchTogether.failedToJoin' => '加入工作階段失敗', 'watchTogether.failedToJoin' => '加入工作階段失敗',
'watchTogether.sessionCodeCopied' => '工作階段代碼已複製到剪貼簿', 'watchTogether.sessionCodeCopied' => '工作階段代碼已複製到剪貼簿',
'watchTogether.relayUnreachable' => '無法連線至中繼伺服器。ISP 封鎖可能會導致「一起看」無法使用。', 'watchTogether.relayUnreachable' => '無法連線至中繼伺服器。ISP 封鎖可能會導致「一起看」無法使用。',
'watchTogether.reconnectingToHost' => '正在重新連線至主持人…',
'watchTogether.currentPlayback' => '目前播放內容',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'watchTogether.reconnectingToHost' => '正在重新連線至主持人…',
'watchTogether.currentPlayback' => '目前播放內容',
'watchTogether.joinCurrentPlayback' => '加入目前播放點', 'watchTogether.joinCurrentPlayback' => '加入目前播放點',
'watchTogether.joinCurrentPlaybackDescription' => '同步至主持人目前的觀看進度', 'watchTogether.joinCurrentPlaybackDescription' => '同步至主持人目前的觀看進度',
'watchTogether.failedToOpenCurrentPlayback' => '無法開啟目前播放點', 'watchTogether.failedToOpenCurrentPlayback' => '無法開啟目前播放點',
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Ta bort denna profil?", "deleteThisProfileTitle": "Ta bort denna profil?",
"deleteThisProfileMessage": "Ta bort ${displayName}. Anslutningar påverkas inte.", "deleteThisProfileMessage": "Ta bort ${displayName}. Anslutningar påverkas inte.",
"active": "Aktiv", "active": "Aktiv",
"viaPlexAccount": "",
"manage": "Hantera", "manage": "Hantera",
"delete": "Ta bort", "delete": "Ta bort",
"signOut": "Logga ut", "signOut": "Logga ut",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Inga anslutningar — lägg till en för att använda den här profilen.", "noConnectionsHint": "Inga anslutningar — lägg till en för att använda den här profilen.",
"noConnections": "Inga anslutningar", "noConnections": "Inga anslutningar",
"plexHomeAccount": "Plex Home-konto", "plexHomeAccount": "Plex Home-konto",
"plexAccountChip": "Plex-konto: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Standard", "connectionDefault": "Standard",
"connectionAs": "som ${displayName}", "connectionAs": "som ${displayName}",
"makeDefault": "Gör till standard", "makeDefault": "Gör till standard",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Bu profil silinsin mi?", "deleteThisProfileTitle": "Bu profil silinsin mi?",
"deleteThisProfileMessage": "${displayName} kişisi kaldırılacak. Bağlantılar etkilenmez.", "deleteThisProfileMessage": "${displayName} kişisi kaldırılacak. Bağlantılar etkilenmez.",
"active": "Aktif", "active": "Aktif",
"viaPlexAccount": "",
"manage": "Yönet", "manage": "Yönet",
"delete": "Sil", "delete": "Sil",
"signOut": "Çıkış Yap", "signOut": "Çıkış Yap",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Bağlantı yok — bu profili kullanmak için bir tane ekleyin.", "noConnectionsHint": "Bağlantı yok — bu profili kullanmak için bir tane ekleyin.",
"noConnections": "Bağlantı yok", "noConnections": "Bağlantı yok",
"plexHomeAccount": "Plex Ev hesabı", "plexHomeAccount": "Plex Ev hesabı",
"plexAccountChip": "Plex hesabı: ${account}",
"plexAccountUserChip": "${account} hesabı üzerinden ${user}",
"connectionDefault": "Varsayılan", "connectionDefault": "Varsayılan",
"connectionAs": "${displayName} olarak", "connectionAs": "${displayName} olarak",
"makeDefault": "Varsayılan yap", "makeDefault": "Varsayılan yap",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Ushbu profil oʻchirilsinmi?", "deleteThisProfileTitle": "Ushbu profil oʻchirilsinmi?",
"deleteThisProfileMessage": "${displayName} oʻchiriladi. Ulanishlarga taʼsir qilmaydi.", "deleteThisProfileMessage": "${displayName} oʻchiriladi. Ulanishlarga taʼsir qilmaydi.",
"active": "Faol", "active": "Faol",
"viaPlexAccount": "",
"manage": "Boshqarish", "manage": "Boshqarish",
"delete": "Oʻchirish", "delete": "Oʻchirish",
"signOut": "Chiqish", "signOut": "Chiqish",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Ulanishlar yoʻq — ushbu profildan foydalanish uchun ulanish qoʻshing.", "noConnectionsHint": "Ulanishlar yoʻq — ushbu profildan foydalanish uchun ulanish qoʻshing.",
"noConnections": "Ulanishlar yoʻq", "noConnections": "Ulanishlar yoʻq",
"plexHomeAccount": "Plex Home hisobi", "plexHomeAccount": "Plex Home hisobi",
"plexAccountChip": "Plex hisobi: ${account}",
"plexAccountUserChip": "${account} hisobi orqali ${user}",
"connectionDefault": "Standart", "connectionDefault": "Standart",
"connectionAs": "${displayName} sifatida", "connectionAs": "${displayName} sifatida",
"makeDefault": "Standart qilish", "makeDefault": "Standart qilish",
+2 -1
View File
@@ -762,7 +762,6 @@
"deleteThisProfileTitle": "刪除此使用者設定檔?", "deleteThisProfileTitle": "刪除此使用者設定檔?",
"deleteThisProfileMessage": "將移除 ${displayName}。連線資訊將不受影響。", "deleteThisProfileMessage": "將移除 ${displayName}。連線資訊將不受影響。",
"active": "使用中", "active": "使用中",
"viaPlexAccount": "",
"manage": "管理", "manage": "管理",
"delete": "刪除", "delete": "刪除",
"signOut": "登出", "signOut": "登出",
@@ -794,6 +793,8 @@
"noConnectionsHint": "無連線 — 請新增一個連線以啟用此設定檔。", "noConnectionsHint": "無連線 — 請新增一個連線以啟用此設定檔。",
"noConnections": "無連線資訊", "noConnections": "無連線資訊",
"plexHomeAccount": "Plex Home 帳戶", "plexHomeAccount": "Plex Home 帳戶",
"plexAccountChip": "Plex 帳戶:${account}",
"plexAccountUserChip": "${account} 帳戶下的 ${user}",
"connectionDefault": "預設", "connectionDefault": "預設",
"connectionAs": "以 ${displayName} 身分", "connectionAs": "以 ${displayName} 身分",
"makeDefault": "設為預設值", "makeDefault": "設為預設值",
+2 -1
View File
@@ -762,7 +762,6 @@
"deleteThisProfileTitle": "删除此用户资料?", "deleteThisProfileTitle": "删除此用户资料?",
"deleteThisProfileMessage": "移除 ${displayName}。连接不会受影响。", "deleteThisProfileMessage": "移除 ${displayName}。连接不会受影响。",
"active": "当前使用", "active": "当前使用",
"viaPlexAccount": "",
"manage": "管理", "manage": "管理",
"delete": "删除", "delete": "删除",
"signOut": "退出登录", "signOut": "退出登录",
@@ -794,6 +793,8 @@
"noConnectionsHint": "没有连接 — 请添加连接以使用此用户资料。", "noConnectionsHint": "没有连接 — 请添加连接以使用此用户资料。",
"noConnections": "没有连接", "noConnections": "没有连接",
"plexHomeAccount": "Plex Home 账户", "plexHomeAccount": "Plex Home 账户",
"plexAccountChip": "Plex 账户:${account}",
"plexAccountUserChip": "${account} 账户下的 ${user}",
"connectionDefault": "默认", "connectionDefault": "默认",
"connectionAs": "以 ${displayName} 身份", "connectionAs": "以 ${displayName} 身份",
"makeDefault": "设为默认", "makeDefault": "设为默认",
+9
View File
@@ -29,11 +29,18 @@ class ProfilesView {
/// Picture URL per profile id; null means render initials. See [resolveProfileAvatarUrls]. /// Picture URL per profile id; null means render initials. See [resolveProfileAvatarUrls].
final Map<String, String?> avatarUrlByProfile; final Map<String, String?> avatarUrlByProfile;
/// Live Plex Home users per account connection id. Chip/label UI needs it
/// to turn a [ProfileConnection.userIdentifier] uuid into the Home user's
/// name; without it a borrowed Plex connection can only name the account
/// owner, which reads as the wrong identity.
final Map<String, List<PlexHomeUser>> plexHomeByConnectionId;
const ProfilesView({ const ProfilesView({
required this.profiles, required this.profiles,
required this.connectionsByProfile, required this.connectionsByProfile,
required this.connectionsById, required this.connectionsById,
required this.avatarUrlByProfile, required this.avatarUrlByProfile,
required this.plexHomeByConnectionId,
}); });
static const empty = ProfilesView( static const empty = ProfilesView(
@@ -41,6 +48,7 @@ class ProfilesView {
connectionsByProfile: {}, connectionsByProfile: {},
connectionsById: {}, connectionsById: {},
avatarUrlByProfile: {}, avatarUrlByProfile: {},
plexHomeByConnectionId: {},
); );
} }
@@ -108,6 +116,7 @@ ProfilesView _build({
connectionsById: connectionsById, connectionsById: connectionsById,
plexHomeByConnectionId: homes, plexHomeByConnectionId: homes,
), ),
plexHomeByConnectionId: homes,
); );
} }
+47 -13
View File
@@ -327,21 +327,14 @@ class _ProfileSwitchScreenState extends State<ProfileSwitchScreen> with MountedS
List<_ChipData> _chipsFor(Profile profile, ProfilesView view) { List<_ChipData> _chipsFor(Profile profile, ProfilesView view) {
final chips = <_ChipData>[]; final chips = <_ChipData>[];
// Plex Home profiles implicitly own their parent Plex connection (no // Plex Home profiles implicitly own their parent Plex connection (no
// join-table row), so prepend it before any borrowed connections. // join-table row), so prepend it before any borrowed connections. The
// profile *is* the Home user there, so its own name identifies the user
// half of the label.
if (profile.isPlexHome) { if (profile.isPlexHome) {
final parentId = profile.parentConnectionId; final parentId = profile.parentConnectionId;
if (parentId != null) { if (parentId != null) {
final conn = view.connectionsById[parentId]; final conn = view.connectionsById[parentId];
if (conn != null) { if (conn != null) chips.add(_chipFor(conn, user: profile.displayName));
chips.add(
_ChipData(
backend: conn.backend,
label: conn is PlexAccountConnection
? t.profiles.viaPlexAccount(name: conn.accountLabel)
: conn.displayLabel,
),
);
}
} }
} }
final pcs = visibleProfileConnections( final pcs = visibleProfileConnections(
@@ -350,11 +343,47 @@ class _ProfileSwitchScreenState extends State<ProfileSwitchScreen> with MountedS
); );
for (final pc in pcs) { for (final pc in pcs) {
final conn = view.connectionsById[pc.connectionId]; final conn = view.connectionsById[pc.connectionId];
if (conn != null) chips.add(_ChipData(backend: conn.backend, label: conn.displayLabel)); if (conn != null) chips.add(_chipFor(conn, user: _plexHomeUserName(view, conn, pc.userIdentifier)));
} }
return chips; return chips;
} }
/// A Plex account connection labels itself with the account owner's name,
/// which under a profile tile reads as the profile being signed in as that
/// person — wrong for a Plex Home user, and wrong again for a local profile
/// that borrowed a Home user out of someone else's account.
///
/// Both halves of that relation go through a single translated string so a
/// locale can order them itself; several put the account first (`ja`, `ko`,
/// `tr`, `zh`). [user] is null only when the Home cache cannot resolve the
/// connection's uuid yet, which falls back to naming the account alone.
_ChipData _chipFor(Connection conn, {required String? user}) {
return _ChipData(
backend: conn.backend,
label: switch (conn) {
PlexAccountConnection(:final accountLabel) when user != null => t.profiles.plexAccountUserChip(
user: user,
account: accountLabel,
),
PlexAccountConnection(:final accountLabel) => t.profiles.plexAccountChip(account: accountLabel),
_ => conn.displayLabel,
},
);
}
/// Home user behind a borrowed Plex connection, or null when the live cache
/// has no match for [userIdentifier] (not loaded yet, or the row predates
/// the account's current Home membership).
String? _plexHomeUserName(ProfilesView view, Connection conn, String userIdentifier) {
if (conn is! PlexAccountConnection || userIdentifier.isEmpty) return null;
final users = view.plexHomeByConnectionId[conn.id];
if (users == null) return null;
for (final user in users) {
if (user.uuid == userIdentifier) return user.displayName;
}
return null;
}
Future<void> _addLocalProfile() async { Future<void> _addLocalProfile() async {
await Navigator.of(context).push<bool>(MaterialPageRoute(builder: (_) => const AddLocalProfileScreen())); await Navigator.of(context).push<bool>(MaterialPageRoute(builder: (_) => const AddLocalProfileScreen()));
} }
@@ -566,7 +595,12 @@ class _ConnectionChips extends StatelessWidget {
children: [ children: [
BackendBadge(backend: c.backend, size: 12), BackendBadge(backend: c.backend, size: 12),
const SizedBox(width: 4), const SizedBox(width: 4),
Text(c.label, style: theme.textTheme.labelSmall), // Account labels are often an email address, and a chip in a
// Wrap gets unbounded main-axis space — without this the row
// overflows the tile instead of ellipsizing.
Flexible(
child: Text(c.label, style: theme.textTheme.labelSmall, overflow: .ellipsis),
),
], ],
), ),
), ),
@@ -10,6 +10,7 @@ import 'package:plezy/database/app_database.dart';
import 'package:plezy/focus/focusable_wrapper.dart'; import 'package:plezy/focus/focusable_wrapper.dart';
import 'package:plezy/focus/input_mode_tracker.dart'; import 'package:plezy/focus/input_mode_tracker.dart';
import 'package:plezy/i18n/strings.g.dart'; import 'package:plezy/i18n/strings.g.dart';
import 'package:plezy/models/plex/plex_home_user.dart';
import 'package:plezy/profiles/active_profile_provider.dart'; import 'package:plezy/profiles/active_profile_provider.dart';
import 'package:plezy/profiles/plex_home_service.dart'; import 'package:plezy/profiles/plex_home_service.dart';
import 'package:plezy/profiles/profile.dart'; import 'package:plezy/profiles/profile.dart';
@@ -369,70 +370,211 @@ void main() {
await tester.pump(); await tester.pump();
}); });
testWidgets('labels a Plex Home parent connection as an account, not as the profile', (tester) async { testWidgets('names the Plex Home user and the account together, not the account alone', (tester) async {
final db = AppDatabase.forTesting(NativeDatabase.memory()); await _pumpPicker(
final profile = Profile.plexHome( tester,
id: 'home-alice', profiles: [
displayName: 'Alice', Profile.plexHome(
parentConnectionId: 'plex-account', id: 'home-alice',
plexHomeUserUuid: 'alice-uuid', displayName: 'Alice',
createdAt: DateTime(2026, 1, 1), parentConnectionId: 'plex-account',
); plexHomeUserUuid: 'alice-uuid',
final profiles = _FakeProfileRegistry(db, [profile]); createdAt: DateTime(2026, 1, 1),
final connections = _FakeConnectionRegistry(db, [
PlexAccountConnection(
id: 'plex-account',
accountToken: 'token',
clientIdentifier: 'client',
accountLabel: 'Bob',
createdAt: DateTime(2026, 1, 1),
),
]);
final profileConnections = _FakeProfileConnectionRegistry(db);
final storage = await StorageService.getInstance();
final plexHome = PlexHomeService(
connections: connections,
profileConnections: profileConnections,
storage: storage,
plexHomeUserFetcher: (_) async => const [],
);
final activeProfile = ActiveProfileProvider(
registry: profiles,
plexHome: plexHome,
connections: connections,
profileConnections: profileConnections,
storage: storage,
);
addTearDown(() async {
activeProfile.dispose();
await plexHome.dispose();
await db.close();
});
await tester.pumpWidget(
TranslationProvider(
child: MultiProvider(
providers: [
Provider<StorageService>.value(value: storage),
Provider<ProfileRegistry>.value(value: profiles),
Provider<ProfileConnectionRegistry>.value(value: profileConnections),
Provider<ConnectionRegistry>.value(value: connections),
Provider<PlexHomeService>.value(value: plexHome),
ChangeNotifierProvider<ActiveProfileProvider>.value(value: activeProfile),
],
child: MaterialApp(theme: monoTheme(dark: true), home: const ProfileSwitchScreen()),
), ),
), ],
connections: [_plexAccount('Bob')],
); );
await tester.pumpAndSettle();
expect(find.text('Alice'), findsOneWidget); expect(find.text('Alice'), findsOneWidget);
expect(find.text(t.profiles.viaPlexAccount(name: 'Bob')), findsOneWidget); expect(
_relationChip(tester, tile: _tileFor('Alice'), first: 'Alice', second: 'Bob'),
t.profiles.plexAccountUserChip(user: 'Alice', account: 'Bob'),
);
expect(find.text('Bob'), findsNothing, reason: 'the owner name alone reads as being signed in as the owner');
await tester.pumpWidget(const SizedBox.shrink());
await tester.pump();
});
testWidgets('names the borrowed Home user and the account it came from', (tester) async {
await _pumpPicker(
tester,
profiles: [Profile.local(id: 'local-alice', displayName: 'Alice', createdAt: DateTime(2026, 1, 1))],
connections: [_plexAccount('Bob')],
profileConnections: const [
ProfileConnection(
profileId: 'local-alice',
connectionId: 'plex-account',
userToken: 'borrowed-token',
userIdentifier: 'charlie-uuid',
),
],
homeUsers: [_homeUser('charlie-uuid', 'Charlie')],
);
expect(
_relationChip(tester, tile: _tileFor('Alice'), first: 'Charlie', second: 'Bob'),
t.profiles.plexAccountUserChip(user: 'Charlie', account: 'Bob'),
);
await tester.pumpWidget(const SizedBox.shrink());
await tester.pump();
});
testWidgets('falls back to naming the account when the Home user cannot be resolved', (tester) async {
await _pumpPicker(
tester,
profiles: [Profile.local(id: 'local-alice', displayName: 'Alice', createdAt: DateTime(2026, 1, 1))],
connections: [_plexAccount('Bob')],
profileConnections: const [
ProfileConnection(
profileId: 'local-alice',
connectionId: 'plex-account',
userToken: 'borrowed-token',
userIdentifier: 'departed-uuid',
),
],
);
expect(find.text(t.profiles.plexAccountChip(account: 'Bob')), findsOneWidget);
expect(find.text('Bob'), findsNothing); expect(find.text('Bob'), findsNothing);
await tester.pumpWidget(const SizedBox.shrink()); await tester.pumpWidget(const SizedBox.shrink());
await tester.pump(); await tester.pump();
}); });
testWidgets('lets a locale put the account before the user', (tester) async {
// ja renders the relation as `${account}経由の${user}`. Splitting the two
// halves across widgets — or across two translated fragments — would pin
// them to English order; this is the assertion that keeps them in one
// translated string.
// `runAsync`: a deferred locale library loads on the real event loop,
// which the widget tester's fake async would otherwise never pump.
await tester.runAsync(() => LocaleSettings.setLocale(AppLocale.ja));
addTearDown(() => LocaleSettings.setLocaleSync(AppLocale.en));
await _pumpPicker(
tester,
profiles: [
Profile.plexHome(
id: 'home-alice',
displayName: 'Alice',
parentConnectionId: 'plex-account',
plexHomeUserUuid: 'alice-uuid',
createdAt: DateTime(2026, 1, 1),
),
],
connections: [_plexAccount('Bob')],
);
final label = _relationChip(tester, tile: _tileFor('Alice'), first: 'Alice', second: 'Bob');
expect(label, t.profiles.plexAccountUserChip(user: 'Alice', account: 'Bob'));
expect(label.indexOf('Bob'), lessThan(label.indexOf('Alice')));
await tester.pumpWidget(const SizedBox.shrink());
await tester.pump();
});
}
/// Boots the picker over a fixed profile/connection set. [homeUsers] seeds the
/// live Plex Home cache, which is what turns a borrowed connection's
/// `userIdentifier` uuid into a name.
Future<void> _pumpPicker(
WidgetTester tester, {
required List<Profile> profiles,
required List<Connection> connections,
List<ProfileConnection> profileConnections = const [],
List<PlexHomeUser> homeUsers = const [],
}) async {
final db = AppDatabase.forTesting(NativeDatabase.memory());
final profileRegistry = _FakeProfileRegistry(db, profiles);
final connectionRegistry = _FakeConnectionRegistry(db, connections);
final profileConnectionRegistry = _FakeProfileConnectionRegistry(db, profileConnections);
final storage = await StorageService.getInstance();
final plexHome = PlexHomeService(
connections: connectionRegistry,
profileConnections: profileConnectionRegistry,
storage: storage,
plexHomeUserFetcher: (_) async => homeUsers,
);
final activeProfile = ActiveProfileProvider(
registry: profileRegistry,
plexHome: plexHome,
connections: connectionRegistry,
profileConnections: profileConnectionRegistry,
storage: storage,
);
addTearDown(() async {
activeProfile.dispose();
await plexHome.dispose();
await db.close();
});
if (homeUsers.isNotEmpty) {
for (final connection in connections.whereType<PlexAccountConnection>()) {
expect(await plexHome.refresh(connection), isTrue);
}
}
await tester.pumpWidget(
TranslationProvider(
child: MultiProvider(
providers: [
Provider<StorageService>.value(value: storage),
Provider<ProfileRegistry>.value(value: profileRegistry),
Provider<ProfileConnectionRegistry>.value(value: profileConnectionRegistry),
Provider<ConnectionRegistry>.value(value: connectionRegistry),
Provider<PlexHomeService>.value(value: plexHome),
ChangeNotifierProvider<ActiveProfileProvider>.value(value: activeProfile),
],
child: MaterialApp(theme: monoTheme(dark: true), home: const ProfileSwitchScreen()),
),
),
);
await tester.pumpAndSettle();
}
PlexAccountConnection _plexAccount(String accountLabel) {
return PlexAccountConnection(
id: 'plex-account',
accountToken: 'token',
clientIdentifier: 'client',
accountLabel: accountLabel,
createdAt: DateTime(2026, 1, 1),
);
}
PlexHomeUser _homeUser(String uuid, String title) {
return PlexHomeUser(
id: 1,
uuid: uuid,
title: title,
thumb: '',
hasPassword: false,
restricted: false,
updatedAt: null,
admin: false,
guest: false,
protected: false,
);
}
Finder _tileFor(String displayName) {
return find.ancestor(of: find.text(displayName), matching: find.byType(FocusableWrapper));
}
/// The single chip label inside [tile] that names both [first] and [second].
///
/// Asserting that exactly one text node carries both halves is the point: two
/// nodes, or one node plus a neighbouring label, would mean the relation is
/// assembled in Dart and no locale could reorder it.
String _relationChip(WidgetTester tester, {required Finder tile, required String first, required String second}) {
final labels = tester
.widgetList<Text>(find.descendant(of: tile, matching: find.byType(Text)))
.map((text) => text.data)
.whereType<String>()
.where((label) => label.contains(first) && label.contains(second))
.toList();
expect(labels, hasLength(1), reason: 'both halves must render as one translated string');
return labels.single;
} }
/// Tile labels in painted order. Only the two names the reorder tests seed are /// Tile labels in painted order. Only the two names the reorder tests seed are
@@ -509,6 +651,9 @@ class _FakeConnectionRegistry extends ConnectionRegistry {
@override @override
Future<List<Connection>> list() async => _connections; Future<List<Connection>> list() async => _connections;
@override
Future<Connection?> get(String id) async => _connections.where((conn) => conn.id == id).firstOrNull;
} }
class _FakeProfileConnectionRegistry extends ProfileConnectionRegistry { class _FakeProfileConnectionRegistry extends ProfileConnectionRegistry {