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?",
"deleteThisProfileMessage": "${displayName} silinəcək. Qoşulmalar təsirlənmir.",
"active": "Aktiv",
"viaPlexAccount": "",
"manage": "İdarə et",
"delete": "Sil",
"signOut": "Çıxış et",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Qoşulma yoxdur — bu profili istifadə etmək üçün birini əlavə edin.",
"noConnections": "Qoşulma yoxdur",
"plexHomeAccount": "Plex Ev hesabı",
"plexAccountChip": "Plex hesabı: ${account}",
"plexAccountUserChip": "${account} hesabı vasitəsilə ${user}",
"connectionDefault": "Defolt",
"connectionAs": "${displayName} olaraq",
"makeDefault": "Defolt et",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Да се изтрие ли този профил?",
"deleteThisProfileMessage": "Премахване на ${displayName}. Връзките не се засягат.",
"active": "Активен",
"viaPlexAccount": "",
"manage": "Управление",
"delete": "Изтрий",
"signOut": "Изход",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Няма връзки — добавете такава, за да използвате този профил.",
"noConnections": "Няма връзки",
"plexHomeAccount": "Plex Home акаунт",
"plexAccountChip": "Plex акаунт: ${account}",
"plexAccountUserChip": "${user} през ${account}",
"connectionDefault": "По подразбиране",
"connectionAs": "като ${displayName}",
"makeDefault": "Направи по подразбиране",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Slet denne profil?",
"deleteThisProfileMessage": "Fjern ${displayName}. Forbindelser påvirkes ikke.",
"active": "Aktiv",
"viaPlexAccount": "",
"manage": "Administrer",
"delete": "Slet",
"signOut": "Log ud",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Ingen forbindelser — tilføj en for at bruge denne profil.",
"noConnections": "Ingen forbindelser",
"plexHomeAccount": "Plex Home-konto",
"plexAccountChip": "Plex-konto: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Standard",
"connectionAs": "som ${displayName}",
"makeDefault": "Gør til standard",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Dieses Profil löschen?",
"deleteThisProfileMessage": "${displayName} entfernen. Verbindungen bleiben unberührt.",
"active": "Aktiv",
"viaPlexAccount": "",
"manage": "Verwalten",
"delete": "Löschen",
"signOut": "Abmelden",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Keine Verbindungen — füge eine hinzu, um dieses Profil zu nutzen.",
"noConnections": "Keine Verbindungen",
"plexHomeAccount": "Plex Home-Konto",
"plexAccountChip": "Plex-Konto: ${account}",
"plexAccountUserChip": "${user} über ${account}",
"connectionDefault": "Standard",
"connectionAs": "als ${displayName}",
"makeDefault": "Als Standard festlegen",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Delete this profile?",
"deleteThisProfileMessage": "Remove ${displayName}. Connections aren't affected.",
"active": "Active",
"viaPlexAccount": "via ${name}",
"manage": "Manage",
"delete": "Delete",
"signOut": "Sign out",
@@ -795,6 +794,8 @@
"noConnectionsHint": "No connections — add one to use this profile.",
"noConnections": "No connections",
"plexHomeAccount": "Plex Home account",
"plexAccountChip": "Plex account: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Default",
"connectionAs": "as ${displayName}",
"makeDefault": "Make default",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "¿Eliminar este perfil?",
"deleteThisProfileMessage": "Eliminar ${displayName}. Las conexiones no se verán afectadas.",
"active": "Activo",
"viaPlexAccount": "",
"manage": "Administrar",
"delete": "Eliminar",
"signOut": "Cerrar sesión",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Sin conexiones — añade una para usar este perfil.",
"noConnections": "Sin conexiones",
"plexHomeAccount": "Cuenta Plex Home",
"plexAccountChip": "Cuenta Plex: ${account}",
"plexAccountUserChip": "${user} a través de ${account}",
"connectionDefault": "Predeterminada",
"connectionAs": "como ${displayName}",
"makeDefault": "Establecer como predeterminada",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Supprimer ce profil ?",
"deleteThisProfileMessage": "Supprimer ${displayName}. Les connexions ne sont pas affectées.",
"active": "Actif",
"viaPlexAccount": "",
"manage": "Gérer",
"delete": "Supprimer",
"signOut": "Se déconnecter",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Aucune connexion — ajoutez-en une pour utiliser ce profil.",
"noConnections": "Aucune connexion",
"plexHomeAccount": "Compte Plex Home",
"plexAccountChip": "Compte Plex : ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Par défaut",
"connectionAs": "en tant que ${displayName}",
"makeDefault": "Définir par défaut",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Törlöd ezt a profilt?",
"deleteThisProfileMessage": "${displayName} eltávolítása. A kapcsolatokat nem érinti.",
"active": "Aktív",
"viaPlexAccount": "",
"manage": "Kezelés",
"delete": "Törlés",
"signOut": "Kijelentkezés",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Nincsenek kapcsolatok — adj hozzá egyet a profil használatához.",
"noConnections": "Nincsenek kapcsolatok",
"plexHomeAccount": "Plex Home-fiók",
"plexAccountChip": "Plex-fiók: ${account}",
"plexAccountUserChip": "${account} fiókján keresztül: ${user}",
"connectionDefault": "Alapértelmezett",
"connectionAs": "mint ${displayName}",
"makeDefault": "Beállítás alapértelmezettként",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Eliminare questo profilo?",
"deleteThisProfileMessage": "Rimuovi ${displayName}. Le connessioni resteranno invariate.",
"active": "Attivo",
"viaPlexAccount": "",
"manage": "Gestisci",
"delete": "Elimina",
"signOut": "Esci",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Nessuna connessione — aggiungine una per usare questo profilo.",
"noConnections": "Nessuna connessione",
"plexHomeAccount": "Account Plex Home",
"plexAccountChip": "Account Plex: ${account}",
"plexAccountUserChip": "${user} tramite ${account}",
"connectionDefault": "Predefinita",
"connectionAs": "come ${displayName}",
"makeDefault": "Imposta come predefinita",
+2 -1
View File
@@ -762,7 +762,6 @@
"deleteThisProfileTitle": "このプロフィールを削除しますか?",
"deleteThisProfileMessage": "${displayName}を削除します。接続には影響しません。",
"active": "アクティブ",
"viaPlexAccount": "",
"manage": "管理",
"delete": "削除",
"signOut": "サインアウト",
@@ -794,6 +793,8 @@
"noConnectionsHint": "接続がありません — このプロフィールを使うには接続を追加してください。",
"noConnections": "接続がありません",
"plexHomeAccount": "Plex Homeアカウント",
"plexAccountChip": "Plexアカウント: ${account}",
"plexAccountUserChip": "${account}経由の${user}",
"connectionDefault": "デフォルト",
"connectionAs": "${displayName}として",
"makeDefault": "デフォルトに設定",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Осы профиль өшірілсін бе?",
"deleteThisProfileMessage": "${displayName} өшіріледі. Қосылымдарға әсер етпейді.",
"active": "Белсенді",
"viaPlexAccount": "",
"manage": "Басқару",
"delete": "Өшіру",
"signOut": "Шығу",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Қосылымдар жоқ — бұл профильді пайдалану үшін қосылым қосыңыз.",
"noConnections": "Қосылымдар жоқ",
"plexHomeAccount": "Plex Home тіркелгісі",
"plexAccountChip": "Plex тіркелгісі: ${account}",
"plexAccountUserChip": "${account} арқылы ${user}",
"connectionDefault": "Әдепкі",
"connectionAs": "${displayName} ретінде",
"makeDefault": "Әдепкі ету",
+2 -1
View File
@@ -762,7 +762,6 @@
"deleteThisProfileTitle": "이 프로필을 삭제하시겠습니까?",
"deleteThisProfileMessage": "${displayName}을(를) 제거합니다. 연결에는 영향이 없습니다.",
"active": "활성",
"viaPlexAccount": "",
"manage": "관리",
"delete": "삭제",
"signOut": "로그아웃",
@@ -794,6 +793,8 @@
"noConnectionsHint": "연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.",
"noConnections": "연결 없음",
"plexHomeAccount": "Plex Home 계정",
"plexAccountChip": "Plex 계정: ${account}",
"plexAccountUserChip": "${account} 계정의 ${user}",
"connectionDefault": "기본값",
"connectionAs": "${displayName}(으)로",
"makeDefault": "기본값으로 설정",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Slett denne profilen?",
"deleteThisProfileMessage": "Fjern ${displayName}. Tilkoblinger påvirkes ikke.",
"active": "Aktiv",
"viaPlexAccount": "",
"manage": "Administrer",
"delete": "Slett",
"signOut": "Logg ut",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Ingen tilkoblinger — legg til én for å bruke denne profilen.",
"noConnections": "Ingen tilkoblinger",
"plexHomeAccount": "Plex Home-konto",
"plexAccountChip": "Plex-konto: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Standard",
"connectionAs": "som ${displayName}",
"makeDefault": "Gjør til standard",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Dit profiel verwijderen?",
"deleteThisProfileMessage": "Verwijder ${displayName}. Verbindingen blijven ongewijzigd.",
"active": "Actief",
"viaPlexAccount": "",
"manage": "Beheren",
"delete": "Verwijderen",
"signOut": "Afmelden",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Geen verbindingen — voeg er één toe om dit profiel te gebruiken.",
"noConnections": "Geen verbindingen",
"plexHomeAccount": "Plex Home-account",
"plexAccountChip": "Plex-account: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Standaard",
"connectionAs": "als ${displayName}",
"makeDefault": "Als standaard instellen",
+2 -1
View File
@@ -765,7 +765,6 @@
"deleteThisProfileTitle": "Usunąć ten profil?",
"deleteThisProfileMessage": "Usuń ${displayName}. Połączenia nie zostaną zmienione.",
"active": "Aktywny",
"viaPlexAccount": "",
"manage": "Zarządzaj",
"delete": "Usuń",
"signOut": "Wyloguj się",
@@ -797,6 +796,8 @@
"noConnectionsHint": "Brak połączeń — dodaj jedno, aby używać tego profilu.",
"noConnections": "Brak połączeń",
"plexHomeAccount": "Konto Plex Home",
"plexAccountChip": "Konto Plex: ${account}",
"plexAccountUserChip": "${user} przez ${account}",
"connectionDefault": "Domyślne",
"connectionAs": "jako ${displayName}",
"makeDefault": "Ustaw jako domyślne",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Excluir este perfil?",
"deleteThisProfileMessage": "Remover ${displayName}. As conexões não serão afetadas.",
"active": "Ativo",
"viaPlexAccount": "",
"manage": "Gerenciar",
"delete": "Excluir",
"signOut": "Sair",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Sem conexões — adicione uma para usar este perfil.",
"noConnections": "Sem conexões",
"plexHomeAccount": "Conta Plex Home",
"plexAccountChip": "Conta Plex: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Padrão",
"connectionAs": "como ${displayName}",
"makeDefault": "Definir como padrão",
+2 -1
View File
@@ -765,7 +765,6 @@
"deleteThisProfileTitle": "Удалить этот профиль?",
"deleteThisProfileMessage": "Удалить ${displayName}. Подключения не изменятся.",
"active": "Активный",
"viaPlexAccount": "",
"manage": "Управление",
"delete": "Удалить",
"signOut": "Выйти",
@@ -797,6 +796,8 @@
"noConnectionsHint": "Нет соединений — добавьте одно, чтобы использовать этот профиль.",
"noConnections": "Нет соединений",
"plexHomeAccount": "Аккаунт Plex Home",
"plexAccountChip": "Аккаунт Plex: ${account}",
"plexAccountUserChip": "${user} через ${account}",
"connectionDefault": "По умолчанию",
"connectionAs": "как ${displayName}",
"makeDefault": "Сделать по умолчанию",
+1 -1
View File
@@ -4,7 +4,7 @@
/// To regenerate, run: `dart run slang`
///
/// Locales: 22
/// Strings: 32738 (1488 per locale)
/// Strings: 32781 (1490 per locale)
// coverage:ignore-file
// 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 noConnections => 'Qoşulma yoxdur';
@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 connectionAs({required Object displayName}) => '${displayName} olaraq';
@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.noConnections' => 'Qoşulma yoxdur',
'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.connectionAs' => ({required Object displayName}) => '${displayName} olaraq',
'profiles.makeDefault' => 'Defolt et',
@@ -3224,10 +3228,10 @@ extension on TranslationsAz {
'watchTogether.pasteFromClipboard' => 'Buferdən yapışdır',
'watchTogether.pleaseEnterCode' => 'Lütfən seans kodunu daxil edin',
'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,
} ?? 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.sessionCodeCopied' => 'Seans kodu buferə kopyalandı',
'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 noConnections => 'Няма връзки';
@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 connectionAs({required Object displayName}) => 'като ${displayName}';
@override String get makeDefault => 'Направи по подразбиране';
@@ -2827,6 +2829,8 @@ extension on TranslationsBg {
'profiles.noConnectionsHint' => 'Няма връзки — добавете такава, за да използвате този профил.',
'profiles.noConnections' => 'Няма връзки',
'profiles.plexHomeAccount' => 'Plex Home акаунт',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex акаунт: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} през ${account}',
'profiles.connectionDefault' => 'По подразбиране',
'profiles.connectionAs' => ({required Object displayName}) => 'като ${displayName}',
'profiles.makeDefault' => 'Направи по подразбиране',
@@ -3213,10 +3217,10 @@ extension on TranslationsBg {
'watchTogether.failedToJoin' => 'Неуспешно присъединяване към сесия',
'watchTogether.sessionCodeCopied' => 'Кодът на сесията е копиран в клипборда',
'watchTogether.relayUnreachable' => 'Релейният сървър е недостъпен. Възможно е интернет доставчикът да блокира гледането заедно.',
'watchTogether.reconnectingToHost' => 'Повторно свързване с организатора...',
'watchTogether.currentPlayback' => 'Текущо възпроизвеждане',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Повторно свързване с организатора...',
'watchTogether.currentPlayback' => 'Текущо възпроизвеждане',
'watchTogether.joinCurrentPlayback' => 'Присъедини се към текущото възпроизвеждане',
'watchTogether.joinCurrentPlaybackDescription' => 'Върнете се към това, което организаторът гледа в момента',
'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 noConnections => 'Ingen forbindelser';
@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 connectionAs({required Object displayName}) => 'som ${displayName}';
@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.noConnections' => 'Ingen forbindelser',
'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.connectionAs' => ({required Object displayName}) => 'som ${displayName}',
'profiles.makeDefault' => 'Gør til standard',
@@ -3213,10 +3217,10 @@ extension on TranslationsDa {
'watchTogether.failedToJoin' => 'Kunne ikke deltage i session',
'watchTogether.sessionCodeCopied' => 'Sessionskode kopieret til udklipsholder',
'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,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Genopretter forbindelse til vært...',
'watchTogether.currentPlayback' => 'Nuværende afspilning',
'watchTogether.joinCurrentPlayback' => 'Deltag i nuværende afspilning',
'watchTogether.joinCurrentPlaybackDescription' => 'Hop tilbage til det værten ser nu',
'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 noConnections => 'Keine Verbindungen';
@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 connectionAs({required Object displayName}) => 'als ${displayName}';
@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.noConnections' => 'Keine Verbindungen',
'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.connectionAs' => ({required Object displayName}) => 'als ${displayName}',
'profiles.makeDefault' => 'Als Standard festlegen',
@@ -3213,10 +3217,10 @@ extension on TranslationsDe {
'watchTogether.failedToJoin' => 'Beitritt zur Sitzung fehlgeschlagen',
'watchTogether.sessionCodeCopied' => 'Sitzungscode in Zwischenablage kopiert',
'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,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Verbindung zum Host wird wiederhergestellt …',
'watchTogether.currentPlayback' => 'Aktuelle Wiedergabe',
'watchTogether.joinCurrentPlayback' => 'Aktueller Wiedergabe beitreten',
'watchTogether.joinCurrentPlaybackDescription' => 'Zu dem Inhalt wechseln, den der Host gerade ansieht',
'watchTogether.failedToOpenCurrentPlayback' => 'Aktuelle Wiedergabe konnte nicht geöffnet werden',
+10 -6
View File
@@ -2296,9 +2296,6 @@ class Translations$profiles$en {
/// en: 'Active'
String get active => 'Active';
/// en: 'via ${name}'
String viaPlexAccount({required Object name}) => 'via ${name}';
/// en: 'Manage'
String get manage => 'Manage';
@@ -2392,6 +2389,12 @@ class Translations$profiles$en {
/// en: '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'
String get connectionDefault => 'Default';
@@ -6757,7 +6760,6 @@ extension on Translations {
'profiles.deleteThisProfileTitle' => 'Delete this profile?',
'profiles.deleteThisProfileMessage' => ({required Object displayName}) => 'Remove ${displayName}. Connections aren\'t affected.',
'profiles.active' => 'Active',
'profiles.viaPlexAccount' => ({required Object name}) => 'via ${name}',
'profiles.manage' => 'Manage',
'profiles.delete' => 'Delete',
'profiles.signOut' => 'Sign out',
@@ -6789,6 +6791,8 @@ extension on Translations {
'profiles.noConnectionsHint' => 'No connections — add one to use this profile.',
'profiles.noConnections' => 'No connections',
'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.connectionAs' => ({required Object displayName}) => 'as ${displayName}',
'profiles.makeDefault' => 'Make default',
@@ -7065,9 +7069,9 @@ extension on Translations {
'explore.stats.completed' => ({required Object n}) => '${n} completed',
'explore.stats.onHold' => ({required Object n}) => '${n} on hold',
'explore.stats.dropped' => ({required Object n}) => '${n} dropped',
'explore.season.winter' => 'Winter',
_ => null,
} ?? switch (path) {
'explore.season.winter' => 'Winter',
'explore.season.spring' => 'Spring',
'explore.season.summer' => 'Summer',
'explore.season.fall' => 'Fall',
@@ -7579,9 +7583,9 @@ extension on Translations {
'externalPlayer.playerCommand' => 'Command',
'externalPlayer.playerPackage' => 'Package Name',
'externalPlayer.playerUrlScheme' => 'URL Scheme',
'externalPlayer.off' => 'Off',
_ => null,
} ?? switch (path) {
'externalPlayer.off' => 'Off',
'externalPlayer.launchFailed' => 'Failed to open external player',
'externalPlayer.appNotInstalled' => ({required Object name}) => '${name} is not installed',
'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 noConnections => 'Sin conexiones';
@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 connectionAs({required Object displayName}) => 'como ${displayName}';
@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.noConnections' => 'Sin conexiones',
'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.connectionAs' => ({required Object displayName}) => 'como ${displayName}',
'profiles.makeDefault' => 'Establecer como predeterminada',
@@ -3213,10 +3217,10 @@ extension on TranslationsEs {
'watchTogether.failedToJoin' => 'Error al unirse a la sesión',
'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.reconnectingToHost' => 'Reconectando con el anfitrión...',
'watchTogether.currentPlayback' => 'Reproducción actual',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Reconectando con el anfitrión...',
'watchTogether.currentPlayback' => '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.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 noConnections => 'Aucune connexion';
@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 connectionAs({required Object displayName}) => 'en tant que ${displayName}';
@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.noConnections' => 'Aucune connexion',
'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.connectionAs' => ({required Object displayName}) => 'en tant que ${displayName}',
'profiles.makeDefault' => 'Définir par défaut',
@@ -3213,10 +3217,10 @@ extension on TranslationsFr {
'watchTogether.failedToJoin' => 'Échec de la connexion à la session',
'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.reconnectingToHost' => 'Reconnexion à l\'hôte...',
'watchTogether.currentPlayback' => 'Lecture en cours',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Reconnexion à l\'hôte...',
'watchTogether.currentPlayback' => 'Lecture en cours',
'watchTogether.joinCurrentPlayback' => 'Rejoindre la lecture en cours',
'watchTogether.joinCurrentPlaybackDescription' => 'Reprendre le contenu que lhôte regarde actuellement',
'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 noConnections => 'Nincsenek kapcsolatok';
@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 connectionAs({required Object displayName}) => 'mint ${displayName}';
@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.noConnections' => 'Nincsenek kapcsolatok',
'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.connectionAs' => ({required Object displayName}) => 'mint ${displayName}',
'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.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.reconnectingToHost' => 'Újracsatlakozás a házigazdához...',
'watchTogether.currentPlayback' => 'Jelenlegi lejátszás',
_ => null,
} ?? 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.joinCurrentPlaybackDescription' => 'Visszatérés ahhoz, amit a házigazda éppen néz',
'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 noConnections => 'Nessuna connessione';
@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 connectionAs({required Object displayName}) => 'come ${displayName}';
@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.noConnections' => 'Nessuna connessione',
'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.connectionAs' => ({required Object displayName}) => 'come ${displayName}',
'profiles.makeDefault' => 'Imposta come predefinita',
@@ -3213,10 +3217,10 @@ extension on TranslationsIt {
'watchTogether.failedToJoin' => 'Impossibile unirsi alla sessione',
'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.reconnectingToHost' => 'Riconnessione all\'host...',
'watchTogether.currentPlayback' => 'Riproduzione corrente',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Riconnessione all\'host...',
'watchTogether.currentPlayback' => 'Riproduzione corrente',
'watchTogether.joinCurrentPlayback' => 'Unisciti alla riproduzione corrente',
'watchTogether.joinCurrentPlaybackDescription' => 'Torna a ciò che l\'host sta guardando in questo momento',
'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 noConnections => '接続がありません';
@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 connectionAs({required Object displayName}) => '${displayName}として';
@override String get makeDefault => 'デフォルトに設定';
@@ -2824,6 +2826,8 @@ extension on TranslationsJa {
'profiles.noConnectionsHint' => '接続がありません — このプロフィールを使うには接続を追加してください。',
'profiles.noConnections' => '接続がありません',
'profiles.plexHomeAccount' => 'Plex Homeアカウント',
'profiles.plexAccountChip' => ({required Object account}) => 'Plexアカウント: ${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account}経由の${user}',
'profiles.connectionDefault' => 'デフォルト',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName}として',
'profiles.makeDefault' => 'デフォルトに設定',
@@ -3210,10 +3214,10 @@ extension on TranslationsJa {
'watchTogether.failedToJoin' => 'セッションへの参加に失敗しました',
'watchTogether.sessionCodeCopied' => 'セッションコードをクリップボードにコピーしました',
'watchTogether.relayUnreachable' => 'リレーサーバーに接続できません。ISPによるブロックのため「一緒に見る」を利用できない可能性があります。',
'watchTogether.reconnectingToHost' => 'ホストに再接続中…',
'watchTogether.currentPlayback' => '現在の再生',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'ホストに再接続中…',
'watchTogether.currentPlayback' => '現在の再生',
'watchTogether.joinCurrentPlayback' => '現在の再生に参加',
'watchTogether.joinCurrentPlaybackDescription' => 'ホストが現在視聴中のコンテンツに戻る',
'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 noConnections => 'Қосылымдар жоқ';
@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 connectionAs({required Object displayName}) => '${displayName} ретінде';
@override String get makeDefault => 'Әдепкі ету';
@@ -2842,6 +2844,8 @@ extension on TranslationsKk {
'profiles.noConnectionsHint' => 'Қосылымдар жоқ — бұл профильді пайдалану үшін қосылым қосыңыз.',
'profiles.noConnections' => 'Қосылымдар жоқ',
'profiles.plexHomeAccount' => 'Plex Home тіркелгісі',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex тіркелгісі: ${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} арқылы ${user}',
'profiles.connectionDefault' => 'Әдепкі',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName} ретінде',
'profiles.makeDefault' => 'Әдепкі ету',
@@ -3224,10 +3228,10 @@ extension on TranslationsKk {
'watchTogether.pasteFromClipboard' => 'Алмасу буферінен қою',
'watchTogether.pleaseEnterCode' => 'Сеанс кодын енгізіңіз',
'watchTogether.codeMustBe5Chars' => 'Сеанс коды 5 таңбадан тұруы керек',
'watchTogether.joinInstructions' => 'Ұйымдастырушының сеанс кодын енгізіңіз.',
'watchTogether.failedToCreate' => 'Сеансты жасау мүмкін болмады',
_ => null,
} ?? switch (path) {
'watchTogether.joinInstructions' => 'Ұйымдастырушының сеанс кодын енгізіңіз.',
'watchTogether.failedToCreate' => 'Сеансты жасау мүмкін болмады',
'watchTogether.failedToJoin' => 'Сеансқа қосылу мүмкін болмады',
'watchTogether.sessionCodeCopied' => 'Сеанс коды көшірілді',
'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 noConnections => '연결 없음';
@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 connectionAs({required Object displayName}) => '${displayName}(으)로';
@override String get makeDefault => '기본값으로 설정';
@@ -2824,6 +2826,8 @@ extension on TranslationsKo {
'profiles.noConnectionsHint' => '연결이 없습니다 — 이 프로필을 사용하려면 하나 추가하세요.',
'profiles.noConnections' => '연결 없음',
'profiles.plexHomeAccount' => 'Plex Home 계정',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex 계정: ${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} 계정의 ${user}',
'profiles.connectionDefault' => '기본값',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName}(으)로',
'profiles.makeDefault' => '기본값으로 설정',
@@ -3210,10 +3214,10 @@ extension on TranslationsKo {
'watchTogether.failedToJoin' => '세션 참여 실패',
'watchTogether.sessionCodeCopied' => '세션 코드가 클립보드에 복사되었습니다',
'watchTogether.relayUnreachable' => '릴레이 서버에 연결할 수 없습니다. ISP 차단으로 함께 보기를 사용하지 못할 수 있습니다.',
'watchTogether.reconnectingToHost' => '호스트에 재연결 중...',
'watchTogether.currentPlayback' => '현재 재생',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => '호스트에 재연결 중...',
'watchTogether.currentPlayback' => '현재 재생',
'watchTogether.joinCurrentPlayback' => '현재 재생 참여',
'watchTogether.joinCurrentPlaybackDescription' => '호스트가 현재 시청 중인 콘텐츠로 이동합니다',
'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 noConnections => 'Ingen tilkoblinger';
@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 connectionAs({required Object displayName}) => 'som ${displayName}';
@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.noConnections' => 'Ingen tilkoblinger',
'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.connectionAs' => ({required Object displayName}) => 'som ${displayName}',
'profiles.makeDefault' => 'Gjør til standard',
@@ -3213,10 +3217,10 @@ extension on TranslationsNb {
'watchTogether.failedToJoin' => 'Kunne ikke bli med i økt',
'watchTogether.sessionCodeCopied' => 'Øktkode kopiert til utklippstavle',
'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,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Kobler til verten på nytt...',
'watchTogether.currentPlayback' => 'Gjeldende avspilling',
'watchTogether.joinCurrentPlayback' => 'Bli med i gjeldende avspilling',
'watchTogether.joinCurrentPlaybackDescription' => 'Hopp tilbake til det verten ser på nå',
'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 noConnections => 'Geen verbindingen';
@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 connectionAs({required Object displayName}) => 'als ${displayName}';
@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.noConnections' => 'Geen verbindingen',
'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.connectionAs' => ({required Object displayName}) => 'als ${displayName}',
'profiles.makeDefault' => 'Als standaard instellen',
@@ -3213,10 +3217,10 @@ extension on TranslationsNl {
'watchTogether.failedToJoin' => 'Deelnemen aan sessie mislukt',
'watchTogether.sessionCodeCopied' => 'Sessiecode naar het klembord gekopieerd',
'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,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Opnieuw verbinden met host...',
'watchTogether.currentPlayback' => 'Wat nu wordt afgespeeld',
'watchTogether.joinCurrentPlayback' => 'Deelnemen aan huidige weergave',
'watchTogether.joinCurrentPlaybackDescription' => 'Ga terug naar wat de host nu kijkt',
'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 noConnections => 'Brak połączeń';
@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 connectionAs({required Object displayName}) => 'jako ${displayName}';
@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.noConnections' => 'Brak połączeń',
'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.connectionAs' => ({required Object displayName}) => 'jako ${displayName}',
'profiles.makeDefault' => 'Ustaw jako domyślne',
@@ -3219,10 +3223,10 @@ extension on TranslationsPl {
'watchTogether.failedToJoin' => 'Nie udało się dołączyć do sesji',
'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.reconnectingToHost' => 'Ponowne łączenie z gospodarzem...',
'watchTogether.currentPlayback' => 'Bieżące odtwarzanie',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Ponowne łączenie z gospodarzem...',
'watchTogether.currentPlayback' => 'Bieżące odtwarzanie',
'watchTogether.joinCurrentPlayback' => 'Dołącz do bieżącego odtwarzania',
'watchTogether.joinCurrentPlaybackDescription' => 'Wróć do treści oglądanej obecnie przez gospodarza',
'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 noConnections => 'Sem conexões';
@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 connectionAs({required Object displayName}) => 'como ${displayName}';
@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.noConnections' => 'Sem conexões',
'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.connectionAs' => ({required Object displayName}) => 'como ${displayName}',
'profiles.makeDefault' => 'Definir como padrão',
@@ -3213,10 +3217,10 @@ extension on TranslationsPt {
'watchTogether.failedToJoin' => 'Falha ao entrar na sessão',
'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.reconnectingToHost' => 'Reconectando ao anfitrião...',
'watchTogether.currentPlayback' => 'Reprodução atual',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Reconectando ao anfitrião...',
'watchTogether.currentPlayback' => 'Reprodução atual',
'watchTogether.joinCurrentPlayback' => 'Entrar na reprodução atual',
'watchTogether.joinCurrentPlaybackDescription' => 'Voltar ao conteúdo que o anfitrião está assistindo agora',
'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 noConnections => 'Нет соединений';
@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 connectionAs({required Object displayName}) => 'как ${displayName}';
@override String get makeDefault => 'Сделать по умолчанию';
@@ -2833,6 +2835,8 @@ extension on TranslationsRu {
'profiles.noConnectionsHint' => 'Нет соединений — добавьте одно, чтобы использовать этот профиль.',
'profiles.noConnections' => 'Нет соединений',
'profiles.plexHomeAccount' => 'Аккаунт Plex Home',
'profiles.plexAccountChip' => ({required Object account}) => 'Аккаунт Plex: ${account}',
'profiles.plexAccountUserChip' => ({required Object user, required Object account}) => '${user} через ${account}',
'profiles.connectionDefault' => 'По умолчанию',
'profiles.connectionAs' => ({required Object displayName}) => 'как ${displayName}',
'profiles.makeDefault' => 'Сделать по умолчанию',
@@ -3219,10 +3223,10 @@ extension on TranslationsRu {
'watchTogether.failedToJoin' => 'Не удалось присоединиться к сессии',
'watchTogether.sessionCodeCopied' => 'Код сессии скопирован в буфер обмена',
'watchTogether.relayUnreachable' => 'Сервер ретрансляции недоступен. Блокировка интернет-провайдером может помешать совместному просмотру.',
'watchTogether.reconnectingToHost' => 'Повторное подключение к организатору...',
'watchTogether.currentPlayback' => 'Текущее воспроизведение',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Повторное подключение к организатору...',
'watchTogether.currentPlayback' => 'Текущее воспроизведение',
'watchTogether.joinCurrentPlayback' => 'Присоединиться к текущему воспроизведению',
'watchTogether.joinCurrentPlaybackDescription' => 'Вернуться к материалу, который сейчас смотрит организатор',
'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 noConnections => 'Inga anslutningar';
@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 connectionAs({required Object displayName}) => 'som ${displayName}';
@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.noConnections' => 'Inga anslutningar',
'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.connectionAs' => ({required Object displayName}) => 'som ${displayName}',
'profiles.makeDefault' => 'Gör till standard',
@@ -3213,10 +3217,10 @@ extension on TranslationsSv {
'watchTogether.failedToJoin' => 'Det gick inte att gå med i sessionen',
'watchTogether.sessionCodeCopied' => 'Sessionskoden har kopierats till urklipp',
'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,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => 'Återansluter till värden...',
'watchTogether.currentPlayback' => 'Aktuell uppspelning',
'watchTogether.joinCurrentPlayback' => 'Gå med i aktuell uppspelning',
'watchTogether.joinCurrentPlaybackDescription' => 'Hoppa tillbaka till det värden tittar på just nu',
'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 noConnections => 'Bağlantı yok';
@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 connectionAs({required Object displayName}) => '${displayName} olarak';
@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.noConnections' => 'Bağlantı yok',
'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.connectionAs' => ({required Object displayName}) => '${displayName} olarak',
'profiles.makeDefault' => 'Varsayılan yap',
@@ -3224,10 +3228,10 @@ extension on TranslationsTr {
'watchTogether.pasteFromClipboard' => 'Panodan yapıştır',
'watchTogether.pleaseEnterCode' => 'Lütfen bir oturum kodu girin',
'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,
} ?? switch (path) {
'watchTogether.joinInstructions' => 'Katılmak için kurucunun oturum kodunu girin.',
'watchTogether.failedToCreate' => 'Oturum oluşturulamadı',
'watchTogether.failedToJoin' => 'Oturuma katılınamadı',
'watchTogether.sessionCodeCopied' => 'Oturum kodu panoya kopyalandı',
'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 noConnections => 'Ulanishlar yoʻq';
@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 connectionAs({required Object displayName}) => '${displayName} sifatida';
@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.noConnections' => 'Ulanishlar yoʻq',
'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.connectionAs' => ({required Object displayName}) => '${displayName} sifatida',
'profiles.makeDefault' => 'Standart qilish',
@@ -3224,10 +3228,10 @@ extension on TranslationsUz {
'watchTogether.pasteFromClipboard' => 'Xotiradan joylash',
'watchTogether.pleaseEnterCode' => 'Seans kodini kiriting',
'watchTogether.codeMustBe5Chars' => 'Seans kodi 5 ta belgidan iborat boʻlishi kerak',
'watchTogether.joinInstructions' => 'Tashkilotchining seans kodini kiriting.',
'watchTogether.failedToCreate' => 'Seansni yaratib boʻlmadi',
_ => null,
} ?? switch (path) {
'watchTogether.joinInstructions' => 'Tashkilotchining seans kodini kiriting.',
'watchTogether.failedToCreate' => 'Seansni yaratib boʻlmadi',
'watchTogether.failedToJoin' => 'Seansga qoʻshilib boʻlmadi',
'watchTogether.sessionCodeCopied' => 'Seans kodi nusxalandi',
'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 noConnections => '没有连接';
@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 connectionAs({required Object displayName}) => '${displayName} 身份';
@override String get makeDefault => '设为默认';
@@ -2824,6 +2826,8 @@ extension on TranslationsZh {
'profiles.noConnectionsHint' => '没有连接 — 请添加连接以使用此用户资料。',
'profiles.noConnections' => '没有连接',
'profiles.plexHomeAccount' => 'Plex Home 账户',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex 账户:${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} 账户下的 ${user}',
'profiles.connectionDefault' => '默认',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName} 身份',
'profiles.makeDefault' => '设为默认',
@@ -3210,10 +3214,10 @@ extension on TranslationsZh {
'watchTogether.failedToJoin' => '加入会话失败',
'watchTogether.sessionCodeCopied' => '会话代码已复制到剪贴板',
'watchTogether.relayUnreachable' => '无法访问中继服务器。网络运营商的屏蔽可能导致“一起看”不可用。',
'watchTogether.reconnectingToHost' => '正在重新连接到主持人…',
'watchTogether.currentPlayback' => '当前播放',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => '正在重新连接到主持人…',
'watchTogether.currentPlayback' => '当前播放',
'watchTogether.joinCurrentPlayback' => '加入当前播放',
'watchTogether.joinCurrentPlaybackDescription' => '加入主持人当前正在观看的内容',
'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 noConnections => '無連線資訊';
@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 connectionAs({required Object displayName}) => '${displayName} 身分';
@override String get makeDefault => '設為預設值';
@@ -2825,6 +2827,8 @@ extension on TranslationsZhHant {
'profiles.noConnectionsHint' => '無連線 — 請新增一個連線以啟用此設定檔。',
'profiles.noConnections' => '無連線資訊',
'profiles.plexHomeAccount' => 'Plex Home 帳戶',
'profiles.plexAccountChip' => ({required Object account}) => 'Plex 帳戶:${account}',
'profiles.plexAccountUserChip' => ({required Object account, required Object user}) => '${account} 帳戶下的 ${user}',
'profiles.connectionDefault' => '預設',
'profiles.connectionAs' => ({required Object displayName}) => '${displayName} 身分',
'profiles.makeDefault' => '設為預設值',
@@ -3211,10 +3215,10 @@ extension on TranslationsZhHant {
'watchTogether.failedToJoin' => '加入工作階段失敗',
'watchTogether.sessionCodeCopied' => '工作階段代碼已複製到剪貼簿',
'watchTogether.relayUnreachable' => '無法連線至中繼伺服器。ISP 封鎖可能會導致「一起看」無法使用。',
'watchTogether.reconnectingToHost' => '正在重新連線至主持人…',
'watchTogether.currentPlayback' => '目前播放內容',
_ => null,
} ?? switch (path) {
'watchTogether.reconnectingToHost' => '正在重新連線至主持人…',
'watchTogether.currentPlayback' => '目前播放內容',
'watchTogether.joinCurrentPlayback' => '加入目前播放點',
'watchTogether.joinCurrentPlaybackDescription' => '同步至主持人目前的觀看進度',
'watchTogether.failedToOpenCurrentPlayback' => '無法開啟目前播放點',
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Ta bort denna profil?",
"deleteThisProfileMessage": "Ta bort ${displayName}. Anslutningar påverkas inte.",
"active": "Aktiv",
"viaPlexAccount": "",
"manage": "Hantera",
"delete": "Ta bort",
"signOut": "Logga ut",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Inga anslutningar — lägg till en för att använda den här profilen.",
"noConnections": "Inga anslutningar",
"plexHomeAccount": "Plex Home-konto",
"plexAccountChip": "Plex-konto: ${account}",
"plexAccountUserChip": "${user} via ${account}",
"connectionDefault": "Standard",
"connectionAs": "som ${displayName}",
"makeDefault": "Gör till standard",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Bu profil silinsin mi?",
"deleteThisProfileMessage": "${displayName} kişisi kaldırılacak. Bağlantılar etkilenmez.",
"active": "Aktif",
"viaPlexAccount": "",
"manage": "Yönet",
"delete": "Sil",
"signOut": "Çıkış Yap",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Bağlantı yok — bu profili kullanmak için bir tane ekleyin.",
"noConnections": "Bağlantı yok",
"plexHomeAccount": "Plex Ev hesabı",
"plexAccountChip": "Plex hesabı: ${account}",
"plexAccountUserChip": "${account} hesabı üzerinden ${user}",
"connectionDefault": "Varsayılan",
"connectionAs": "${displayName} olarak",
"makeDefault": "Varsayılan yap",
+2 -1
View File
@@ -763,7 +763,6 @@
"deleteThisProfileTitle": "Ushbu profil oʻchirilsinmi?",
"deleteThisProfileMessage": "${displayName} oʻchiriladi. Ulanishlarga taʼsir qilmaydi.",
"active": "Faol",
"viaPlexAccount": "",
"manage": "Boshqarish",
"delete": "Oʻchirish",
"signOut": "Chiqish",
@@ -795,6 +794,8 @@
"noConnectionsHint": "Ulanishlar yoʻq — ushbu profildan foydalanish uchun ulanish qoʻshing.",
"noConnections": "Ulanishlar yoʻq",
"plexHomeAccount": "Plex Home hisobi",
"plexAccountChip": "Plex hisobi: ${account}",
"plexAccountUserChip": "${account} hisobi orqali ${user}",
"connectionDefault": "Standart",
"connectionAs": "${displayName} sifatida",
"makeDefault": "Standart qilish",
+2 -1
View File
@@ -762,7 +762,6 @@
"deleteThisProfileTitle": "刪除此使用者設定檔?",
"deleteThisProfileMessage": "將移除 ${displayName}。連線資訊將不受影響。",
"active": "使用中",
"viaPlexAccount": "",
"manage": "管理",
"delete": "刪除",
"signOut": "登出",
@@ -794,6 +793,8 @@
"noConnectionsHint": "無連線 — 請新增一個連線以啟用此設定檔。",
"noConnections": "無連線資訊",
"plexHomeAccount": "Plex Home 帳戶",
"plexAccountChip": "Plex 帳戶:${account}",
"plexAccountUserChip": "${account} 帳戶下的 ${user}",
"connectionDefault": "預設",
"connectionAs": "以 ${displayName} 身分",
"makeDefault": "設為預設值",
+2 -1
View File
@@ -762,7 +762,6 @@
"deleteThisProfileTitle": "删除此用户资料?",
"deleteThisProfileMessage": "移除 ${displayName}。连接不会受影响。",
"active": "当前使用",
"viaPlexAccount": "",
"manage": "管理",
"delete": "删除",
"signOut": "退出登录",
@@ -794,6 +793,8 @@
"noConnectionsHint": "没有连接 — 请添加连接以使用此用户资料。",
"noConnections": "没有连接",
"plexHomeAccount": "Plex Home 账户",
"plexAccountChip": "Plex 账户:${account}",
"plexAccountUserChip": "${account} 账户下的 ${user}",
"connectionDefault": "默认",
"connectionAs": "以 ${displayName} 身份",
"makeDefault": "设为默认",
+9
View File
@@ -29,11 +29,18 @@ class ProfilesView {
/// Picture URL per profile id; null means render initials. See [resolveProfileAvatarUrls].
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({
required this.profiles,
required this.connectionsByProfile,
required this.connectionsById,
required this.avatarUrlByProfile,
required this.plexHomeByConnectionId,
});
static const empty = ProfilesView(
@@ -41,6 +48,7 @@ class ProfilesView {
connectionsByProfile: {},
connectionsById: {},
avatarUrlByProfile: {},
plexHomeByConnectionId: {},
);
}
@@ -108,6 +116,7 @@ ProfilesView _build({
connectionsById: connectionsById,
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) {
final chips = <_ChipData>[];
// 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) {
final parentId = profile.parentConnectionId;
if (parentId != null) {
final conn = view.connectionsById[parentId];
if (conn != null) {
chips.add(
_ChipData(
backend: conn.backend,
label: conn is PlexAccountConnection
? t.profiles.viaPlexAccount(name: conn.accountLabel)
: conn.displayLabel,
),
);
}
if (conn != null) chips.add(_chipFor(conn, user: profile.displayName));
}
}
final pcs = visibleProfileConnections(
@@ -350,11 +343,47 @@ class _ProfileSwitchScreenState extends State<ProfileSwitchScreen> with MountedS
);
for (final pc in pcs) {
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;
}
/// 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 {
await Navigator.of(context).push<bool>(MaterialPageRoute(builder: (_) => const AddLocalProfileScreen()));
}
@@ -566,7 +595,12 @@ class _ConnectionChips extends StatelessWidget {
children: [
BackendBadge(backend: c.backend, size: 12),
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),
),
],
),
),